Re: [PATCH] erofs: support SEEK_HOLE/SEEK_DATA in inode_share mode

Gao Xiang <[email protected]>
Newsgroups org.ozlabs.lists.linux-erofs,org.kernel.vger.linux-kernel
Message-ID <[email protected]>
Hi Jingbo,

On Tue, Aug 18, 2026 at 07:37:13PM +0800, Jingbo Xu wrote:
> When inode_share is enabled, erofs_ishare_fops.llseek falls back to
> generic_file_llseek, which treats the whole file as data and always
> returns i_size for SEEK_HOLE, hiding real holes in sparse files.
> 
> Switch it to erofs_file_llseek instead.  For user files f_mapping->host
> is always the real erofs inode, so SEEK_HOLE/SEEK_DATA resolve the
> per-file on-disk layout via iomap_seek_hole()/iomap_seek_data().
> 
> Reported-by: Yuanhe Shu <[email protected]>
> Signed-off-by: Jingbo Xu <[email protected]>
> ---
>  fs/erofs/data.c     | 2 +-
>  fs/erofs/internal.h | 2 ++
>  fs/erofs/ishare.c   | 2 +-
>  3 files changed, 4 insertions(+), 2 deletions(-)
> 
> diff --git a/fs/erofs/data.c b/fs/erofs/data.c
> index d2f01245ee79..09d668deb86d 100644
> --- a/fs/erofs/data.c
> +++ b/fs/erofs/data.c
> @@ -509,7 +509,7 @@ static int erofs_file_mmap_prepare(struct vm_area_desc *desc)
>  #define erofs_file_mmap_prepare	generic_file_readonly_mmap_prepare
>  #endif
>  
> -static loff_t erofs_file_llseek(struct file *file, loff_t offset, int whence)
> +loff_t erofs_file_llseek(struct file *file, loff_t offset, int whence)
>  {
>  	struct inode *inode = file->f_mapping->host;
>  	const struct iomap_ops *ops = &erofs_iomap_ops;
> diff --git a/fs/erofs/internal.h b/fs/erofs/internal.h
> index 57bd21859c65..3263c11d714c 100644
> --- a/fs/erofs/internal.h
> +++ b/fs/erofs/internal.h
> @@ -528,6 +528,8 @@ static inline struct inode *erofs_real_inode(struct inode *inode, bool *need_ipu
>  }
>  #endif
>  
> +loff_t erofs_file_llseek(struct file *file, loff_t offset, int whence);
> +

Could you move this line below erofs_fiemap()? I hope all declarations
in data.c are closer.

Otherwise it looks good to me,
Reviewed-by: Gao Xiang <[email protected]>

Also could you help write a test for this functionality too?

Thanks,
Gao Xiang
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.