damaged btrfs: Howto repair ?

I have a tumbleweed root filesystem , which gives the following errors when running btrfs check on it :


checking extents
checking free space cache
checking fs roots
root 259 inode 331345 errors 1000, some csum missing
root 259 inode 332545 errors 1000, some csum missing
root 259 inode 6555940 errors 1000, some csum missing
root 453 inode 331345 errors 1000, some csum missing
root 453 inode 332545 errors 1000, some csum missing
root 453 inode 6555940 errors 1000, some csum missing
root 454 inode 331345 errors 1000, some csum missing
root 454 inode 332545 errors 1000, some csum missing
root 454 inode 6555940 errors 1000, some csum missing
root 455 inode 331345 errors 1000, some csum missing
root 455 inode 332545 errors 1000, some csum missing
root 455 inode 6555940 errors 1000, some csum missing
root 456 inode 331345 errors 1000, some csum missing
root 456 inode 332545 errors 1000, some csum missing
root 456 inode 6555940 errors 1000, some csum missing
root 457 inode 331345 errors 1000, some csum missing
root 457 inode 332545 errors 1000, some csum missing
root 457 inode 6555940 errors 1000, some csum missing
root 458 inode 331345 errors 1000, some csum missing
root 458 inode 332545 errors 1000, some csum missing
root 458 inode 6555940 errors 1000, some csum missing
root 459 inode 331345 errors 1000, some csum missing
root 459 inode 332545 errors 1000, some csum missing
root 459 inode 6555940 errors 1000, some csum missing
root 460 inode 331345 errors 1000, some csum missing
root 460 inode 332545 errors 1000, some csum missing
root 460 inode 6555940 errors 1000, some csum missing
root 461 inode 331345 errors 1000, some csum missing
root 461 inode 332545 errors 1000, some csum missing
root 461 inode 6555940 errors 1000, some csum missing
root 462 inode 331345 errors 1000, some csum missing
root 462 inode 332545 errors 1000, some csum missing
root 462 inode 6555940 errors 1000, some csum missing
root 463 inode 331345 errors 1000, some csum missing
root 463 inode 332545 errors 1000, some csum missing
root 463 inode 6555940 errors 1000, some csum missing
root 464 inode 331345 errors 1000, some csum missing
root 464 inode 332545 errors 1000, some csum missing
root 464 inode 6555940 errors 1000, some csum missing
root 465 inode 331345 errors 1000, some csum missing
root 465 inode 332545 errors 1000, some csum missing
root 465 inode 6555940 errors 1000, some csum missing
root 466 inode 331345 errors 1000, some csum missing
root 466 inode 332545 errors 1000, some csum missing
root 466 inode 6555940 errors 1000, some csum missing
root 467 inode 331345 errors 1000, some csum missing
root 467 inode 332545 errors 1000, some csum missing
root 467 inode 6555940 errors 1000, some csum missing
root 468 inode 331345 errors 1000, some csum missing
root 468 inode 332545 errors 1000, some csum missing
root 468 inode 6555940 errors 1000, some csum missing
root 469 inode 331345 errors 1000, some csum missing
root 469 inode 332545 errors 1000, some csum missing
root 469 inode 6555940 errors 1000, some csum missing
root 470 inode 331345 errors 1000, some csum missing
root 470 inode 332545 errors 1000, some csum missing
root 470 inode 6555940 errors 1000, some csum missing
root 471 inode 331345 errors 1000, some csum missing
root 471 inode 332545 errors 1000, some csum missing
root 471 inode 6555940 errors 1000, some csum missing
root 472 inode 331345 errors 1000, some csum missing
root 472 inode 332545 errors 1000, some csum missing
root 472 inode 6555940 errors 1000, some csum missing
Checking filesystem on /dev/system-nvme/root_factory
UUID: a4a69c17-1731-4c09-a940-83fdfb8ac4d7
cache and super generation don't match, space cache will be invalidated
found 32283254784 bytes used err is 1
total csum bytes: 29403704
total tree bytes: 1263304704
total fs tree bytes: 1155432448
total extent tree bytes: 63569920
btree space waste bytes: 187736430
file data blocks allocated: 52426174464
 referenced 43335733248

btrfs check --repair doesn’t seem to beable ro repair it:

