diff options
author | Jeff Mahoney <jeffm@suse.com> | 2011-10-03 23:22:43 -0400 |
---|---|---|
committer | David Sterba <dsterba@suse.cz> | 2012-03-21 20:45:32 -0400 |
commit | 200a5c17677e1ee8b78382046f3748c9f5816281 (patch) | |
tree | aca0964b50af798d919ca3b710cfcd9c69498170 /fs/btrfs/disk-io.c | |
parent | 6763af84a69f23c1c79f00720982e74fcff4d1f3 (diff) |
btrfs: find_and_setup_root error push-up
find_and_setup_root BUGs when it encounters an error from
btrfs_find_last_root, which can occur if a path can't be allocated.
This patch pushes it up to its callers where it is already handled.
Signed-off-by: Jeff Mahoney <jeffm@suse.com>
Diffstat (limited to 'fs/btrfs/disk-io.c')
-rw-r--r-- | fs/btrfs/disk-io.c | 11 |
1 files changed, 6 insertions, 5 deletions
diff --git a/fs/btrfs/disk-io.c b/fs/btrfs/disk-io.c index d52ec115520..155c4e35e53 100644 --- a/fs/btrfs/disk-io.c +++ b/fs/btrfs/disk-io.c | |||
@@ -1197,10 +1197,10 @@ static int __setup_root(u32 nodesize, u32 leafsize, u32 sectorsize, | |||
1197 | return 0; | 1197 | return 0; |
1198 | } | 1198 | } |
1199 | 1199 | ||
1200 | static int find_and_setup_root(struct btrfs_root *tree_root, | 1200 | static int __must_check find_and_setup_root(struct btrfs_root *tree_root, |
1201 | struct btrfs_fs_info *fs_info, | 1201 | struct btrfs_fs_info *fs_info, |
1202 | u64 objectid, | 1202 | u64 objectid, |
1203 | struct btrfs_root *root) | 1203 | struct btrfs_root *root) |
1204 | { | 1204 | { |
1205 | int ret; | 1205 | int ret; |
1206 | u32 blocksize; | 1206 | u32 blocksize; |
@@ -1213,7 +1213,8 @@ static int find_and_setup_root(struct btrfs_root *tree_root, | |||
1213 | &root->root_item, &root->root_key); | 1213 | &root->root_item, &root->root_key); |
1214 | if (ret > 0) | 1214 | if (ret > 0) |
1215 | return -ENOENT; | 1215 | return -ENOENT; |
1216 | BUG_ON(ret); | 1216 | else if (ret < 0) |
1217 | return ret; | ||
1217 | 1218 | ||
1218 | generation = btrfs_root_generation(&root->root_item); | 1219 | generation = btrfs_root_generation(&root->root_item); |
1219 | blocksize = btrfs_level_size(root, btrfs_root_level(&root->root_item)); | 1220 | blocksize = btrfs_level_size(root, btrfs_root_level(&root->root_item)); |