summaryrefslogtreecommitdiff
path: root/fs/btrfs/transaction.c
diff options
context:
space:
mode:
authorAnand Jain <anand.jain@oracle.com>2021-11-09 12:51:58 +0300
committerDavid Sterba <dsterba@suse.com>2022-01-03 17:09:44 +0300
commit849eae5e57a703105aa6cdce0d860ab95f44d81c (patch)
tree326390a0588a30974bf3717fe22cf6a732eaacf1 /fs/btrfs/transaction.c
parentfd8808097ad23ad8ae79f002b7b2a62e50f2c7eb (diff)
downloadlinux-849eae5e57a703105aa6cdce0d860ab95f44d81c.tar.xz
btrfs: consolidate device_list_mutex in prepare_sprout to its parent
btrfs_prepare_sprout() splices seed devices into its own struct fs_devices, so that its parent function btrfs_init_new_device() can add the new sprout device to fs_info->fs_devices. Both btrfs_prepare_sprout() and btrfs_init_new_device() need device_list_mutex. But they are holding it separately, thus create a small race window. Close it and hold device_list_mutex across both functions btrfs_init_new_device() and btrfs_prepare_sprout(). Split btrfs_prepare_sprout() into btrfs_init_sprout() and btrfs_setup_sprout(). This split is essential because device_list_mutex must not be held for allocations in btrfs_init_sprout() but must be held for btrfs_setup_sprout(). So now a common device_list_mutex can be used between btrfs_init_new_device() and btrfs_setup_sprout(). Reviewed-by: Josef Bacik <josef@toxicpanda.com> Signed-off-by: Anand Jain <anand.jain@oracle.com> Reviewed-by: David Sterba <dsterba@suse.com> Signed-off-by: David Sterba <dsterba@suse.com>
Diffstat (limited to 'fs/btrfs/transaction.c')
0 files changed, 0 insertions, 0 deletions