checking extents
Fixed 0 roots.
checking free space cache
checking fs roots
root 259 inode 331345 errors 1000, some csum missing
root 259 inode 332545 errors 1000, some csum missing
root 259 inode 6555940 errors 1000, some csum missing
root 453 inode 331345 errors 1000, some csum missing
root 453 inode 332545 errors 1000, some csum missing
root 453 inode 6555940 errors 1000, some csum missing
root 454 inode 331345 errors 1000, some csum missing
root 454 inode 332545 errors 1000, some csum missing
root 454 inode 6555940 errors 1000, some csum missing
root 455 inode 331345 errors 1000, some csum missing
root 455 inode 332545 errors 1000, some csum missing
root 455 inode 6555940 errors 1000, some csum missing
root 456 inode 331345 errors 1000, some csum missing
root 456 inode 332545 errors 1000, some csum missing
root 456 inode 6555940 errors 1000, some csum missing
root 457 inode 331345 errors 1000, some csum missing
root 457 inode 332545 errors 1000, some csum missing
root 457 inode 6555940 errors 1000, some csum missing
root 458 inode 331345 errors 1000, some csum missing
root 458 inode 332545 errors 1000, some csum missing
root 458 inode 6555940 errors 1000, some csum missing
root 459 inode 331345 errors 1000, some csum missing
root 459 inode 332545 errors 1000, some csum missing
root 459 inode 6555940 errors 1000, some csum missing
root 460 inode 331345 errors 1000, some csum missing
root 460 inode 332545 errors 1000, some csum missing
root 460 inode 6555940 errors 1000, some csum missing
root 461 inode 331345 errors 1000, some csum missing
root 461 inode 332545 errors 1000, some csum missing
root 461 inode 6555940 errors 1000, some csum missing
root 462 inode 331345 errors 1000, some csum missing
root 462 inode 332545 errors 1000, some csum missing
root 462 inode 6555940 errors 1000, some csum missing
root 463 inode 331345 errors 1000, some csum missing
root 463 inode 332545 errors 1000, some csum missing
root 463 inode 6555940 errors 1000, some csum missing
root 464 inode 331345 errors 1000, some csum missing
root 464 inode 332545 errors 1000, some csum missing
root 464 inode 6555940 errors 1000, some csum missing
root 465 inode 331345 errors 1000, some csum missing
root 465 inode 332545 errors 1000, some csum missing
root 465 inode 6555940 errors 1000, some csum missing
root 466 inode 331345 errors 1000, some csum missing
root 466 inode 332545 errors 1000, some csum missing
root 466 inode 6555940 errors 1000, some csum missing
root 467 inode 331345 errors 1000, some csum missing
root 467 inode 332545 errors 1000, some csum missing
root 467 inode 6555940 errors 1000, some csum missing
root 468 inode 331345 errors 1000, some csum missing
root 468 inode 332545 errors 1000, some csum missing
root 468 inode 6555940 errors 1000, some csum missing
root 469 inode 331345 errors 1000, some csum missing
root 469 inode 332545 errors 1000, some csum missing
root 469 inode 6555940 errors 1000, some csum missing
root 470 inode 331345 errors 1000, some csum missing
root 470 inode 332545 errors 1000, some csum missing
root 470 inode 6555940 errors 1000, some csum missing
root 471 inode 331345 errors 1000, some csum missing
root 471 inode 332545 errors 1000, some csum missing
root 471 inode 6555940 errors 1000, some csum missing
root 472 inode 331345 errors 1000, some csum missing
root 472 inode 332545 errors 1000, some csum missing
root 472 inode 6555940 errors 1000, some csum missing
checking csums
checking root refs
checking quota groups
ERROR: out of memory
ERROR: Loading qgroups from disk: -2
extent buffer leak: start 27953856512 len 16384
enabling repair mode
Checking filesystem on /dev/system-nvme/root_factory
UUID: a4a69c17-1731-4c09-a940-83fdfb8ac4d7
cache and super generation don't match, space cache will be invalidated
found 32283254784 bytes used err is -2
total csum bytes: 29403704
total tree bytes: 1263304704
total fs tree bytes: 1155432448
total extent tree bytes: 63569920
btree space waste bytes: 187736430
file data blocks allocated: 52426174464
 referenced 43335733248

And the “safe” btrfs check --qgroup-report fails with “out of memory” despite the filessystem is not large.
btrfs filesystem df reports :
Data, single: total=47.47GiB, used=28.89GiB
System, single: total=32.00MiB, used=16.00KiB
Metadata, single: total=2.50GiB, used=1.18GiB
GlobalReserve, single: total=512.00MiB, used=0.00B

and free shows before that try
total used free shared buffers cached
Mem: 32889064 4300684 28588380 61848 7520 1622436
-/+ buffers/cache: 2670728 30218336
Swap: 41943036 0 41943036

What’s the right way to fix the problems on that filesystem ?

Maybe someone else will have a different suggestion,
But in other similar situations I’ve been in, the only solution has been to do a <file> based backup and restore (to a new partition).

Note that clone based backups will just restore all your problems, so it has to be a file based backup.

Hopefully you’ve already done some kind of backup already, there’s always a significant risk when repairing a file system, typically losing at least some files.

TSU

You will likely have more luck posting on linux-btrfs@vger.kernel.org. You did not say whether you have actual problem besides btrfsck output, and this output may also be false positive.

i see no info of how the situation arose, the indications of error, the results of btrfs scrub or why you started with what is recommended as a last resort (btrfs check repair)