X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=btrfs-corrupt-block.c;h=da0ec8c51e5a1a175b766bd099e98ea7d5e7f8d8;hb=188a2997e0c96422498034daf2ebbb4fa8892897;hp=5649a00ea442ee24e554341e262b3a76ccf65856;hpb=060c7b3a1a40d2e9cacbdb37a02791bacae32491;p=platform%2Fupstream%2Fbtrfs-progs.git diff --git a/btrfs-corrupt-block.c b/btrfs-corrupt-block.c index 5649a00..da0ec8c 100644 --- a/btrfs-corrupt-block.c +++ b/btrfs-corrupt-block.c @@ -47,9 +47,8 @@ static int debug_corrupt_block(struct extent_buffer *eb, length = blocksize; while (1) { - ret = btrfs_map_block(&root->fs_info->mapping_tree, READ, - eb->start, &length, &multi, - mirror_num, NULL); + ret = btrfs_map_block(root->fs_info, READ, eb->start, &length, + &multi, mirror_num, NULL); if (ret) { error("cannot map block %llu length %llu mirror %d: %d", (unsigned long long)eb->start, @@ -89,8 +88,8 @@ static int debug_corrupt_block(struct extent_buffer *eb, fsync(eb->fd); } - num_copies = btrfs_num_copies(&root->fs_info->mapping_tree, - eb->start, eb->len); + num_copies = btrfs_num_copies(root->fs_info, eb->start, + eb->len); if (num_copies == 1) break; @@ -169,7 +168,7 @@ static int corrupt_keys_in_block(struct btrfs_fs_info *fs_info, u64 bytenr) { struct extent_buffer *eb; - eb = read_tree_block_fs_info(fs_info, bytenr, fs_info->nodesize, 0); + eb = read_tree_block(fs_info, bytenr, 0); if (!extent_buffer_uptodate(eb)) return -EIO;; @@ -278,6 +277,7 @@ static void btrfs_corrupt_extent_tree(struct btrfs_trans_handle *trans, struct btrfs_root *root, struct extent_buffer *eb) { + struct btrfs_fs_info *fs_info = root->fs_info; int i; if (!eb) @@ -296,8 +296,7 @@ static void btrfs_corrupt_extent_tree(struct btrfs_trans_handle *trans, for (i = 0; i < btrfs_header_nritems(eb); i++) { struct extent_buffer *next; - next = read_tree_block(root, btrfs_node_blockptr(eb, i), - root->fs_info->nodesize, + next = read_tree_block(fs_info, btrfs_node_blockptr(eb, i), btrfs_node_ptr_generation(eb, i)); if (!extent_buffer_uptodate(next)) continue; @@ -727,7 +726,7 @@ out: static void shift_items(struct btrfs_root *root, struct extent_buffer *eb) { int nritems = btrfs_header_nritems(eb); - int shift_space = btrfs_leaf_free_space(root, eb) / 2; + int shift_space = btrfs_leaf_free_space(root->fs_info, eb) / 2; int slot = nritems / 2; int i = 0; unsigned int data_end = btrfs_item_offset_nr(eb, nritems - 1); @@ -765,7 +764,7 @@ static int corrupt_metadata_block(struct btrfs_fs_info *fs_info, u64 block, return -EINVAL; } - eb = read_tree_block_fs_info(fs_info, block, fs_info->nodesize, 0); + eb = read_tree_block(fs_info, block, 0); if (!extent_buffer_uptodate(eb)) { fprintf(stderr, "Couldn't read in tree block %s\n", field); return -EINVAL; @@ -1227,13 +1226,16 @@ int main(int argc, char **argv) if (logical == (u64)-1) print_usage(1); trans = btrfs_start_transaction(root, 1); + BUG_ON(IS_ERR(trans)); ret = corrupt_extent(trans, root, logical); btrfs_commit_transaction(trans, root); goto out_close; } if (extent_tree) { struct btrfs_trans_handle *trans; + trans = btrfs_start_transaction(root, 1); + BUG_ON(IS_ERR(trans)); btrfs_corrupt_extent_tree(trans, root->fs_info->extent_root, root->fs_info->extent_root->node); btrfs_commit_transaction(trans, root); @@ -1259,6 +1261,7 @@ int main(int argc, char **argv) goto out_close; } trans = btrfs_start_transaction(root, 1); + BUG_ON(IS_ERR(trans)); ret = corrupt_item_nocow(trans, root->fs_info->chunk_root, path, del); if (ret < 0) @@ -1268,7 +1271,9 @@ int main(int argc, char **argv) } if (chunk_tree) { struct btrfs_trans_handle *trans; + trans = btrfs_start_transaction(root, 1); + BUG_ON(IS_ERR(trans)); ret = corrupt_chunk_tree(trans, root->fs_info->chunk_root); if (ret < 0) fprintf(stderr, "Failed to corrupt chunk tree\n"); @@ -1282,6 +1287,7 @@ int main(int argc, char **argv) print_usage(1); trans = btrfs_start_transaction(root, 1); + BUG_ON(IS_ERR(trans)); if (file_extent == (u64)-1) { printf("corrupting inode\n"); ret = corrupt_inode(trans, root, inode, field); @@ -1365,7 +1371,7 @@ int main(int argc, char **argv) struct extent_buffer *eb; eb = btrfs_find_create_tree_block(root->fs_info, - logical, root->fs_info->sectorsize); + logical); if (!eb) { error( "not enough memory to allocate extent buffer for bytenr %llu",