You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
Adler Neves 0abd62ea2e fix: docs: add license file 1 year ago
src Initial commit 1 year ago
.gitignore Initial commit 1 year ago
Cargo.lock Initial commit 1 year ago
Cargo.toml Initial commit 1 year ago
LICENSE fix: docs: add license file 1 year ago fix: docs: Grammar and spelling 1 year ago

BTRFS I/O Error Deleter

The problem

I've got a problem: my computer froze while moving a BTRFS partition.

Scrubbing did not fix my problem.

My scenario:

  • Metadata: RAID1C4
  • System: RAID1C4
  • Data: Single
  • Disks: 4

Scrubbing would not be able to fix my problem.

I knew files were already lost, despite them showing up in file manager with cached thumbnails.

Observed behavior

Opening files for reading was not a problem, but reading a block with mismatching CSUM resulted in an I/O Error (OS Error code 5). All the times.

Existing solutions

To remove those references to a content that doesn't exist anymore, ArchWiki, SuperUser, and SuperUser suggested scrubbing, then checking kernel logs (that doesn't include all affected files), and, finally, removing each file.

Running as many scrubs as needed over 2TB data on 80MB/s (at best conditions) hard drives (not SSDs) would take... like... "forever". I don't have such a humongous amount of time.

My solution

After scrubbing once after the disaster and realizing you have unrepairable data on disk, you run this program.

It recursively lists files in a directory, opens and reads each one of them to the end. All files that produce an OS Error with code 5 will be deleted (as its data isn't there anymore).

You need to run this only once.


This code doesn't handle corrupted metadata. (yet)