Commit b5510282 authored by Boris Burkov's avatar Boris Burkov Committed by Andrew Morton
Browse files

btrfs: set AS_KERNEL_FILE on the btree_inode

extent_buffers are global and shared so their pages should not belong to
any particular cgroup (currently whichever cgroups happens to allocate the
extent_buffer).

Btrfs tree operations should not arbitrarily block on cgroup reclaim or
have the shared extent_buffer pages on a cgroup's reclaim lists.

Link: https://lkml.kernel.org/r/2ee99832619a3fdfe80bf4dc9760278662d2d746.1755812945.git.boris@bur.io


Signed-off-by: default avatarBoris Burkov <boris@bur.io>
Acked-by: default avatarShakeel Butt <shakeel.butt@linux.dev>
Tested-by: default avatar <syzbot@syzkaller.appspotmail.com>
Cc: Johannes Weiner <hannes@cmpxchg.org>
Cc: Matthew Wilcox (Oracle) <willy@infradead.org>
Cc: Michal Hocko <mhocko@kernel.org>
Cc: Muchun Song <muchun.song@linux.dev>
Cc: Qu Wenruo <wqu@suse.com>
Cc: Roman Gushchin <roman.gushchin@linux.dev>
Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
parent e3a9ac4e
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -1930,6 +1930,7 @@ static int btrfs_init_btree_inode(struct super_block *sb)
	BTRFS_I(inode)->root = btrfs_grab_root(fs_info->tree_root);
	set_bit(BTRFS_INODE_DUMMY, &BTRFS_I(inode)->runtime_flags);
	__insert_inode_hash(inode, hash);
	set_bit(AS_KERNEL_FILE, &inode->i_mapping->flags);
	fs_info->btree_inode = inode;

	return 0;