Is there way to get filename for specific LBA?

Doug Hardie bc979 at lafn.org
Thu Sep 1 06:57:18 UTC 2011


On 31 August 2011, at 20:50, Carl Johnson wrote:

> perryh at pluto.rain.com writes:
> 
>> Robert Bonomi <bonomi at mail.r-bonomi.com> wrote:
>> 
>>>> Aug 31 05:13:24 da kernel: ad6: WARNING - READ_DMA UDMA ICRC
>>>> error (retrying request) LBA=107491647
>>>> ... I looked at bsdlabel a   it's partition f, /home. But what
>>>> is the file name?
>>> 
>>> There's *no* easy way to find out.  You'll have to grovel through
>>> all the filesystem metadata, and the layers of index blocks for
>>> every file until you find the 'rgiht' one.
>> 
>> This is what "icheck -B" was for, but icheck(8) no longer exists and
>> that particular bit of functionality does not seem to be provided in
>> fsck(8).
>> 
>> One current userland utility (other than fsck) which does know
>> how to grovel through the metadata and index blocks is dump(8),
>> but you'd have to hack on it to report which inode was using a
>> particular block.
> 
> It looks like the best bet would be fsdb, assuming that it is a UFS
> file system.  That does have a 'findblk' command to find a file
> containing a block, but you would need to calculate the block offset in
> the filesystem first.  It doesn't look like it would be easy, as was
> said earlier.

I created a utility some years ago that did that for UFS.  I believe it works for UFS2 but haven't verified it.  If you want to try it, send me a note and I'll ship you the code direct.

-- Doug


More information about the freebsd-questions mailing list