OSDN Git Service

btrfs: Don't use objectid_mutex during mount
authorNikolay Borisov <nborisov@suse.com>
Tue, 15 Oct 2019 15:42:21 +0000 (18:42 +0300)
committerDavid Sterba <dsterba@suse.com>
Mon, 18 Nov 2019 16:51:47 +0000 (17:51 +0100)
Since the filesystem is not well formed and no trees are loaded it's
pointless holding the objectid_mutex. Just remove its usage.

Signed-off-by: Nikolay Borisov <nborisov@suse.com>
Reviewed-by: David Sterba <dsterba@suse.com>
Signed-off-by: David Sterba <dsterba@suse.com>
fs/btrfs/disk-io.c

index 1b1f051..b23c9fb 100644 (file)
@@ -2666,17 +2666,18 @@ int __cold init_tree_roots(struct btrfs_fs_info *fs_info)
                tree_root->commit_root = btrfs_root_node(tree_root);
                btrfs_set_root_refs(&tree_root->root_item, 1);
 
-               mutex_lock(&tree_root->objectid_mutex);
+               /*
+                * No need to hold btrfs_root::objectid_mutex since the fs
+                * hasn't been fully initialised and we are the only user
+                */
                ret = btrfs_find_highest_objectid(tree_root,
                                                &tree_root->highest_objectid);
                if (ret < 0) {
-                       mutex_unlock(&tree_root->objectid_mutex);
                        handle_error = true;
                        continue;
                }
 
                ASSERT(tree_root->highest_objectid <= BTRFS_LAST_FREE_OBJECTID);
-               mutex_unlock(&tree_root->objectid_mutex);
 
                ret = btrfs_read_roots(fs_info);
                if (ret < 0) {