[PATCH v14 08/10] erofs: support unencoded inodes for page cache share

Hongbo Li lihongbo22 at huawei.com
Thu Jan 15 12:36:02 AEDT 2026


Hi,Xiang

On 2026/1/14 22:51, Gao Xiang wrote:
> 
> 
> On 2026/1/9 18:28, Hongbo Li wrote:
>> This patch adds inode page cache sharing functionality for unencoded
>> files.
>>
>> I conducted experiments in the container environment. Below is the

...
>>               iomap->inline_data = ptr;
>> @@ -383,11 +385,16 @@ static int erofs_read_folio(struct file *file, 
>> struct folio *folio)
>>           .ops        = &iomap_bio_read_ops,
>>           .cur_folio    = folio,
>>       };
>> -    struct erofs_iomap_iter_ctx iter_ctx = {};
>> +    bool need_iput;
>> +    struct erofs_iomap_iter_ctx iter_ctx = {
>> +        .realinode = erofs_real_inode(folio_inode(folio), &need_iput),
>> +    };
>> -    trace_erofs_read_folio(folio, true);
>> +    trace_erofs_read_folio(iter_ctx.realinode, folio, true);
>>       iomap_read_folio(&erofs_iomap_ops, &read_ctx, &iter_ctx);
>> +    if (need_iput)
>> +        iput(iter_ctx.realinode);
>>       return 0;
>>   }
>> @@ -397,12 +404,17 @@ static void erofs_readahead(struct 
>> readahead_control *rac)
>>           .ops        = &iomap_bio_read_ops,
>>           .rac        = rac,
>>       };
>> -    struct erofs_iomap_iter_ctx iter_ctx = {};
>> +    bool need_iput;
>> +    struct erofs_iomap_iter_ctx iter_ctx = {
>> +        .realinode = erofs_real_inode(rac->mapping->host, &need_iput),
>> +    };
>> -    trace_erofs_readahead(rac->mapping->host, readahead_index(rac),
>> +    trace_erofs_readahead(iter_ctx.realinode, readahead_index(rac),
>>                       readahead_count(rac), true);
> 
> Is it possible to add a commit to update the tracepoints
> to add the new realinode first?

Yeah, so should we put the update on trace_erofs_read_folio and 
trace_erofs_readahead in a single patch after "[PATCH v14 03/10] fs: 
Export alloc_empty_backing_file"?

  Since the first two patches in this series has merged in vfs tree 
(thanks Christian), should we reorder the left patches?

Thanks,
Hongbo


> 
> Also please fix the indentation in that commit together.
> 
>>       iomap_readahead(&erofs_iomap_ops, &read_ctx, &iter_ctx);
>> +    if (need_iput)
>> +        iput(iter_ctx.realinode);
>>   }
>>   static sector_t erofs_bmap(struct address_space *mapping, sector_t 
>> block)
>> @@ -423,7 +435,9 @@ static ssize_t erofs_file_read_iter(struct kiocb 

...
>>   }
>>   const struct address_space_operations erofs_fileio_aops = {
>> diff --git a/fs/erofs/inode.c b/fs/erofs/inode.c
>> index bce98c845a18..52179b706b5b 100644
>> --- a/fs/erofs/inode.c
>> +++ b/fs/erofs/inode.c
>> @@ -215,6 +215,8 @@ static int erofs_fill_inode(struct inode *inode)
>>       case S_IFREG:
>>           inode->i_op = &erofs_generic_iops;
>>           inode->i_fop = &erofs_file_fops;
>> +        if (erofs_ishare_fill_inode(inode))
>> +            inode->i_fop = &erofs_ishare_fops;
> 
>          inode->i_fop = erofs_ishare_fill_inode(inode) ?
>              &erofs_ishare_fops : &erofs_file_fops;

Ok, will update.

> 
> Otherwise it looks good to me.
> 
> Thanks,
> Gao Xiang


More information about the Linux-erofs mailing list