All of lore.kernel.org
 help / color / mirror / Atom feed
* Recover from "couldn't read tree root"?
@ 2021-06-20 20:37 Nathan Dehnel
  2021-06-20 21:09 ` Chris Murphy
  2021-06-20 21:19 ` Chris Murphy
  0 siblings, 2 replies; 8+ messages in thread
From: Nathan Dehnel @ 2021-06-20 20:37 UTC (permalink / raw)
  To: Btrfs BTRFS

A machine failed to boot, so I tried to mount its root partition from
systemrescuecd, which failed:

[ 5404.240019] BTRFS info (device bcache3): disk space caching is enabled
[ 5404.240022] BTRFS info (device bcache3): has skinny extents
[ 5404.243195] BTRFS error (device bcache3): parent transid verify
failed on 3004631449600 wanted 1420882 found 1420435
[ 5404.243279] BTRFS error (device bcache3): parent transid verify
failed on 3004631449600 wanted 1420882 found 1420435
[ 5404.243362] BTRFS error (device bcache3): parent transid verify
failed on 3004631449600 wanted 1420882 found 1420435
[ 5404.243432] BTRFS error (device bcache3): parent transid verify
failed on 3004631449600 wanted 1420882 found 1420435
[ 5404.243435] BTRFS warning (device bcache3): couldn't read tree root
[ 5404.244114] BTRFS error (device bcache3): open_ctree failed

btrfs rescue super-recover -v /dev/bcache0 returned this:

parent transid verify failed on 3004631449600 wanted 1420882 found 1420435
parent transid verify failed on 3004631449600 wanted 1420882 found 1420435
parent transid verify failed on 3004631449600 wanted 1420882 found 1420435
parent transid verify failed on 3004631449600 wanted 1420882 found 1420435
parent transid verify failed on 3004631449600 wanted 1420882 found 1420435
Ignoring transid failure
ERROR: could not setup extent tree
Failed to recover bad superblocks

uname -a:

Linux sysrescue 5.10.34-1-lts #1 SMP Sun, 02 May 2021 12:41:09 +0000
x86_64 GNU/Linux

btrfs --version:

btrfs-progs v5.10.1

btrfs fi show:

Label: none  uuid: 76189222-b60d-4402-a7ff-141f057e8574
        Total devices 10 FS bytes used 1.50TiB
        devid    1 size 931.51GiB used 311.03GiB path /dev/bcache3
        devid    2 size 931.51GiB used 311.00GiB path /dev/bcache2
        devid    3 size 931.51GiB used 311.00GiB path /dev/bcache1
        devid    4 size 931.51GiB used 311.00GiB path /dev/bcache0
        devid    5 size 931.51GiB used 311.00GiB path /dev/bcache4
        devid    6 size 931.51GiB used 311.00GiB path /dev/bcache8
        devid    7 size 931.51GiB used 311.00GiB path /dev/bcache6
        devid    8 size 931.51GiB used 311.03GiB path /dev/bcache9
        devid    9 size 931.51GiB used 311.03GiB path /dev/bcache7
        devid   10 size 931.51GiB used 311.03GiB path /dev/bcache5

Is this filesystem recoverable?

(Sorry, re-sending because I forgot to add a subject)

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

* Re: Recover from "couldn't read tree root"?
  2021-06-20 20:37 Recover from "couldn't read tree root"? Nathan Dehnel
