Stefan Behrens
2013-May-27 14:07 UTC
[PATCH] Btrfs-progs: add option to btrfs-debug-tree to print uuid tree only
Signed-off-by: Stefan Behrens <sbehrens@giantdisaster.de> --- debug-tree.c | 31 ++++++++++++++++++++++--------- 1 file changed, 22 insertions(+), 9 deletions(-) diff --git a/debug-tree.c b/debug-tree.c index 0fc0ecd..dce1d81 100644 --- a/debug-tree.c +++ b/debug-tree.c @@ -30,13 +30,14 @@ static int print_usage(void) { - fprintf(stderr, "usage: btrfs-debug-tree [ -e ] [ -d ] [ -r ] [ -R ]\n"); + fprintf(stderr, "usage: btrfs-debug-tree [-e] [-d] [-r] [-R] [-u]\n"); fprintf(stderr, " [-b block_num ] device\n"); fprintf(stderr, "\t-e : print detailed extents info\n"); fprintf(stderr, "\t-d : print info of btrfs device and root tree dirs" " only\n"); fprintf(stderr, "\t-r : print info of roots only\n"); fprintf(stderr, "\t-R : print info of roots and root backups\n"); + fprintf(stderr, "\t-u : print info of uuid tree only\n"); fprintf(stderr, "\t-b block_num : print info of the specified block" " only\n"); fprintf(stderr, "%s\n", BTRFS_BUILD_VERSION); @@ -129,6 +130,7 @@ int main(int ac, char **av) int slot; int extent_only = 0; int device_only = 0; + int uuid_tree_only = 0; int roots_only = 0; int root_backups = 0; u64 block_only = 0; @@ -138,7 +140,7 @@ int main(int ac, char **av) while(1) { int c; - c = getopt(ac, av, "deb:rR"); + c = getopt(ac, av, "deb:rRu"); if (c < 0) break; switch(c) { @@ -151,6 +153,9 @@ int main(int ac, char **av) case ''r'': roots_only = 1; break; + case ''u'': + uuid_tree_only = 1; + break; case ''R'': roots_only = 1; root_backups = 1; @@ -201,7 +206,7 @@ int main(int ac, char **av) return 0; } - if (!extent_only) { + if (!(extent_only || uuid_tree_only)) { if (roots_only) { printf("root tree: %llu level %d\n", (unsigned long long)info->tree_root->node->start, @@ -250,7 +255,7 @@ again: if (btrfs_key_type(&found_key) == BTRFS_ROOT_ITEM_KEY) { unsigned long offset; struct extent_buffer *buf; - int skip = extent_only | device_only; + int skip = extent_only | device_only | uuid_tree_only; offset = btrfs_item_ptr_offset(leaf, slot); read_extent_buffer(leaf, &ri, offset, sizeof(ri)); @@ -268,9 +273,9 @@ again: printf("root"); break; case BTRFS_EXTENT_TREE_OBJECTID: - if (!device_only) + if (!device_only && !uuid_tree_only) skip = 0; - if (!extent_only && !device_only) + if (!skip) printf("extent"); break; case BTRFS_CHUNK_TREE_OBJECTID: @@ -279,8 +284,10 @@ again: } break; case BTRFS_DEV_TREE_OBJECTID: - skip = 0; - printf("device"); + if (!uuid_tree_only) + skip = 0; + if (!skip) + printf("device"); break; case BTRFS_FS_TREE_OBJECTID: if (!skip) { @@ -331,6 +338,12 @@ again: printf("quota"); } break; + case BTRFS_UUID_TREE_OBJECTID: + if (!extent_only && !device_only) + skip = 0; + if (!skip) + printf("uuid"); + break; case BTRFS_MULTIPLE_OBJECTIDS: if (!skip) { printf("multiple"); @@ -368,7 +381,7 @@ no_node: goto again; } - if (extent_only || device_only) + if (extent_only || device_only || uuid_tree_only) return 0; if (root_backups) -- 1.8.3 -- To unsubscribe from this list: send the line "unsubscribe linux-btrfs" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
David Sterba
2013-Jun-14 17:15 UTC
Re: [PATCH] Btrfs-progs: add option to btrfs-debug-tree to print uuid tree only
This is a nice debugging help. I''m thinking about introducing a single option to take names of all the trees to print. Something like btrfs-debug-tree --tree uuid,csum,root,extent /dev (or -t for the short option). Fortunatelly the number of trees is quite small so we would not run out of letters too soon and -u is descriptive enough. -c for csum tree works for me as well. So I''m adding this into integration. thanks, david -- To unsubscribe from this list: send the line "unsubscribe linux-btrfs" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html