]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
btrfs: simplify error return logic when getting folio at prepare_one_folio()
authorFilipe Manana <fdmanana@suse.com>
Sat, 10 May 2025 13:08:39 +0000 (14:08 +0100)
committerDavid Sterba <dsterba@suse.com>
Thu, 15 May 2025 12:30:57 +0000 (14:30 +0200)
There's no need to have special logic to return -EAGAIN in case the call
to __filemap_get_folio() fails, because when FGP_NOWAIT is passed to
__filemap_get_folio() it returns ERR_PTR(-EAGAIN) if it needs to do
something that would imply blocking.

The reason we have this logic is from the days before we migrated to the
folio interface, when we called pagecache_get_page() which would return
NULL instead of an error pointer.

So remove this special casing and always return the error that the call
to __filemap_get_folio() returned.

Reviewed-by: Johannes Thumshirn <johannes.thumshirn@wdc.com>
Reviewed-by: Qu Wenruo <wqu@suse.com>
Signed-off-by: Filipe Manana <fdmanana@suse.com>
Reviewed-by: David Sterba <dsterba@suse.com>
Signed-off-by: David Sterba <dsterba@suse.com>
fs/btrfs/file.c

index c1b350fd3bb78ab9761e3dad389d05cb5d11d619..660a73b6af90236edae4b005aee3b3e58673b817 100644 (file)
@@ -866,13 +866,9 @@ static noinline int prepare_one_folio(struct inode *inode, struct folio **folio_
 
 again:
        folio = __filemap_get_folio(inode->i_mapping, index, fgp_flags, mask);
-       if (IS_ERR(folio)) {
-               if (nowait)
-                       ret = -EAGAIN;
-               else
-                       ret = PTR_ERR(folio);
-               return ret;
-       }
+       if (IS_ERR(folio))
+               return PTR_ERR(folio);
+
        ret = set_folio_extent_mapped(folio);
        if (ret < 0) {
                folio_unlock(folio);