btrfs-progs: dump-tree: add option to print children nodes of a given block
[platform/upstream/btrfs-progs.git] / btrfstune.c
index 0a6ad9c..eccedf7 100644 (file)
@@ -66,6 +66,7 @@ static int update_seeding_flag(struct btrfs_root *root, int set_flag)
        }
 
        trans = btrfs_start_transaction(root, 1);
+       BUG_ON(IS_ERR(trans));
        btrfs_set_super_flags(disk_super, super_flags);
        ret = btrfs_commit_transaction(trans, root);
 
@@ -83,6 +84,7 @@ static int set_super_incompat_flags(struct btrfs_root *root, u64 flags)
        super_flags = btrfs_super_incompat_flags(disk_super);
        super_flags |= flags;
        trans = btrfs_start_transaction(root, 1);
+       BUG_ON(IS_ERR(trans));
        btrfs_set_super_incompat_flags(disk_super, super_flags);
        ret = btrfs_commit_transaction(trans, root);
 
@@ -111,7 +113,7 @@ static int change_header_uuid(struct btrfs_root *root, struct extent_buffer *eb)
                write_extent_buffer(eb, fs_info->new_chunk_tree_uuid,
                                    btrfs_header_chunk_tree_uuid(eb),
                                    BTRFS_UUID_SIZE);
-       ret = write_tree_block(NULL, root, eb);
+       ret = write_tree_block(NULL, fs_info, eb);
 
        return ret;
 }
@@ -149,7 +151,7 @@ static int change_extents_uuid(struct btrfs_fs_info *fs_info)
                        goto next;
 
                bytenr = key.objectid;
-               eb = read_tree_block(root, bytenr, root->fs_info->nodesize, 0);
+               eb = read_tree_block(fs_info, bytenr, 0);
                if (IS_ERR(eb)) {
                        error("failed to read tree block: %llu", bytenr);
                        ret = PTR_ERR(eb);
@@ -177,10 +179,9 @@ out:
        return ret;
 }
 
-static int change_device_uuid(struct btrfs_root *root, struct extent_buffer *eb,
+static int change_device_uuid(struct btrfs_fs_info *fs_info, struct extent_buffer *eb,
                              int slot)
 {
-       struct btrfs_fs_info *fs_info = root->fs_info;
        struct btrfs_dev_item *di;
        int ret = 0;
 
@@ -193,7 +194,7 @@ static int change_device_uuid(struct btrfs_root *root, struct extent_buffer *eb,
        write_extent_buffer(eb, fs_info->new_fsid,
                            (unsigned long)btrfs_device_fsid(di),
                            BTRFS_FSID_SIZE);
-       ret = write_tree_block(NULL, root, eb);
+       ret = write_tree_block(NULL, fs_info, eb);
 
        return ret;
 }
@@ -216,7 +217,7 @@ static int change_devices_uuid(struct btrfs_fs_info *fs_info)
                if (key.type != BTRFS_DEV_ITEM_KEY ||
                    key.objectid != BTRFS_DEV_ITEMS_OBJECTID)
                        goto next;
-               ret = change_device_uuid(root, path.nodes[0], path.slots[0]);
+               ret = change_device_uuid(fs_info, path.nodes[0], path.slots[0]);
                if (ret < 0)
                        goto out;
 next:
@@ -243,7 +244,7 @@ static int change_fsid_prepare(struct btrfs_fs_info *fs_info)
        btrfs_set_super_flags(fs_info->super_copy, flags);
 
        memcpy(fs_info->super_copy->fsid, fs_info->new_fsid, BTRFS_FSID_SIZE);
-       ret = write_all_supers(tree_root);
+       ret = write_all_supers(fs_info);
        if (ret < 0)
                return ret;
 
@@ -251,7 +252,7 @@ static int change_fsid_prepare(struct btrfs_fs_info *fs_info)
        write_extent_buffer(tree_root->node, fs_info->new_chunk_tree_uuid,
                            btrfs_header_chunk_tree_uuid(tree_root->node),
                            BTRFS_UUID_SIZE);
-       return write_tree_block(NULL, tree_root, tree_root->node);
+       return write_tree_block(NULL, fs_info, tree_root->node);
 }
 
 static int change_fsid_done(struct btrfs_fs_info *fs_info)
@@ -261,7 +262,7 @@ static int change_fsid_done(struct btrfs_fs_info *fs_info)
        flags &= ~BTRFS_SUPER_FLAG_CHANGING_FSID;
        btrfs_set_super_flags(fs_info->super_copy, flags);
 
-       return write_all_supers(fs_info->tree_root);
+       return write_all_supers(fs_info);
 }
 
 /*
@@ -355,7 +356,7 @@ static int change_uuid(struct btrfs_fs_info *fs_info, const char *new_fsid_str)
               BTRFS_FSID_SIZE);
        memcpy(fs_info->super_copy->fsid, fs_info->new_fsid,
               BTRFS_FSID_SIZE);
-       ret = write_all_supers(fs_info->tree_root);
+       ret = write_all_supers(fs_info);
        if (ret < 0)
                goto out;