OSDN Git Service

btrfs: allocate btrfs_io_context without GFP_NOFAIL
authorLi zeming <zeming@nfschina.com>
Wed, 26 Oct 2022 01:36:11 +0000 (09:36 +0800)
committerDavid Sterba <dsterba@suse.com>
Mon, 5 Dec 2022 17:00:57 +0000 (18:00 +0100)
The __GFP_NOFAIL flag could loop indefinitely when allocation memory in
alloc_btrfs_io_context. The callers starting from __btrfs_map_block
already handle errors so it's safe to drop the flag.

Signed-off-by: Li zeming <zeming@nfschina.com>
Reviewed-by: David Sterba <dsterba@suse.com>
Signed-off-by: David Sterba <dsterba@suse.com>
fs/btrfs/volumes.c

index 2d0950a..e51fd5f 100644 (file)
@@ -5899,7 +5899,10 @@ static struct btrfs_io_context *alloc_btrfs_io_context(struct btrfs_fs_info *fs_
                 * and the stripes.
                 */
                sizeof(u64) * (total_stripes),
-               GFP_NOFS|__GFP_NOFAIL);
+               GFP_NOFS);
+
+       if (!bioc)
+               return NULL;
 
        refcount_set(&bioc->refs, 1);