@ 2021-06-20 21:09 ` Chris Murphy
  2021-06-20 21:31   ` Nathan Dehnel
  2021-06-20 21:19 ` Chris Murphy
  1 sibling, 1 reply; 8+ messages in thread
From: Chris Murphy @ 2021-06-20 21:09 UTC (permalink / raw)
  To: Nathan Dehnel; +Cc: Btrfs BTRFS

On Sun, Jun 20, 2021 at 2:38 PM Nathan Dehnel <ncdehnel@gmail.com> wrote:
>
> A machine failed to boot, so I tried to mount its root partition from
> systemrescuecd, which failed:
>
> [ 5404.240019] BTRFS info (device bcache3): disk space caching is enabled
> [ 5404.240022] BTRFS info (device bcache3): has skinny extents
> [ 5404.243195] BTRFS error (device bcache3): parent transid verify
> failed on 3004631449600 wanted 1420882 found 1420435
> [ 5404.243279] BTRFS error (device bcache3): parent transid verify
> failed on 3004631449600 wanted 1420882 found 1420435
> [ 5404.243362] BTRFS error (device bcache3): parent transid verify
> failed on 3004631449600 wanted 1420882 found 1420435
> [ 5404.243432] BTRFS error (device bcache3): parent transid verify
> failed on 3004631449600 wanted 1420882 found 1420435
> [ 5404.243435] BTRFS warning (device bcache3): couldn't read tree root
> [ 5404.244114] BTRFS error (device bcache3): open_ctree failed
>
> btrfs rescue super-recover -v /dev/bcache0 returned this:
>
> parent transid verify failed on 3004631449600 wanted 1420882 found 1420435
> parent transid verify failed on 3004631449600 wanted 1420882 found 1420435
> parent transid verify failed on 3004631449600 wanted 1420882 found 1420435
> parent transid verify failed on 3004631449600 wanted 1420882 found 1420435
> parent transid verify failed on 3004631449600 wanted 1420882 found 1420435
> Ignoring transid failure
> ERROR: could not setup extent tree
> Failed to recover bad superblocks
>
> uname -a:
>
> Linux sysrescue 5.10.34-1-lts #1 SMP Sun, 02 May 2021 12:41:09 +0000
> x86_64 GNU/Linux
>
> btrfs --version:
>
> btrfs-progs v5.10.1
>
> btrfs fi show:
>
> Label: none  uuid: 76189222-b60d-4402-a7ff-141f057e8574
>         Total devices 10 FS bytes used 1.50TiB
>         devid    1 size 931.51GiB used 311.03GiB path /dev/bcache3
>         devid    2 size 931.51GiB used 311.00GiB path /dev/bcache2
>         devid    3 size 931.51GiB used 311.00GiB path /dev/bcache1
>         devid    4 size 931.51GiB used 311.00GiB path /dev/bcache0
>         devid    5 size 931.51GiB used 311.00GiB path /dev/bcache4
>         devid    6 size 931.51GiB used 311.00GiB path /dev/bcache8
>         devid    7 size 931.51GiB used 311.00GiB path /dev/bcache6
>         devid    8 size 931.51GiB used 311.03GiB path /dev/bcache9
>         devid    9 size 931.51GiB used 311.03GiB path /dev/bcache7
>         devid   10 size 931.51GiB used 311.03GiB path /dev/bcache5
>
> Is this filesystem recoverable?
>> (Sorry, re-sending because I forgot to add a subject)

Definitely don't write any irreversible changes, such as a repair
attempt, to anything until you understand what what wrong or it'll
make recovery harder or impossible.

Was bcache in write back or write through mode?

What's the configuration? Can you supply something like

lsblk -o NAME,FSTYPE,SIZE,FSUSE%,MOUNTPOINT,UUID,MIN-IO,SCHED,DISC-GRAN,MODEL



-- 
Chris Murphy

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

* Re: Recover from "couldn't read tree root"?
  2021-06-20 20:37 Recover from "couldn't read tree root"? Nathan Dehnel
  2021-06-20 21:09 ` Chris Murphy
@ 2021-06-20 21:19 ` Chris Murphy
  2021-06-20 21:48   ` Nathan Dehnel
  1 sibling, 1 reply; 8+ messages in thread
From: Chris Murphy @ 2021-06-20 21:19 UTC (permalink / raw)
  To: Nathan Dehnel; +Cc: Btrfs BTRFS

On Sun, Jun 20, 2021 at 2:38 PM Nathan Dehnel <ncdehnel@gmail.com> wrote:
>
> A machine failed to boot, so I tried to mount its root partition from
> systemrescuecd, which failed:
>
> [ 5404.240019] BTRFS info (device bcache3): disk space caching is enabled
> [ 5404.240022] BTRFS info (device bcache3): has skinny extents
> [ 5404.243195] BTRFS error (device bcache3): parent transid verify
> failed on 3004631449600 wanted 1420882 found 1420435
> [ 5404.243279] BTRFS error (device bcache3): parent transid verify
> failed on 3004631449600 wanted 1420882 found 1420435
> [ 5404.243362] BTRFS error (device bcache3): parent transid verify
> failed on 3004631449600 wanted 1420882 found 1420435
> [ 5404.243432] BTRFS error (device bcache3): parent transid verify
> failed on 3004631449600 wanted 1420882 found 1420435
> [ 5404.243435] BTRFS warning (device bcache3): couldn't read tree root
> [ 5404.244114] BTRFS error (device bcache3): open_ctree failed

This is generally bad, and means some lower layer did something wrong,
such as getting write order incorrect, i.e. failing to properly honor
flush/fua. Recovery can be difficult and take a while.
https://btrfs.wiki.kernel.org/index.php/Problem_FAQ#parent_transid_verify_failed

