Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

Btrfs: Add properly locking around add_root_to_dirty_list

add_root_to_dirty_list happens once at the very beginning of the
transaction, but it is still racey.

Signed-off-by: Chris Mason <chris.mason@oracle.com>

+2
+2
fs/btrfs/ctree.c
··· 220 220 */ 221 221 static void add_root_to_dirty_list(struct btrfs_root *root) 222 222 { 223 + spin_lock(&root->fs_info->trans_lock); 223 224 if (root->track_dirty && list_empty(&root->dirty_list)) { 224 225 list_add(&root->dirty_list, 225 226 &root->fs_info->dirty_cowonly_roots); 226 227 } 228 + spin_unlock(&root->fs_info->trans_lock); 227 229 } 228 230 229 231 /*