Re: Physical Sectors for a File

Brian Gerst (bgerst@quark.vpplus.com)
Wed, 28 Apr 1999 23:48:16 -0400


Malcolm Beattie wrote:
>
> Brian Gerst writes:
> > Yash Shitoot wrote:
> > >
> > > For a driver I am writing, I need to find the physical sectors
> > > for a given file. I know the inode number for that file. Any help/
> > > pointers would be appreciated.
> >
> > Try looking at the source to lilo, that also needs to make a block map
> > of where the kernel image sits on the disk.
>
> I haven't looked at how lilo does it from userland but if he's
> writing a kernel driver I'd have thought the easiest way would be
> int bmap(struct inode *inode, int block);
> which takes an inode and the relative block number within the file
> and returns the absolute block number of the block on the underlying
> block device. It only works for "ordinary" filesystems that support
> the VFS bmap method but that certainly covers things like ext2.
>
> If you can assume that the block number of the block device is the
> "physical" block you're after then you are home free. Otherwise (if
> you're worried about bad block remapping, md, nbd or any other weird
> block device) then you've got more to do.

Doh, I didn't notice he wanted to do this from inside the kernel. Using
bmap should work in this case then.

-- 

Brian Gerst

- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.rutgers.edu Please read the FAQ at http://www.tux.org/lkml/