Re: [PATCH] erofs: support SEEK_HOLE/SEEK_DATA in inode_share mode
From: Jingbo Xu
Date: Thu Aug 20 2026 - 02:18:28 EST
On 8/20/26 11:10 AM, Zhan Xusheng wrote:
> On Tue, 18 Aug 2026 19:37:13 +0800, Jingbo Xu wrote:
>> - .llseek = generic_file_llseek,
>> + .llseek = erofs_file_llseek,
>
> No objection to the change. While in that table, .splice_read is the entry
> left that touches the page cache without going through ->private_data:
>
> .read_iter kiocb_clone() onto private_data, then filemap_read()
> .mmap vma_set_file(vma, realfile)
> .fadvise vfs_fadvise(file->private_data, ...)
> .splice_read filemap_splice_read
>
> filemap_splice_read() does init_sync_kiocb(&iocb, in), and
> filemap_get_pages() then takes iocb->ki_filp->f_mapping (mm/filemap.c:2686),
> so it works on the user file's mapping, which after your patch is confirmed
> to be the real inode's. erofs_fill_inode() sets that mapping's a_ops
> unconditionally, so the data splice() and sendfile() return is correct, but
> they populate the per-file page cache from disk rather than the shared one
> read() and mmap() use, caching the same content twice.
Right. I think that would be another patch to fix that.
--
Thanks,
Jingbo