Recently I've had to do some low-level surgery on some disks that have gone
bad in order to recover some of the data.
This has required me to zero out blocks on disk, patch up the affected
files, and pull the data off the disks.
I was toying around the with fsdb tool, but couldn't figure out a way to map
blocks to inodes (although the 'blocks' command does the mapping in the
other direction quite nicely.)
Poking around I found that someone has added this functionality (via a
"findblk" command) to NetBSD's fsdb (back in 2003!), which I have grafted
onto a 4.x box here with relative ease.