All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH] btrfs-progs: Allow inspect dump-tree to show specified tree block even some tree roots are corrupted
@ 2017-08-18  9:36 Qu Wenruo
  2017-08-21 17:16 ` David Sterba
  0 siblings, 1 reply; 2+ messages in thread
From: Qu Wenruo @ 2017-08-18  9:36 UTC (permalink / raw)
  To: linux-btrfs; +Cc: dsterba, jared.e.vb

For btrfs inspect-internal dump-tree, if we use "-b" parameter to show
specified tree block, then we don't really need extra tree roots.

Only chunk root is needed to build up the whole chunk mapping so we can
read tree blocks.

This patch will add __OPEN_CTREE_RETURN_CHUNK_ROOT flag when show
speicifed tree block.
So even root tree is corrupted, we can still use inspect-internal
dump-tree to do some debugging.

Reported-by: Zirconium Hacker <jared.e.vb@gmail.com>
Signed-off-by: Qu Wenruo <quwenruo.btrfs@gmx.com>
---
 cmds-inspect-dump-tree.c | 21 ++++++++++++++-------
 1 file changed, 14 insertions(+), 7 deletions(-)

diff --git a/cmds-inspect-dump-tree.c b/cmds-inspect-dump-tree.c
index 93dff086..876ddcb5 100644
--- a/cmds-inspect-dump-tree.c
+++ b/cmds-inspect-dump-tree.c
@@ -222,6 +222,7 @@ int cmd_inspect_dump_tree(int argc, char **argv)
 	int uuid_tree_only = 0;
 	int roots_only = 0;
 	int root_backups = 0;
+	unsigned open_ctree_flags = OPEN_CTREE_FS_PARTIAL;
 	u64 block_only = 0;
 	struct btrfs_root *tree_root_scan;
 	u64 tree_id = 0;
@@ -260,6 +261,11 @@ int cmd_inspect_dump_tree(int argc, char **argv)
 			root_backups = 1;
 			break;
 		case 'b':
+			/*
+			 * If only showing one block, no need to fill roots
+			 * other than chunk root
+			 */
+			open_ctree_flags |= __OPEN_CTREE_RETURN_CHUNK_ROOT;
 			block_only = arg_strtou64(optarg);
 			break;
 		case 't': {
@@ -299,19 +305,14 @@ int cmd_inspect_dump_tree(int argc, char **argv)
 
 	printf("%s\n", PACKAGE_STRING);
 
-	info = open_ctree_fs_info(argv[optind], 0, 0, 0, OPEN_CTREE_PARTIAL);
+	info = open_ctree_fs_info(argv[optind], 0, 0, 0, open_ctree_flags);
 	if (!info) {
 		error("unable to open %s", argv[optind]);
 		goto out;
 	}
 
-	root = info->fs_root;
-	if (!root) {
-		error("unable to open %s", argv[optind]);
-		goto out;
-	}
-
 	if (block_only) {
+		root = info->chunk_root;
 		leaf = read_tree_block(info,
 				      block_only,
 				      info->nodesize, 0);
@@ -337,6 +338,12 @@ int cmd_inspect_dump_tree(int argc, char **argv)
 		goto close_root;
 	}
 
+	root = info->fs_root;
+	if (!root) {
+		error("unable to open %s", argv[optind]);
+		goto out;
+	}
+
 	if (!(extent_only || uuid_tree_only || tree_id)) {
 		if (roots_only) {
 			printf("root tree: %llu level %d\n",
-- 
2.14.0


^ permalink raw reply related	[flat|nested] 2+ messages in thread

* Re: [PATCH] btrfs-progs: Allow inspect dump-tree to show specified tree block even some tree roots are corrupted
  2017-08-18  9:36 [PATCH] btrfs-progs: Allow inspect dump-tree to show specified tree block even some tree roots are corrupted Qu Wenruo
@ 2017-08-21 17:16 ` David Sterba
  0 siblings, 0 replies; 2+ messages in thread
From: David Sterba @ 2017-08-21 17:16 UTC (permalink / raw)
  To: Qu Wenruo; +Cc: linux-btrfs, dsterba, jared.e.vb

On Fri, Aug 18, 2017 at 06:36:30PM +0900, Qu Wenruo wrote:
> For btrfs inspect-internal dump-tree, if we use "-b" parameter to show
> specified tree block, then we don't really need extra tree roots.
> 
> Only chunk root is needed to build up the whole chunk mapping so we can
> read tree blocks.
> 
> This patch will add __OPEN_CTREE_RETURN_CHUNK_ROOT flag when show
> speicifed tree block.
> So even root tree is corrupted, we can still use inspect-internal
> dump-tree to do some debugging.

Sounds useful.

> Reported-by: Zirconium Hacker <jared.e.vb@gmail.com>
> Signed-off-by: Qu Wenruo <quwenruo.btrfs@gmx.com>

Applied, thanks.

^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2017-08-21 17:17 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2017-08-18  9:36 [PATCH] btrfs-progs: Allow inspect dump-tree to show specified tree block even some tree roots are corrupted Qu Wenruo
2017-08-21 17:16 ` David Sterba

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.