diff options
author | Chris Mason <chris.mason@oracle.com> | 2008-03-24 15:04:37 -0400 |
---|---|---|
committer | David Woodhouse <dwmw2@hera.kernel.org> | 2008-03-24 15:04:37 -0400 |
commit | 1f3ba6a3f9440a40108273dbbe4f37306be8d9ad (patch) | |
tree | e21267495562680435b4f9dd4915f565f73511e6 /btrfsck.c | |
parent | d12d4c7203a2ef08ef208a020471290cd1d42c35 (diff) |
Btrfsck updates for multi-device filesystems
Diffstat (limited to 'btrfsck.c')
-rw-r--r-- | btrfsck.c | 24 |
1 files changed, 18 insertions, 6 deletions
@@ -119,15 +119,23 @@ static int check_leaf(struct btrfs_root *root, for (i = 0; nritems > 1 && i < nritems - 2; i++) { btrfs_item_key(buf, &key, i); btrfs_item_key_to_cpu(buf, &cpukey, i + 1); - if (btrfs_comp_keys(&key, &cpukey) >= 0) + if (btrfs_comp_keys(&key, &cpukey) >= 0) { + fprintf(stderr, "bad key ordering %d %d\n", i, i+1); return 1; + } if (btrfs_item_offset_nr(buf, i) != - btrfs_item_end_nr(buf, i + 1)) + btrfs_item_end_nr(buf, i + 1)) { + fprintf(stderr, "incorrect offsets %u %u\n", + btrfs_item_offset_nr(buf, i), + btrfs_item_end_nr(buf, i + 1)); + return 1; + } + if (i == 0 && btrfs_item_end_nr(buf, i) != + BTRFS_LEAF_DATA_SIZE(root)) { + fprintf(stderr, "bad item end %u wanted %lu\n", + btrfs_item_end_nr(buf, i), + BTRFS_LEAF_DATA_SIZE(root)); return 1; - if (i == 0) { - if (btrfs_item_end_nr(buf, i) != - BTRFS_LEAF_DATA_SIZE(root)) - return 1; } } return 0; @@ -755,6 +763,10 @@ int main(int ac, char **av) { &extent_cache, &pending, &seen, &reada, &nodes, root->fs_info->tree_root->root_key.objectid); + add_root_to_pending(root->fs_info->chunk_root->node, bits, bits_nr, + &extent_cache, &pending, &seen, &reada, &nodes, + root->fs_info->chunk_root->root_key.objectid); + btrfs_init_path(&path); key.offset = 0; key.objectid = 0; |