I suggest searching logs since the last time this file system was
working, because the above error is indicating a problem that's
already happened and what we need to know is what happened, if
possible. Something like this:

journalctl --since=-5d -k -o short-monotonic --no-hostname | grep
"Linux version\| ata\|bcache\|Btrfs\|BTRFS\|] hd\| scsi\| sd\| sdhci\|
mmc\| nvme\| usb\| vd"



> btrfs rescue super-recover -v /dev/bcache0 returned this:
>
> parent transid verify failed on 3004631449600 wanted 1420882 found 1420435
> parent transid verify failed on 3004631449600 wanted 1420882 found 1420435
> parent transid verify failed on 3004631449600 wanted 1420882 found 1420435
> parent transid verify failed on 3004631449600 wanted 1420882 found 1420435
> parent transid verify failed on 3004631449600 wanted 1420882 found 1420435
> Ignoring transid failure
> ERROR: could not setup extent tree
> Failed to recover bad superblocks

OK something is really wrong if you're not able to see a single
superblock on any of the bcache devices. Every member device has  3
super blocks, given the sizes you've provided. For there to not be a
single one is a spectacular failure as if the bcache cache device
isn't returning correct information for any of them. So I'm gonna
guess a single shared SSD, which is a single point of failure, and
it's spitting out garbage or zeros. But I'm not even close to a bcache
expert so you might want to ask bcache developers how to figure out
what state bcache is in and whether and how to safely decouple it from
the backing drives so that you can engage in recovery attempts.

If bcache mode is write through, there's a chance the backing drives
have valid btrfs metadata, and it's just that on read the SSD is
returning bogus information.





-- 
Chris Murphy

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

* Re: Recover from "couldn't read tree root"?
  2021-06-20 21:09 ` Chris Murphy
@ 2021-06-20 21:31   ` Nathan Dehnel
  2021-06-20 22:19     ` Chris Murphy
  2021-06-20 22:53     ` Chris Murphy
  0 siblings, 2 replies; 8+ messages in thread
From: Nathan Dehnel @ 2021-06-20 21:31 UTC (permalink / raw)
  To: Chris Murphy; +Cc: Btrfs BTRFS

>Was bcache in write back or write through mode?
Writeback.

>What's the configuration?
NAME        FSTYPE              SIZE FSUSE% MOUNTPOINT
UUID                                  MIN-IO SCHED       DISC-GRAN
MODEL
loop0       squashfs          655.6M   100% /run/archiso/sfs/airootfs
                                        512 mq-deadline        0B
sda                           238.5G
                                        512 mq-deadline      512B
C300-CTFDDAC256MAG
├─sda1                            2M
                                        512 mq-deadline      512B
├─sda2      linux_raid_member   512M
325a2f12-18b8-27f7-2f81-f554a9b0fccc     512 mq-deadline      512B
│ └─md126   vfat              511.9M
EF35-0411                                512                  512B
└─sda3      linux_raid_member    16G
93ed641f-394b-2122-7525-b3311aaac6b8     512 mq-deadline      512B
  └─md125   swap                 16G
9ea84fb7-8bd7-4a0e-91fe-398790643066 1048576                  512B
sdb                           232.9G
                                        512 mq-deadline      512B
Samsung_SSD_850_EVO_250GB
├─sdb1                            2M
                                        512 mq-deadline      512B
├─sdb2      linux_raid_member   512M
325a2f12-18b8-27f7-2f81-f554a9b0fccc     512 mq-deadline      512B
│ └─md126   vfat              511.9M
EF35-0411                                512                  512B
└─sdb3      linux_raid_member    16G
93ed641f-394b-2122-7525-b3311aaac6b8     512 mq-deadline      512B
  └─md125   swap                 16G
9ea84fb7-8bd7-4a0e-91fe-398790643066 1048576                  512B
sdc         btrfs             931.5G
12bcde5c-b3ae-4fa6-8e17-0a4b564f1ba1     512 mq-deadline        0B
WDC_WD1002FAEX-00Z3A0
└─sdc1      bcache            931.5G
f34b26ea-8229-4f3f-bdc5-29c5fe16eaae     512 mq-deadline        0B
  └─bcache0 btrfs             931.5G
76189222-b60d-4402-a7ff-141f057e8574     512                  512B
sdd         btrfs             931.5G
12bcde5c-b3ae-4fa6-8e17-0a4b564f1ba1     512 mq-deadline        0B
WDC_WD1002FAEX-00Z3A0
└─sdd1      bcache            931.5G
beb25260-1b36-473f-93c4-7ef016a62f44     512 mq-deadline        0B
  └─bcache1 btrfs             931.5G
