Thread (14 messages) 14 messages, 2 authors, 2012-02-17

Re: can't read superblock (but could mount)

From: Chris Mason <hidden>
Date: 2012-02-14 18:41:31

On Tue, Feb 14, 2012 at 06:37:16PM +0100, Timo Nentwig wrote:
On Mon, 13 Feb 2012, Chris Mason wrote:
quoted
btrfs-debug-tree -b 9872289792 /dev/xxx
# btrfs-debug-tree -b 9872289792 /dev/loop1
leaf 9872289792 items 51 free space 0 generation 120351 owner 5
Ok, so this block is full of directory items, definitely not crucial to
mounting.
# btrfsck /dev/loop1
Extent back ref already exists for 9872289792 parent 0 root 5
leaf parent key incorrect 9872289792
bad block 9872289792
The block is also corrupted, as in the keys in the block aren't what we
expect.
ref mismatch on [9872289792 4096] extent item 1, found 2
Incorrect global backref count on 9872289792 found 1 wanted 2
backpointer mismatch on [9872289792 4096]
owner ref check failed [9872289792 4096]
ref mismatch on [9889067008 4096] extent item 1, found 0
Backref 9889067008 root 5 not referenced
Incorrect global backref count on 9889067008 found 1 wanted 0
backpointer mismatch on [9889067008 4096]
owner ref check failed [9889067008 4096]
ref mismatch on [37163102208 65536] extent item 1, found 0
Incorrect local backref count on 37163102208 root 5 owner 3360937
offset 0 found 0 wanted 1
backpointer mismatch on [37163102208 65536]
owner ref check failed [37163102208 65536]
ref mismatch on [37163814912 36864] extent item 0, found 1
Backref 37163814912 root 5 owner 3360939 offset 0 num_refs 0 not
found in extent tree
Incorrect local backref count on 37163814912 root 5 owner 3360939
offset 0 found 1 wanted 0
backpointer mismatch on [37163814912 36864]
And then we have a few other blocks with incorrect reference counts.
found 15491117056 bytes used err is 1
total csum bytes: 14764500
total tree bytes: 366956544
total fs tree bytes: 317714432
btree space waste bytes: 90628933
file data blocks allocated: 16182484992
 referenced 17813028864
Btrfs Btrfs v0.19

# mount /dev/loop1 /tmp/b
mount: block device /dev/loop1 is write-protected, mounting read-only

# ls /tmp/b
bin  boot  dev  etc  home  lib  lib64  media  mnt  opt  proc  root
run  sbin srv  sys  tmp  usr  var  vm

# echo "hooray!"

Please explain :)
I didn't do it ;)  All the commands I asked you to run were readonly.
The block is still corrupted.  You've switched from /dev/sda to
/dev/loop0, and loop0 is readonly.  So the readonly mount may be
stopping us from going into that bad branch of your tree (orphan cleanup
perhaps).

Regardless, the corrupt block isn't crucial, you should easily be able to
copy things off.

As for how we got here, I think you said you were originally running
something older than 3.2 when these problems started, correct?

-chris
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help