[Devel] [PATCH RH7] ext4: Fix fiemap() with FIEMAP_FLAG_CACHE flag
Vasily Averin
vvs at virtuozzo.com
Wed Aug 12 09:09:23 MSK 2020
Kirill,
do you have bugID for this problem?
Thank you,
Vasily Averin
On 8/11/20 5:02 PM, Kirill Tkhai wrote:
> This flag says to cache extents in extent tree before iterations over them,
> but the combination of these two actions does not work.
>
> ext4_ext_precache() populates cache, but extent iteration can't occur,
> since fiemap_check_flags() does not know this flag.
>
> So, the result of this flag is: 1)cache is populated, 2)-EBADR is returned
> instead of extents array. This looks like a BUG in mainstream, which was
> blindly fixed in commit bb5835edcdf8bf7 "ext4: add new ioctl EXT4_IOC_GET_ES_CACHE".
>
> This patch makes the flag to work as expected.
>
> Signed-off-by: Kirill Tkhai <ktkhai at virtuozzo.com>
> ---
> fs/ext4/extents.c | 1 +
> 1 file changed, 1 insertion(+)
>
> diff --git a/fs/ext4/extents.c b/fs/ext4/extents.c
> index 8d3e509f39b9..74a283d3ce36 100644
> --- a/fs/ext4/extents.c
> +++ b/fs/ext4/extents.c
> @@ -5250,6 +5250,7 @@ int ext4_fiemap(struct inode *inode, struct fiemap_extent_info *fieinfo,
> error = ext4_ext_precache(inode);
> if (error)
> return error;
> + fieinfo->fi_flags &= ~FIEMAP_FLAG_CACHE;
> }
>
> /* fallback to generic here if not in extents fmt */
>
>
More information about the Devel
mailing list