76189222-b60d-4402-a7ff-141f057e8574     512                  512B
sde         btrfs             931.5G
12bcde5c-b3ae-4fa6-8e17-0a4b564f1ba1    4096 mq-deadline        0B
WDC_WD1003FZEX-00MK2A0
└─sde1      bcache            931.5G
21b55c83-c951-4e4f-affc-0b9bf54c8783    4096 mq-deadline        0B
  └─bcache2 btrfs             931.5G
76189222-b60d-4402-a7ff-141f057e8574     512                  512B
sdf         btrfs             931.5G
12bcde5c-b3ae-4fa6-8e17-0a4b564f1ba1     512 mq-deadline        0B
WDC_WD1002FAEX-00Z3A0
└─sdf1      bcache            931.5G
d4d2b9d6-077d-4328-b2cd-14f6db259955     512 mq-deadline        0B
  └─bcache3 btrfs             931.5G
76189222-b60d-4402-a7ff-141f057e8574     512                  512B
sdg         btrfs             931.5G
12bcde5c-b3ae-4fa6-8e17-0a4b564f1ba1     512 mq-deadline        0B
ST1000NM0011
└─sdg1      bcache            931.5G
a8513a01-c6be-4bec-b3f9-a5797225d304     512 mq-deadline        0B
  └─bcache4 btrfs             931.5G
76189222-b60d-4402-a7ff-141f057e8574     512                  512B
sdh                           931.5G
                                        512 mq-deadline        0B
WDC_WD1002FAEX-00Z3A0
└─sdh1      bcache            931.5G
ffeacab7-ff42-453c-b012-58b119236fa5     512 mq-deadline        0B
  └─bcache5 btrfs             931.5G
76189222-b60d-4402-a7ff-141f057e8574     512                  512B
sdi         btrfs             931.5G
12bcde5c-b3ae-4fa6-8e17-0a4b564f1ba1     512 mq-deadline        0B
WDC_WD1002FAEX-00Y9A0
└─sdi1      bcache            931.5G
f3f4d706-7d73-4b48-a5b3-9802fc0de978     512 mq-deadline        0B
  └─bcache6 btrfs             931.5G
76189222-b60d-4402-a7ff-141f057e8574     512                  512B
sdj         btrfs             931.5G
12bcde5c-b3ae-4fa6-8e17-0a4b564f1ba1    4096 mq-deadline        0B
WDC_WD1003FZEX-00MK2A0
└─sdj1      bcache            931.5G
64d10dda-4ac2-44d4-941a-362ccb5ddbba    4096 mq-deadline        0B
  └─bcache7 btrfs             931.5G
76189222-b60d-4402-a7ff-141f057e8574     512                  512B
sdk         btrfs             931.5G
12bcde5c-b3ae-4fa6-8e17-0a4b564f1ba1     512 mq-deadline        0B
WDC_WD1002FAEX-00Y9A0
└─sdk1      bcache            931.5G
c3ddc718-f700-4360-82c9-7db76114e3f6     512 mq-deadline        0B
  └─bcache8 btrfs             931.5G
76189222-b60d-4402-a7ff-141f057e8574     512                  512B
sdl         btrfs             931.5G
12bcde5c-b3ae-4fa6-8e17-0a4b564f1ba1     512 mq-deadline        0B
WDC_WD1002FAEX-00Z3A0
└─sdl1      bcache            931.5G
2bf5ac80-cdf6-4c0c-9434-bcdc4626abff     512 mq-deadline        0B
  └─bcache9 btrfs             931.5G
76189222-b60d-4402-a7ff-141f057e8574     512                  512B
sdm         iso9660            14.9G
2021-05-08-11-22-02-00                   512 mq-deadline        0B
USB_2.0_FD
├─sdm1      iso9660             717M   100% /run/archiso/bootmnt
2021-05-08-11-22-02-00                   512 mq-deadline        0B
└─sdm2      vfat                1.4M
0A52-44A0                                512 mq-deadline        0B
nvme0n1     linux_raid_member  13.4G
4703551c-4570-b6c8-7dda-991b93b99c9a     512 none             512B
INTEL MEMPEK1W016GA
└─md127     bcache             13.4G
dfda7dc0-07a4-40bf-b5b8-e3458c181ce4   16384                  512B
  ├─bcache0 btrfs             931.5G
76189222-b60d-4402-a7ff-141f057e8574     512                  512B
  ├─bcache1 btrfs             931.5G
