diff options
author | Chris Mason <clm@fb.com> | 2016-01-19 21:21:30 -0500 |
---|---|---|
committer | Chris Mason <clm@fb.com> | 2016-01-19 21:21:30 -0500 |
commit | 326f784281fbbdcd91bb401b2a3e32132c0f5c72 (patch) | |
tree | ebee8e2cf51dd901d8c31b88e1a93b1655e6abf4 /fs/btrfs/disk-io.c | |
parent | acc308556c812485462b6b43843c3f64530dd843 (diff) | |
parent | 546bed631203344611f42b2af1d224d2eedb4e6b (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.c | 27 |
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 | ||
1601 | free_root_dev: | ||
1602 | free_anon_bdev(root->anon_dev); | ||
1588 | free_writers: | 1603 | free_writers: |
1589 | btrfs_free_subvolume_writers(root->subv_writers); | 1604 | btrfs_free_subvolume_writers(root->subv_writers); |
1590 | fail: | 1605 | fail: |
@@ -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; |