[...] > [13984.341838] BTRFS info (device sdc2): allowing degraded mounts > [13984.341844] BTRFS info (device sdc2): disk space caching is enabled > [13984.341846] BTRFS: has skinny extents > [13984.538637] BTRFS critical (device sdc2): corrupt leaf, bad key > order: block=6513625202688,root=1, slot=68 [13984.546327] BTRFS > critical (device sdc2): corrupt leaf, bad key order: > block=6513625202688,root=1, slot=68 [13984.552233] BTRFS: Failed to > read block groups: -5 [13984.585375] BTRFS: open_ctree failed > [13997.313514] BTRFS info (device sdb2): allowing degraded mounts > [13997.313520] BTRFS info (device sdb2): disk space caching is enabled > [13997.313522] BTRFS: has skinny extents [13997.522838] BTRFS critical > (device sdb2): corrupt leaf, bad key order: block=6513625202688,root=1, > slot=68 [13997.530175] BTRFS critical (device sdb2): corrupt leaf, bad > key order: block=6513625202688,root=1, slot=68 [13997.538289] BTRFS: > Failed to read block groups: -5 [13997.582019] BTRFS: open_ctree failed > > >> >> [...] >> > > So I can't mount either disk as ro and I can't afford another drive > to store the data. > > I can confirm that I can get at least a subset of the data off the > drives via btrfs-restore. (In fact I already restored the only chunk of > data that's newer than the old disk set AND not easily recreated, which > makes the whole endeavour a bit less nerve-wracking.) > > As I see it, my best course of action right now is wiping one of the > two disks and then using btrfs restore to copy the data off the other > disk onto the now blank one. I'd expect to get back a large percentage > of the inaccessible data that way. That is unless someone tells me > there's an easy fix for the "corrupt leaf, bad key order" fault and > I've been chasing ghosts the whole time. I had once this error: BTRFS critical (device sdf1): corrupt leaf, slot offset bad: block=77130973184,root=1, slot=150
Not the same, but the 'corrupt leaf' part was due to memory module bit-failures I had some time ago. At least I haven't seen these kind of errors in other btrfs fs failure cases. I my case, no raid profiles, and I could fix it with --repair. It also might be that your 'corrupt leaf,...' error is caused by the earlier --repair action, otherwise I wouldn't know from experience how to fix it. If you think btrfs raid (I/O)fault handling etc is not good enough yet, instead of raid1, you might consider 2x single (dup for metadata), with 1 the main/master fs and the other one the slave fs, created by send | receive (incremental). If you scrub both on regular basis, email or so the error cases, you can act if something is wrong. And every now and then do a brute-force diff to verify that contents of both filesystems (snapshots) are still the same. -- To unsubscribe from this list: send the line "unsubscribe linux-btrfs" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html