76189222-b60d-4402-a7ff-141f057e8574     512                  512B
  ├─bcache2 btrfs             931.5G
76189222-b60d-4402-a7ff-141f057e8574     512                  512B
  ├─bcache3 btrfs             931.5G
76189222-b60d-4402-a7ff-141f057e8574     512                  512B
  ├─bcache4 btrfs             931.5G
76189222-b60d-4402-a7ff-141f057e8574     512                  512B
  ├─bcache5 btrfs             931.5G
76189222-b60d-4402-a7ff-141f057e8574     512                  512B
  ├─bcache6 btrfs             931.5G
76189222-b60d-4402-a7ff-141f057e8574     512                  512B
  ├─bcache7 btrfs             931.5G
76189222-b60d-4402-a7ff-141f057e8574     512                  512B
  ├─bcache8 btrfs             931.5G
76189222-b60d-4402-a7ff-141f057e8574     512                  512B
  └─bcache9 btrfs             931.5G
76189222-b60d-4402-a7ff-141f057e8574     512                  512B
nvme1n1     linux_raid_member  13.4G
4703551c-4570-b6c8-7dda-991b93b99c9a     512 none             512B
INTEL MEMPEK1W016GA
└─md127     bcache             13.4G
dfda7dc0-07a4-40bf-b5b8-e3458c181ce4   16384                  512B
  ├─bcache0 btrfs             931.5G
76189222-b60d-4402-a7ff-141f057e8574     512                  512B
  ├─bcache1 btrfs             931.5G
76189222-b60d-4402-a7ff-141f057e8574     512                  512B
  ├─bcache2 btrfs             931.5G
76189222-b60d-4402-a7ff-141f057e8574     512                  512B
  ├─bcache3 btrfs             931.5G
76189222-b60d-4402-a7ff-141f057e8574     512                  512B
  ├─bcache4 btrfs             931.5G
76189222-b60d-4402-a7ff-141f057e8574     512                  512B
  ├─bcache5 btrfs             931.5G
76189222-b60d-4402-a7ff-141f057e8574     512                  512B
  ├─bcache6 btrfs             931.5G
76189222-b60d-4402-a7ff-141f057e8574     512                  512B
  ├─bcache7 btrfs             931.5G
76189222-b60d-4402-a7ff-141f057e8574     512                  512B
  ├─bcache8 btrfs             931.5G
76189222-b60d-4402-a7ff-141f057e8574     512                  512B
  └─bcache9 btrfs             931.5G
76189222-b60d-4402-a7ff-141f057e8574     512                  512B

On Sun, Jun 20, 2021 at 9:09 PM Chris Murphy <lists@colorremedies.com> wrote:
>
> On Sun, Jun 20, 2021 at 2:38 PM Nathan Dehnel <ncdehnel@gmail.com> wrote:
> >
> > A machine failed to boot, so I tried to mount its root partition from
> > systemrescuecd, which failed:
> >
> > [ 5404.240019] BTRFS info (device bcache3): disk space caching is enabled
> > [ 5404.240022] BTRFS info (device bcache3): has skinny extents
> > [ 5404.243195] BTRFS error (device bcache3): parent transid verify
> > failed on 3004631449600 wanted 1420882 found 1420435
> > [ 5404.243279] BTRFS error (device bcache3): parent transid verify
> > failed on 3004631449600 wanted 1420882 found 1420435
> > [ 5404.243362] BTRFS error (device bcache3): parent transid verify
> > failed on 3004631449600 wanted 1420882 found 1420435
> > [ 5404.243432] BTRFS error (device bcache3): parent transid verify
> > failed on 3004631449600 wanted 1420882 found 1420435
> > [ 5404.243435] BTRFS warning (device bcache3): couldn't read tree root
> > [ 5404.244114] BTRFS error (device bcache3): open_ctree failed
> >
> > btrfs rescue super-recover -v /dev/bcache0 returned this:
> >
> > parent transid verify failed on 3004631449600 wanted 1420882 found 1420435
> > parent transid verify failed on 3004631449600 wanted 1420882 found 1420435
> > parent transid verify failed on 3004631449600 wanted 1420882 found 1420435
> > parent transid verify failed on 3004631449600 wanted 1420882 found 1420435
> > parent transid verify failed on 3004631449600 wanted 1420882 found 1420435
> > Ignoring transid failure
> > ERROR: could not setup extent tree
> > Failed to recover bad superblocks
> >
> > uname -a:
> >
> > Linux sysrescue 5.10.34-1-lts #1 SMP Sun, 02 May 2021 12:41:09 +0000
> > x86_64 GNU/Linux
> >
> > btrfs --version:
> >
> > btrfs-progs v5.10.1
> >
> > btrfs fi show:
> >
> > Label: none  uuid: 76189222-b60d-4402-a7ff-141f057e8574
> >         Total devices 10 FS bytes used 1.50TiB
> >         devid    1 size 931.51GiB used 311.03GiB path /dev/bcache3
> >         devid    2 size 931.51GiB used 311.00GiB path /dev/bcache2
> >         devid    3 size 931.51GiB used 311.00GiB path /dev/bcache1
> >         devid    4 size 931.51GiB used 311.00GiB path /dev/bcache0
> >         devid    5 size 931.51GiB used 311.00GiB path /dev/bcache4
> >         devid    6 size 931.51GiB used 311.00GiB path /dev/bcache8
> >         devid    7 size 931.51GiB used 311.00GiB path /dev/bcache6
> >         devid    8 size 931.51GiB used 311.03GiB path /dev/bcache9
> >         devid    9 size 931.51GiB used 311.03GiB path /dev/bcache7
> >         devid   10 size 931.51GiB used 311.03GiB path /dev/bcache5
> >
> > Is this filesystem recoverable?
> >> (Sorry, re-sending because I forgot to add a subject)
>
> Definitely don't write any irreversible changes, such as a repair
> attempt, to anything until you understand what what wrong or it'll
> make recovery harder or impossible.
>
> Was bcache in write back or write through mode?
>
> What's the configuration? Can you supply something like
>
> lsblk -o NAME,FSTYPE,SIZE,FSUSE%,MOUNTPOINT,UUID,MIN-IO,SCHED,DISC-GRAN,MODEL
>
>
>
> --
> Chris Murphy

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

