views:

133

answers:

1

I've been recovering a hard disk using dd_rescue, which provides me a list of all of the device sectors it could not copy due to hardware errors.

I'd like to take that list, and write a tool to give me all of the files that contain these bad sectors so I can delete them. I'm not sure what APIs I can use to do this--essentially i want to get a list of all files on disk and for each file, a list of the ranges of sectors it occupies on disk.

My first guess is that I will iterate over each directory entry on the disk and check to see if the file overlaps one of these bad sectors. Maybe there's a better way.

+1  A: 

There's no API exposed for grubbing through HFS+ filesystems, but the source for the filesystem is available from Apple as part of the XNU kernel. Also check out the hfsdebug tool which might help to understand the fs.

Graham Lee
Thanks for the reply, Graham. I had discovered a feature of hfsdebug that will not only help me understand the file system, but also help implement a solution to this problem. It is possible to write a (http://www.osxbook.com/blog/2008/07/23/extending-hfsdebug/ "Filter") for hfsdebug. It is pretty much a callback mechanism that will be called as hfsdebug iterates over each directory node. I can compare the blocks taken up by the extents of the file with the blocks in question.
Joey Hagedorn