linux-btrfs.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH] bytrfs-progs: Print error on invalid extent item format during check
@ 2017-12-29  9:01 Nikolay Borisov
  2018-01-08 19:29 ` David Sterba
  2018-01-25  5:56 ` Anand Jain
  0 siblings, 2 replies; 3+ messages in thread
From: Nikolay Borisov @ 2017-12-29  9:01 UTC (permalink / raw)
  To: linux-btrfs; +Cc: Nikolay Borisov

While performing normal mode check if the code comes across an invalid
extent format it will just BUG() and exit without printing any useful
information for debugging. Improve the situation by outputting the
key/leaf bytenr/slot which will enable to quickly inspect the tree and
see what the corruption is.

Signed-off-by: Nikolay Borisov <nborisov@suse.com>
---
 cmds-check.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/cmds-check.c b/cmds-check.c
index a93ac2c88a38..371516709ed8 100644
--- a/cmds-check.c
+++ b/cmds-check.c
@@ -8362,7 +8362,12 @@ static int process_extent_item(struct btrfs_root *root,
 	if (item_size < sizeof(*ei)) {
 #ifdef BTRFS_COMPAT_EXTENT_TREE_V0
 		struct btrfs_extent_item_v0 *ei0;
-		BUG_ON(item_size != sizeof(*ei0));
+		if (item_size != sizeof(*ei0)) {
+			error("invalid extent item format: ITEM[%llu %u %llu] leaf: %llu slot: %d",
+			      key.objectid, key.type, key.offset,
+			      btrfs_header_bytenr(eb), slot);
+			BUG();
+		}
 		ei0 = btrfs_item_ptr(eb, slot, struct btrfs_extent_item_v0);
 		refs = btrfs_extent_refs_v0(eb, ei0);
 #else
-- 
2.7.4


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

* Re: [PATCH] bytrfs-progs: Print error on invalid extent item format during check
  2017-12-29  9:01 [PATCH] bytrfs-progs: Print error on invalid extent item format during check Nikolay Borisov
@ 2018-01-08 19:29 ` David Sterba
  2018-01-25  5:56 ` Anand Jain
  1 sibling, 0 replies; 3+ messages in thread
From: David Sterba @ 2018-01-08 19:29 UTC (permalink / raw)
  To: Nikolay Borisov; +Cc: linux-btrfs

On Fri, Dec 29, 2017 at 11:01:44AM +0200, Nikolay Borisov wrote:
> While performing normal mode check if the code comes across an invalid
> extent format it will just BUG() and exit without printing any useful
> information for debugging. Improve the situation by outputting the
> key/leaf bytenr/slot which will enable to quickly inspect the tree and
> see what the corruption is.
> 
> Signed-off-by: Nikolay Borisov <nborisov@suse.com>

Applied, thanks.

> ---
>  cmds-check.c | 7 ++++++-
>  1 file changed, 6 insertions(+), 1 deletion(-)
> 
> diff --git a/cmds-check.c b/cmds-check.c
> index a93ac2c88a38..371516709ed8 100644
> --- a/cmds-check.c
> +++ b/cmds-check.c
> @@ -8362,7 +8362,12 @@ static int process_extent_item(struct btrfs_root *root,
>  	if (item_size < sizeof(*ei)) {
>  #ifdef BTRFS_COMPAT_EXTENT_TREE_V0
>  		struct btrfs_extent_item_v0 *ei0;
> -		BUG_ON(item_size != sizeof(*ei0));
> +		if (item_size != sizeof(*ei0)) {
> +			error("invalid extent item format: ITEM[%llu %u %llu] leaf: %llu slot: %d",

String un-indented.

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

* Re: [PATCH] bytrfs-progs: Print error on invalid extent item format during check
  2017-12-29  9:01 [PATCH] bytrfs-progs: Print error on invalid extent item format during check Nikolay Borisov
  2018-01-08 19:29 ` David Sterba
@ 2018-01-25  5:56 ` Anand Jain
  1 sibling, 0 replies; 3+ messages in thread
From: Anand Jain @ 2018-01-25  5:56 UTC (permalink / raw)
  To: Nikolay Borisov, linux-btrfs

nitpick:

  typo in $subject.

Thanks, Anand

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

end of thread, other threads:[~2018-01-25  5:55 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2017-12-29  9:01 [PATCH] bytrfs-progs: Print error on invalid extent item format during check Nikolay Borisov
2018-01-08 19:29 ` David Sterba
2018-01-25  5:56 ` Anand Jain

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).