* Re: Recover from "couldn't read tree root"?
  2021-06-20 21:19 ` Chris Murphy
@ 2021-06-20 21:48   ` Nathan Dehnel
  0 siblings, 0 replies; 8+ messages in thread
From: Nathan Dehnel @ 2021-06-20 21:48 UTC (permalink / raw)
  To: Chris Murphy; +Cc: Btrfs BTRFS

>I suggest searching logs since the last time this file system was
working, because the above error is indicating a problem that's
already happened and what we need to know is what happened, if
possible. Something like this:

>journalctl --since=-5d -k -o short-monotonic --no-hostname | grep
"Linux version\| ata\|bcache\|Btrfs\|BTRFS\|] hd\| scsi\| sd\| sdhci\|
mmc\| nvme\| usb\| vd"

Unfortunately I put my journal logs in a different subvolume so they
wouldn't bloat my snapshots so they weren't included in my backups.

>So I'm gonna guess a single shared SSD, which is a single point of failure, and
it's spitting out garbage or zeros.
It's 2 SSDs in mdraid RAID10.

>But I'm not even close to a bcache expert so you might want to ask bcache developers how to figure out
what state bcache is in and whether and how to safely decouple it from
the backing drives so that you can engage in recovery attempts.
They didn't respond the last couple of times I've asked a question on
their irc or mailing list.

