aboutsummaryrefslogtreecommitdiffstats
path: root/fs/btrfs/disk-io.c
diff options
context:
space:
mode:
authorChris Mason <clm@fb.com>2016-01-19 21:21:30 -0500
committerChris Mason <clm@fb.com>2016-01-19 21:21:30 -0500
commit326f784281fbbdcd91bb401b2a3e32132c0f5c72 (patch)
treeebee8e2cf51dd901d8c31b88e1a93b1655e6abf4 /fs/btrfs/disk-io.c
parentacc308556c812485462b6b43843c3f64530dd843 (diff)
parent546bed631203344611f42b2af1d224d2eedb4e6b (diff)
Merge branch 'misc-for-4.5' of git://git.kernel.org/pub/scm/linux/kernel/git/kdave/linux into for-linus-4.5
Diffstat (limited to 'fs/btrfs/disk-io.c')
-rw-r--r--fs/btrfs/disk-io.c27
1 files changed, 27 insertions, 0 deletions
diff --git a/fs/btrfs/disk-io.c b/fs/btrfs/disk-io.c
index c67c129fe99a..64f02c3d0dd0 100644
--- a/fs/btrfs/disk-io.c
+++ b/fs/btrfs/disk-io.c
@@ -1583,8 +1583,23 @@ int btrfs_init_fs_root(struct btrfs_root *root)
1583 ret = get_anon_bdev(&root->anon_dev); 1583 ret = get_anon_bdev(&root->anon_dev);
1584 if (ret) 1584 if (ret)
1585 goto free_writers; 1585 goto free_writers;
1586
1587 mutex_lock(&root->objectid_mutex);
1588 ret = btrfs_find_highest_objectid(root,
1589 &root->highest_objectid);
1590 if (ret) {
1591 mutex_unlock(&root->objectid_mutex);
1592 goto free_root_dev;
1593 }
1594
1595 ASSERT(root->highest_objectid <= BTRFS_LAST_FREE_OBJECTID);
1596
1597 mutex_unlock(&root->objectid_mutex);
1598
1586 return 0; 1599 return 0;
1587 1600
1601free_root_dev:
1602 free_anon_bdev(root->anon_dev);
1588free_writers: 1603free_writers:
1589 btrfs_free_subvolume_writers(root->subv_writers); 1604 btrfs_free_subvolume_writers(root->subv_writers);
1590fail: 1605fail:
@@ -2915,6 +2930,18 @@ retry_root_backup:
2915 tree_root->commit_root = btrfs_root_node(tree_root); 2930 tree_root->commit_root = btrfs_root_node(tree_root);
2916 btrfs_set_root_refs(&tree_root->root_item, 1); 2931 btrfs_set_root_refs(&tree_root->root_item, 1);
2917 2932
2933 mutex_lock(&tree_root->objectid_mutex);
2934 ret = btrfs_find_highest_objectid(tree_root,
2935 &tree_root->highest_objectid);
2936 if (ret) {
2937 mutex_unlock(&tree_root->objectid_mutex);
2938 goto recovery_tree_root;
2939 }
2940
2941 ASSERT(tree_root->highest_objectid <= BTRFS_LAST_FREE_OBJECTID);
2942
2943 mutex_unlock(&tree_root->objectid_mutex);
2944
2918 ret = btrfs_read_roots(fs_info, tree_root); 2945 ret = btrfs_read_roots(fs_info, tree_root);
2919 if (ret) 2946 if (ret)
2920 goto recovery_tree_root; 2947 goto recovery_tree_root;