On 2012-11-26 15:15, The OP wrote:
How can one remove a directory containing corrupt files or a corrupt file
itself? For me rm just gives input/output error.
I believe you can get rid of the corrupt files by overwriting them.
In my case of corrupted files, I dd'ed the corrupt blocks from a backup
source into the right spot of the file. Overall this released the corrupt
blocks from the pool and allowed them to get freed (or perhaps leaked in
case of that bug I've stepped onto).
Trying to free the block can get your pool into trouble or panics,
depending on the nature of the corruption, though (in my case, DDT
was trying to release a block that was not entered into the DDT).
If this happens, your next best bet would be to trace where the
error happens, invent a patch (such as letting it possibly leak
away) and compile your own kernel to clean up the pool.
Of course, it is also possible that the block would go away (if it
is not referenced also by snapshots/clones/dedup), and such drastic
measures won't be needed.
zfs-discuss mailing list