On Sun, Jun 20, 2021 at 9:19 PM Chris Murphy <lists@colorremedies.com> wrote:
>
> On Sun, Jun 20, 2021 at 2:38 PM Nathan Dehnel <ncdehnel@gmail.com> wrote:
> >
> > A machine failed to boot, so I tried to mount its root partition from
> > systemrescuecd, which failed:
> >
> > [ 5404.240019] BTRFS info (device bcache3): disk space caching is enabled
> > [ 5404.240022] BTRFS info (device bcache3): has skinny extents
> > [ 5404.243195] BTRFS error (device bcache3): parent transid verify
> > failed on 3004631449600 wanted 1420882 found 1420435
> > [ 5404.243279] BTRFS error (device bcache3): parent transid verify
> > failed on 3004631449600 wanted 1420882 found 1420435
> > [ 5404.243362] BTRFS error (device bcache3): parent transid verify
> > failed on 3004631449600 wanted 1420882 found 1420435
> > [ 5404.243432] BTRFS error (device bcache3): parent transid verify
> > failed on 3004631449600 wanted 1420882 found 1420435
> > [ 5404.243435] BTRFS warning (device bcache3): couldn't read tree root
> > [ 5404.244114] BTRFS error (device bcache3): open_ctree failed
>
> This is generally bad, and means some lower layer did something wrong,
> such as getting write order incorrect, i.e. failing to properly honor
> flush/fua. Recovery can be difficult and take a while.
> https://btrfs.wiki.kernel.org/index.php/Problem_FAQ#parent_transid_verify_failed
>
> I suggest searching logs since the last time this file system was
> working, because the above error is indicating a problem that's
> already happened and what we need to know is what happened, if
> possible. Something like this:
>
> journalctl --since=-5d -k -o short-monotonic --no-hostname | grep
> "Linux version\| ata\|bcache\|Btrfs\|BTRFS\|] hd\| scsi\| sd\| sdhci\|
> mmc\| nvme\| usb\| vd"
>
>
>
> > btrfs rescue super-recover -v /dev/bcache0 returned this:
> >
> > parent transid verify failed on 3004631449600 wanted 1420882 found 1420435
> > parent transid verify failed on 3004631449600 wanted 1420882 found 1420435
> > parent transid verify failed on 3004631449600 wanted 1420882 found 1420435
> > parent transid verify failed on 3004631449600 wanted 1420882 found 1420435
> > parent transid verify failed on 3004631449600 wanted 1420882 found 1420435
> > Ignoring transid failure
> > ERROR: could not setup extent tree
> > Failed to recover bad superblocks
>
> OK something is really wrong if you're not able to see a single
> superblock on any of the bcache devices. Every member device has  3
> super blocks, given the sizes you've provided. For there to not be a
> single one is a spectacular failure as if the bcache cache device
> isn't returning correct information for any of them. So I'm gonna
> guess a single shared SSD, which is a single point of failure, and
> it's spitting out garbage or zeros. But I'm not even close to a bcache
> expert so you might want to ask bcache developers how to figure out
> what state bcache is in and whether and how to safely decouple it from
> the backing drives so that you can engage in recovery attempts.
>
> If bcache mode is write through, there's a chance the backing drives
> have valid btrfs metadata, and it's just that on read the SSD is
> returning bogus information.
>
>
>
>
>
> --
> Chris Murphy

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

* Re: Recover from "couldn't read tree root"?
  2021-06-20 21:31   ` Nathan Dehnel
@ 2021-06-20 22:19     ` Chris Murphy
  2021-06-20 22:53     ` Chris Murphy
  1 sibling, 0 replies; 8+ messages in thread
From: Chris Murphy @ 2021-06-20 22:19 UTC (permalink / raw)
  To: Nathan Dehnel; +Cc: Chris Murphy, Btrfs BTRFS

The two Intel MEMPEK1W016GA's are in raid10, but you aren't really
protected unless the drive reports a discrete read error. Only in that
case would the md driver know to use the mirror copy. While it
certainly should sooner report a read error than return zeros or
garbage, this is the situation we're in with SSDs. Is that what's
happening? *shrug* Needs more investigation. But it's at either the
bcache or mdadm level, near as I can tell.

Was there a crash or power failure while using this array by any chance?


Chris Murphy

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

* Re: Recover from "couldn't read tree root"?
  2021-06-20 21:31   ` Nathan Dehnel
  2021-06-20 22:19     ` Chris Murphy
@ 2021-06-20 22:53     ` Chris Murphy
  2021-06-22  3:26       ` Nathan Dehnel
  1 sibling, 1 reply; 8+ messages in thread
From: Chris Murphy @ 2021-06-20 22:53 UTC (permalink / raw)
  To: Nathan Dehnel; +Cc: Chris Murphy, Btrfs BTRFS

On Sun, Jun 20, 2021 at 3:31 PM Nathan Dehnel <ncdehnel@gmail.com> wrote:
>
> >Was bcache in write back or write through mode?
> Writeback.

Ok that's bad in this configuration because it means all the writes go
to the SSD and could be there for minutes, hours, days, or longer.
That means it's even possible the current supers are only on the SSDs,
as well as other critical btrfs metadata.

My best guess now is to assume one of the drives is bad and spewing
garbage or zeros. And assemble the array degraded with just one SSD
drive, and see if you can mount. If not, then it's the other SSD you
need to assemble degraded. There's a way to set a drive manually as
faulty so it won't assemble; I also thought of using sysfs but on my
own system, /sys/block/nvme0n1/device/delete does not exist like it
does for SATA SSDs.

Next you have to wrestle with this dilemma. If you pick the bad SSD,
you don't want bcache flushing anything from it to your HDDs or it'll
just corrupt them, right? if you pick the good SSD, you actually do
want bcache to flush it all to the drives, so they're in a good state
and you can optionally decouple the SSD entirely so that you're left
with just the individual drives again.

I think you might want to use 'blockdev --setro' on all the block
devices, SSD and HDD, to prevent any changes. You might get some
complaints from bcache if it can't write to HDDs or even to the SSDs,
so that might look like you've picked the bad SSD. But the real test
is if you can mount the btrfs. Try that with 'mount -o
ro,nologreplay,usebackuproot' and if you can at least get that far and
do some basic navigation, that's probably the good SSD. If you still
get mount failure, it's probably the bad one.

If you get a successful ro mount, I'd take advantage of it and backup
anything important. Just get it out now. And then you can try it all
again with everything read write; but with the bad SSD still disabled
and md array assemble degraded with the good SSD; and see if you can
mount read-write again. You need to be read write at the block device
layer to get bcache to flush SSD state to the drives, which I think is
done by setting the mode to writethrough and then waiting until
bcache/state is clean. HDDs need to be writable but btrfs doesn't need
to be mounted for this.

The other possibility is that there some bad data on both SSDs, in
which case it fails and chances are the btrfs is toast.


-- 
Chris Murphy

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

* Re: Recover from "couldn't read tree root"?
  2021-06-20 22:53     ` Chris Murphy
