Commit 879b2221 authored by Filipe Manana's avatar Filipe Manana Committed by David Sterba
Browse files

btrfs: switch GFP_ATOMIC to GFP_NOFS when fixing up low keys



When fixing up the first key of each node above the current level, at
fixup_low_keys(), we are doing a GFP_ATOMIC allocation for inserting an
operation record for the tree mod log. However we can do just fine with
GFP_NOFS nowadays. The need for GFP_ATOMIC was for the old days when we
had custom locks with spinning behaviour for extent buffers and we were
in spinning mode while at fixup_low_keys(). Now we use rw semaphores for
extent buffer locks, so we can safely use GFP_NOFS.

Signed-off-by: default avatarFilipe Manana <fdmanana@suse.com>
Reviewed-by: default avatarDavid Sterba <dsterba@suse.com>
Signed-off-by: default avatarDavid Sterba <dsterba@suse.com>
parent 81531225
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -2418,7 +2418,7 @@ static void fixup_low_keys(struct btrfs_path *path,
			break;
		t = path->nodes[i];
		ret = btrfs_tree_mod_log_insert_key(t, tslot,
				BTRFS_MOD_LOG_KEY_REPLACE, GFP_ATOMIC);
				BTRFS_MOD_LOG_KEY_REPLACE, GFP_NOFS);
		BUG_ON(ret < 0);
		btrfs_set_node_key(t, key, tslot);
		btrfs_mark_buffer_dirty(path->nodes[i]);