summaryrefslogtreecommitdiff
path: root/disk-io.c
diff options
context:
space:
mode:
authorChris Mason <chris.mason@oracle.com>2010-12-15 16:00:23 -0500
committerChris Mason <chris.mason@oracle.com>2011-04-22 14:52:40 -0400
commit7cd060deeac7828c8d0d7468d9c246d6c7ef77b2 (patch)
tree2ceb9339f21074be3cfacf840bc36496695dc284 /disk-io.c
parent375714fe1181d1cca400dcfbcdb4fc29c6dfa5d6 (diff)
Fill missing devices so degraded filesystems can be read
When a device is missing, the btrfs tools need to be able to read alternate copies from the remaining devices. This creates placeholder devices that always return -EIO so the tools can limp along. Signed-off-by: Chris Mason <chris.mason@oracle.com>
Diffstat (limited to 'disk-io.c')
-rw-r--r--disk-io.c1
1 files changed, 1 insertions, 0 deletions
diff --git a/disk-io.c b/disk-io.c
index a6e1000d..fef3edab 100644
--- a/disk-io.c
+++ b/disk-io.c
@@ -204,6 +204,7 @@ struct extent_buffer *read_tree_block(struct btrfs_root *root, u64 bytenr,
eb->dev_bytenr = multi->stripes[0].physical;
kfree(multi);
ret = read_extent_from_disk(eb);
+
if (ret == 0 && check_tree_block(root, eb) == 0 &&
csum_tree_block(root, eb, 1) == 0 &&
verify_parent_transid(eb->tree, eb, parent_transid) == 0) {