Some options operate on a specific root so let's extract the code which
deals with this. No functional change.

Signed-off-by: Nikolay Borisov <nbori...@suse.com>
---
 btrfs-corrupt-block.c | 37 +++++++++++++++++++++++--------------
 1 file changed, 23 insertions(+), 14 deletions(-)

diff --git a/btrfs-corrupt-block.c b/btrfs-corrupt-block.c
index da0ec8c51e5a..ab6ca0a1e90a 100644
--- a/btrfs-corrupt-block.c
+++ b/btrfs-corrupt-block.c
@@ -1080,6 +1080,26 @@ static int find_chunk_offset(struct btrfs_root *root,
        return ret;
 
 }
+
+static struct btrfs_root *open_root(struct btrfs_fs_info *fs_info,
+                                   u64 root_objectid)
+{
+
+       struct btrfs_key root_key;
+       struct btrfs_root *root;
+
+       root_key.objectid = root_objectid;
+       root_key.type = BTRFS_ROOT_ITEM_KEY;
+       root_key.offset = (u64)-1;
+
+       root = btrfs_read_fs_root(fs_info, &root_key);
+       if (IS_ERR(root)) {
+               fprintf(stderr, "Couldn't find root %llu\n", root_objectid);
+               print_usage(1);
+       }
+
+       return root;
+}
 int main(int argc, char **argv)
 {
        struct cache_tree root_cache;
@@ -1326,20 +1346,9 @@ int main(int argc, char **argv)
 
                if (!key.objectid)
                        print_usage(1);
-               if (root_objectid) {
-                       struct btrfs_key root_key;
-
-                       root_key.objectid = root_objectid;
-                       root_key.type = BTRFS_ROOT_ITEM_KEY;
-                       root_key.offset = (u64)-1;
-
-                       target = btrfs_read_fs_root(root->fs_info, &root_key);
-                       if (IS_ERR(target)) {
-                               fprintf(stderr, "Couldn't find root %llu\n",
-                                       (unsigned long long)root_objectid);
-                               print_usage(1);
-                       }
-               }
+               if (root_objectid)
+                       target = open_root(root->fs_info, root_objectid);
+
                ret = delete_item(target, &key);
                goto out_close;
        }
-- 
2.7.4

--
To unsubscribe from this list: send the line "unsubscribe linux-btrfs" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to