From: Qu Wenruo <quwenruo@cn.fujitsu.com>
To: Ansgar Hockmann-Stolle <Ansgar.Hockmann-Stolle@uni-osnabrueck.de>,
<linux-btrfs@vger.kernel.org>
Subject: Re: btrfs unmountable: read block failed check_tree_block; Couldn't read tree root
Date: Tue, 28 Oct 2014 09:05:03 +0800 [thread overview]
Message-ID: <544EEBBF.5080208@cn.fujitsu.com> (raw)
In-Reply-To: <544ECF24.7030504@uni-osnabrueck.de>
-------- Original Message --------
Subject: Re: btrfs unmountable: read block failed check_tree_block;
Couldn't read tree root
From: Ansgar Hockmann-Stolle <Ansgar.Hockmann-Stolle@uni-osnabrueck.de>
To: <linux-btrfs@vger.kernel.org>
Date: 2014年10月28日 07:03
> Am 27.10.14 um 14:23 schrieb Ansgar Hockmann-Stolle:
>> Hi!
>>
>> My btrfs system partition went readonly. After reboot it doesnt mount
>> anymore. System was openSUSE 13.1 Tumbleweed (kernel 3.17.??). Now I'm
>> on openSUSE 13.2-RC1 rescue (kernel 3.16.3). I dumped (dd) the whole 250
>> GB SSD to some USB file and tried some btrfs tools on another copy per
>> loopback device. But everything failed with:
>>
>> kernel: BTRFS: failed to read tree root on dm-2
>>
>> See http://pastebin.com/raw.php?i=dPnU6nzg.
>>
>> Any hints where to go from here?
>
> After an offlist hint (thanks Tom!) I compiled the latest btrfs-progs
> 3.17 and tried some more ...
>
> linux:~/bin # ./btrfs --version
> Btrfs v3.17
> linux:~/bin # ./btrfs-find-root /dev/sda3
> Super think's the tree root is at 1015238656, chunk root 20971520
> Well block 239718400 seems great, but generation doesn't match,
> have=661931, want=663595 level 0
> Well block 239722496 seems great, but generation doesn't match,
> have=661931, want=663595 level 0
> Well block 320098304 seems great, but generation doesn't match,
> have=662233, want=663595 level 0
> Well block 879341568 seems great, but generation doesn't match,
> have=663227, want=663595 level 0
> Well block 879345664 seems great, but generation doesn't match,
> have=663227, want=663595 level 0
> Well block 879382528 seems great, but generation doesn't match,
> have=663227, want=663595 level 0
> Well block 879398912 seems great, but generation doesn't match,
> have=663227, want=663595 level 0
> Well block 879403008 seems great, but generation doesn't match,
> have=663227, want=663595 level 0
> Well block 879423488 seems great, but generation doesn't match,
> have=663227, want=663595 level 0
> Well block 879435776 seems great, but generation doesn't match,
> have=663227, want=663595 level 0
> Well block 880095232 seems great, but generation doesn't match,
> have=663227, want=663595 level 0
> Well block 881504256 seems great, but generation doesn't match,
> have=663228, want=663595 level 0
> Well block 881512448 seems great, but generation doesn't match,
> have=663228, want=663595 level 0
> Well block 936271872 seems great, but generation doesn't match,
> have=663397, want=663595 level 0
> Well block 1004490752 seems great, but generation doesn't match,
> have=663571, want=663595 level 0
> Well block 1007804416 seems great, but generation doesn't match,
> have=663572, want=663595 level 0
> Well block 1012031488 seems great, but generation doesn't match,
> have=663575, want=663595 level 0
> Well block 1012396032 seems great, but generation doesn't match,
> have=663575, want=663595 level 0
> Well block 1012633600 seems great, but generation doesn't match,
> have=663586, want=663595 level 0
> Well block 1012871168 seems great, but generation doesn't match,
> have=663585, want=663595 level 0
> Well block 1015201792 seems great, but generation doesn't match,
> have=663588, want=663595 level 0
> Well block 1015836672 seems great, but generation doesn't match,
> have=663596, want=663595 level 1
> Well block 44132536320 seems great, but generation doesn't match,
> have=658774, want=663595 level 0
> Well block 44178280448 seems great, but generation doesn't match,
> have=658774, want=663595 level 0
> Well block 87443644416 seems great, but generation doesn't match,
> have=661349, want=663595 level 0
> Well block 87514079232 seems great, but generation doesn't match,
> have=651051, want=663595 level 0
> Well block 87517679616 seems great, but generation doesn't match,
> have=661349, want=663595 level 0
> Well block 98697822208 seems great, but generation doesn't match,
> have=643548, want=663595 level 0
> Well block 103285026816 seems great, but generation doesn't match,
> have=661672, want=663595 level 0
> Well block 103309553664 seems great, but generation doesn't match,
> have=661674, want=663595 level 0
> Well block 103523430400 seems great, but generation doesn't match,
> have=661767, want=663595 level 0
> No more metdata to scan, exiting
>
> This line I found interesting because "have" is "want + 1":
> Well block 1015836672 seems great, but generation doesn't match,
> have=663596, want=663595 level 1
>
> And here the tail of "btrfs rescue chunk-recover" (full output at
> http://pastebin.com/raw.php?i=1D5VgDxv)
>
> [..]
> Total Chunks: 234
> Heathy: 231
> Bad: 3
>
> Orphan Block Groups:
>
> Orphan Device Extents:
> Couldn't map the block 1015238656
> btrfs: volumes.c:1140: btrfs_num_copies: Assertion `!(ce->start >
> logical || ce->start + ce->size < logical)' failed.
> Aborted
>
First, I think the assertion could be dealt with.
Second, much like the other one who encounters chunk tree corruption,
the chunk-recovery did quite well and salvaged most of the chunks.
However the codes is somewhat too strict to rebuild the chunk tree
if there is *ANY* orphan chunk.
I prefer to make chunk-rescue less strict to rebuild chunk.
Maybe it would help on your case but it may takes some time.
Thanks,
Qu
>
> Sadly "btrfs check --repair" keep up refusing to do its job.
>
> linux:~ # btrfs check --repair /dev/sda3
> enabling repair mode
> Check tree block failed, want=1015238656, have=0
> Check tree block failed, want=1015238656, have=0
> Check tree block failed, want=1015238656, have=0
> Check tree block failed, want=1015238656, have=0
> Check tree block failed, want=1015238656, have=0
> read block failed check_tree_block
> Couldn't read tree root
> Checking filesystem on /dev/sda3
> UUID: 1af256b5-b1ad-443b-aeee-a6853e70b7e2
> Critical roots corrupted, unable to fsck the FS
> Segmentation fault
>
> Any more hints?
>
> Ciao
> Ansgar
> --
> 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
next prev parent reply other threads:[~2014-10-28 1:05 UTC|newest]
Thread overview: 8+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-10-27 13:23 btrfs unmountable: read block failed check_tree_block; Couldn't read tree root Ansgar Hockmann-Stolle
2014-10-27 23:03 ` Ansgar Hockmann-Stolle
2014-10-28 1:05 ` Qu Wenruo [this message]
2014-10-28 1:40 ` Qu Wenruo
2014-10-28 21:56 ` Ansgar Hockmann-Stolle
2014-11-04 22:40 ` [SOLVED] " Ansgar Hockmann-Stolle
2014-10-27 23:17 ` Duncan
2014-10-28 22:42 ` Ansgar Hockmann-Stolle
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=544EEBBF.5080208@cn.fujitsu.com \
--to=quwenruo@cn.fujitsu.com \
--cc=Ansgar.Hockmann-Stolle@uni-osnabrueck.de \
--cc=linux-btrfs@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
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.