Restored Btrfs partition not mountable
arnogon opened this issue · 7 comments
I backuped my memory card which contained 1 non-boot Btrfs partition with clonezilla-live-20230426-lunar-amd64 (partclone v0.3.23), and later restored it to the same card. After the restoration the partition is unmountable. I don't believe partclone showed any error when doing the backup.
This is the partclone command used:
partclone.btrfs -z 10485760 -N -L /var/log/partclone.log -c -s /dev/mmcblk0p1 --output - | zstdmt -c -3 > /home/partimag/2023-12-17-14-img/mmcblk0p1.btrfs-ptcl-img.zst 2> /tmp/img_out_err.81j5St
And this is the error message when trying to mount:
user@debian:~$ sudo mount /dev/mmcblk0p1 /media/user/mmcblk0p1
mount: /media/user/mmcblk0p1: can't read superblock on /dev/mmcblk0p1.
dmesg(1) may have more information after failed mount system call.
Hi,
Could you also provide more information? Please let us know:
- Linux kernel
- The error message from dmesg
- The memory card type?
Some suggestions for you to fix the btrfs are:
- run fsck.btrfs
- btrfs scrub
We need more information and hope we can re-produce the same issue to fix the problem.
- Linux kernel: 6.1.0-9-amd64
- dmesg error message
[ 404.019396] mmc0: cannot verify signal voltage switch
[ 404.174237] BTRFS info (device mmcblk0p1): using crc32c (crc32c-intel) checksum algorithm
[ 404.174256] BTRFS info (device mmcblk0p1): using free space tree
[ 404.188430] BTRFS info (device mmcblk0p1): bdev /dev/mmcblk0p1 errs: wr 0, rd 0, flush 0, corrupt 1, gen 0
[ 404.376594] BTRFS info (device mmcblk0p1): enabling ssd optimizations
[ 404.377304] BTRFS info (device mmcblk0p1): checking UUID tree
[ 404.378597] BTRFS critical (device mmcblk0p1): corrupt leaf: root=256 block=192339574784 slot=157 ino=1192291, invalid inode transid: has 23989 expect [0, 23971]
[ 404.378602] BTRFS error (device mmcblk0p1): read time tree block corruption detected on logical 192339574784 mirror 1
[ 404.379701] BTRFS critical (device mmcblk0p1): corrupt leaf: root=256 block=192339574784 slot=157 ino=1192291, invalid inode transid: has 23989 expect [0, 23971]
[ 404.379706] BTRFS error (device mmcblk0p1): read time tree block corruption detected on logical 192339574784 mirror 2
[ 404.380254] BTRFS critical (device mmcblk0p1): corrupt leaf: root=256 block=192339574784 slot=157 ino=1192291, invalid inode transid: has 23989 expect [0, 23971]
- Memory card type: SanDisk Extreme 512GB
- I got a bunch of errors with
btrfs check
:
ref mismatch on [590504206336 131072] extent item 1, found 0
data extent[590504206336, 131072] bytenr mimsmatch, extent item bytenr 590504206336 file item bytenr 0
data extent[590504206336, 131072] referencer count mismatch (root 256 owner 1193734 offset 134012928) wanted 1 have 0
backpointer mismatch on [590504206336 131072]
owner ref check failed [590504206336 131072]
ref mismatch on [590504337408 126976] extent item 1, found 0
data extent[590504337408, 126976] bytenr mimsmatch, extent item bytenr 590504337408 file item bytenr 0
data extent[590504337408, 126976] referencer count mismatch (root 256 owner 1193734 offset 140697600) wanted 1 have 0
backpointer mismatch on [590504337408 126976]
owner ref check failed [590504337408 126976]
ref mismatch on [590504464384 126976] extent item 1, found 0
data extent[590504464384, 126976] bytenr mimsmatch, extent item bytenr 590504464384 file item bytenr 0
data extent[590504464384, 126976] referencer count mismatch (root 256 owner 1193734 offset 140828672) wanted 1 have 0
backpointer mismatch on [590504464384 126976]
owner ref check failed [590504464384 126976]
ref mismatch on [590504591360 135168] extent item 1, found 0
data extent[590504591360, 135168] bytenr mimsmatch, extent item bytenr 590504591360 file item bytenr 0
data extent[590504591360, 135168] referencer count mismatch (root 256 owner 1193734 offset 142213120) wanted 1 have 0
backpointer mismatch on [590504591360 135168]
owner ref check failed [590504591360 135168]
ERROR: errors found in extent allocation tree or chunk allocation
[3/7] checking free space tree
[4/7] checking fs roots
parent transid verify failed on 192339574784 wanted 23952 found 23989
Ignoring transid failure
ERROR: root [256 0] level 0 does not match 2
ERROR: errors found in fs roots
Opening filesystem to check...
Checking filesystem on /dev/mmcblk0p1
UUID: 5690ec67-0e23-4592-a381-01432a8abbb0
found 386806038528 bytes used, error(s) found
total csum bytes: 376931744
total tree bytes: 509050880
total fs tree bytes: 81920
total extent tree bytes: 100974592
btree space waste bytes: 34763056
file data blocks allocated: 5087232
referenced 9916416
And this was with --repair
[1/7] checking root items
Fixed 0 roots.
[2/7] checking extents
ref mismatch on [13631488 12288] extent item 1, found 0
data extent[13631488, 12288] bytenr mimsmatch, extent item bytenr 13631488 file item bytenr 0
data extent[13631488, 12288] referencer count mismatch (root 256 owner 414370 offset 0) wanted 1 have 0
backpointer mismatch on [13631488 12288]
owner ref check failed [13631488 12288]
parent transid verify failed on 192339574784 wanted 23952 found 23989
Ignoring transid failure
ERROR: root [256 0] level 0 does not match 2
failed to repair damaged filesystem, aborting
- I can't run
btrfs scrub
because the device can't be mounted now.
Hi,
I did a small test on Ubuntu 22.04. I create 500 GB btrfs and then copy some files(300G) into btrfs. Creating another empty disk, and then I run partclone clone/restore. The result is good; all files' checksums are correct.
I will do more tests with Linux kernel 6.1.0-9-amd64 and USB disk.
Thank you.
One clarification: I used different systems to backup/restore the data and to mount the memory card. The one I use for backup/restoring was clonezilla-live-20230426-lunar-amd64 (6.2.0-20-generic), and the one I used for mounting the memory card was 6.1.0-9-amd64.
Here are some additional information that might help:
- I used the same setup to backup and restore a Btrfs /home partition (~50GB/160GB used) on a SSD not long ago without any problem. The SSD and the memory card were used on the same machine; however, the /home partition was converted from ext4 while the partition on the memory card was formatted to Btrfs.
- This is what I see in GParted for my ummountable, restored memory card. I can see how much space is used.
- This is the partclone command used according to clonezilla log
partclone.btrfs -z 10485760 -N -L /var/log/partclone.log -c -s /dev/mmcblk0p1 --output - | zstdmt -c -3 > /home/partimag/2023-12-17-14-img/mmcblk0p1.btrfs-ptcl-img.zst 2> /tmp/img_out_err.81j5St
Hi,
I have a new test with a physical hard drive, which is 500 GB (300GB data). The clone and restore results are acceptable without errors.
Could you restore the image to another device?
Okay, I'll try that. I would note though that I tried partclone.restore --restore_raw_file
to restore the .img file and mounted that, and I had the same "can't read superblock" error.
I tried restoring the image on another device but got the same error when mounting it.