Re: [Linux-cachefs] [PATCH] fs/cachefiles: Drop superfluous readpages aops NULL check

From: David Wysochanski
Date: Wed Oct 14 2020 - 09:49:19 EST


On Thu, Aug 27, 2020 at 11:10 AM Takashi Iwai <tiwai@xxxxxxx> wrote:
>
> After the recent actions to convert readpages aops to readahead, the
> NULL checks of readpages aops in cachefiles_read_or_alloc_page() may
> hit falsely. More badly, it's an ASSERT() call, and this panics.
>
> Drop the superfluous NULL checks for fixing this regression.
>
> BugLink: https://bugzilla.kernel.org/show_bug.cgi?id=208883
> BugLink: https://bugzilla.opensuse.org/show_bug.cgi?id=1175245
> Cc: <stable@xxxxxxxxxxxxxxx> # v5.8
> Signed-off-by: Takashi Iwai <tiwai@xxxxxxx>
> ---
> fs/cachefiles/rdwr.c | 2 --
> 1 file changed, 2 deletions(-)
>
> diff --git a/fs/cachefiles/rdwr.c b/fs/cachefiles/rdwr.c
> index 3080cda9e824..5b4cee71fa32 100644
> --- a/fs/cachefiles/rdwr.c
> +++ b/fs/cachefiles/rdwr.c
> @@ -412,7 +412,6 @@ int cachefiles_read_or_alloc_page(struct fscache_retrieval *op,
>
> inode = d_backing_inode(object->backer);
> ASSERT(S_ISREG(inode->i_mode));
> - ASSERT(inode->i_mapping->a_ops->readpages);
>
> /* calculate the shift required to use bmap */
> shift = PAGE_SHIFT - inode->i_sb->s_blocksize_bits;
> @@ -712,7 +711,6 @@ int cachefiles_read_or_alloc_pages(struct fscache_retrieval *op,
>
> inode = d_backing_inode(object->backer);
> ASSERT(S_ISREG(inode->i_mode));
> - ASSERT(inode->i_mapping->a_ops->readpages);
>
> /* calculate the shift required to use bmap */
> shift = PAGE_SHIFT - inode->i_sb->s_blocksize_bits;
> --
> 2.16.4
>
> --
> Linux-cachefs mailing list
> Linux-cachefs@xxxxxxxxxx
> https://www.redhat.com/mailman/listinfo/linux-cachefs
>

Agree this should go in as fscache (I am testing with NFS) becomes
unusable without it after 5.8.

It may have flown under the radar due to the in-progress FS-Cache rewrite.