* [PATCH] Btrfs-progs: return an error if we can't find an fs root
@ 2013-02-01 20:21 Josef Bacik
0 siblings, 0 replies; only message in thread
From: Josef Bacik @ 2013-02-01 20:21 UTC (permalink / raw)
To: linux-btrfs
Instead of doing a BUG_ON() if we fail to find the last fs root just return
an error so the callers can deal with it how they like. Also we need to
actually return an error if we can't find the latest root so that the error
handling works. With this btrfsck was able to deal with a file system that
was missing a root item but still had extents that referred back to the
root. Thanks,
Signed-off-by: Josef Bacik <jbacik@fusionio.com>
---
disk-io.c | 3 ++-
root-tree.c | 2 +-
2 files changed, 3 insertions(+), 2 deletions(-)
diff --git a/disk-io.c b/disk-io.c
index c4d4631..f6391ed 100644
--- a/disk-io.c
+++ b/disk-io.c
@@ -438,7 +438,8 @@ static int find_and_setup_root(struct btrfs_root *tree_root,
root, fs_info, objectid);
ret = btrfs_find_last_root(tree_root, objectid,
&root->root_item, &root->root_key);
- BUG_ON(ret);
+ if (ret)
+ return ret;
blocksize = btrfs_level_size(root, btrfs_root_level(&root->root_item));
generation = btrfs_root_generation(&root->root_item);
diff --git a/root-tree.c b/root-tree.c
index 782472c..ecb7599 100644
--- a/root-tree.c
+++ b/root-tree.c
@@ -47,7 +47,7 @@ int btrfs_find_last_root(struct btrfs_root *root, u64 objectid,
slot = path->slots[0] - 1;
btrfs_item_key_to_cpu(l, &found_key, slot);
if (found_key.objectid != objectid) {
- ret = 1;
+ ret = -ENOENT;
goto out;
}
read_extent_buffer(l, item, btrfs_item_ptr_offset(l, slot),
--
1.7.7.6
^ permalink raw reply related [flat|nested] only message in thread
only message in thread, other threads:[~2013-02-01 20:14 UTC | newest]
Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2013-02-01 20:21 [PATCH] Btrfs-progs: return an error if we can't find an fs root Josef Bacik
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).