@ 2021-06-22  3:26       ` Nathan Dehnel
  0 siblings, 0 replies; 8+ messages in thread
From: Nathan Dehnel @ 2021-06-22  3:26 UTC (permalink / raw)
  To: Chris Murphy; +Cc: Btrfs BTRFS

I couldn't figure out how to salvage the filesystem, so I wiped it. Oh well.


On Sun, Jun 20, 2021 at 5:53 PM Chris Murphy <lists@colorremedies.com> wrote:
>
> On Sun, Jun 20, 2021 at 3:31 PM Nathan Dehnel <ncdehnel@gmail.com> wrote:
> >
> > >Was bcache in write back or write through mode?
> > Writeback.
>
> Ok that's bad in this configuration because it means all the writes go
> to the SSD and could be there for minutes, hours, days, or longer.
> That means it's even possible the current supers are only on the SSDs,
> as well as other critical btrfs metadata.
>
> My best guess now is to assume one of the drives is bad and spewing
> garbage or zeros. And assemble the array degraded with just one SSD
> drive, and see if you can mount. If not, then it's the other SSD you
> need to assemble degraded. There's a way to set a drive manually as
> faulty so it won't assemble; I also thought of using sysfs but on my
> own system, /sys/block/nvme0n1/device/delete does not exist like it
> does for SATA SSDs.
>
> Next you have to wrestle with this dilemma. If you pick the bad SSD,
> you don't want bcache flushing anything from it to your HDDs or it'll
> just corrupt them, right? if you pick the good SSD, you actually do
> want bcache to flush it all to the drives, so they're in a good state
> and you can optionally decouple the SSD entirely so that you're left
> with just the individual drives again.
>
> I think you might want to use 'blockdev --setro' on all the block
> devices, SSD and HDD, to prevent any changes. You might get some
> complaints from bcache if it can't write to HDDs or even to the SSDs,
> so that might look like you've picked the bad SSD. But the real test
> is if you can mount the btrfs. Try that with 'mount -o
> ro,nologreplay,usebackuproot' and if you can at least get that far and
> do some basic navigation, that's probably the good SSD. If you still
> get mount failure, it's probably the bad one.
>
> If you get a successful ro mount, I'd take advantage of it and backup
> anything important. Just get it out now. And then you can try it all
> again with everything read write; but with the bad SSD still disabled
> and md array assemble degraded with the good SSD; and see if you can
> mount read-write again. You need to be read write at the block device
> layer to get bcache to flush SSD state to the drives, which I think is
> done by setting the mode to writethrough and then waiting until
> bcache/state is clean. HDDs need to be writable but btrfs doesn't need
> to be mounted for this.
>
> The other possibility is that there some bad data on both SSDs, in
> which case it fails and chances are the btrfs is toast.
>
>
> --
> Chris Murphy

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

end of thread, other threads:[~2021-06-22  3:26 UTC | newest]

Thread overview: 8+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-06-20 20:37 Recover from "couldn't read tree root"? Nathan Dehnel
2021-06-20 21:09 ` Chris Murphy
2021-06-20 21:31   ` Nathan Dehnel
2021-06-20 22:19     ` Chris Murphy
2021-06-20 22:53     ` Chris Murphy
2021-06-22  3:26       ` Nathan Dehnel
2021-06-20 21:19 ` Chris Murphy
2021-06-20 21:48   ` Nathan Dehnel

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.