Re: how can i get hold of a file inode ?

From: BenHanokh Gabriel (gabriel@SANgate.com)
Date: Tue Jul 25 2000 - 09:15:18 EST


Malcolm Beattie wrote:

> BenHanokh Gabriel writes:
> > i need to find what physical blocks a file occuiped on disk.
> > so i have to find the file's inode and pass it as an argument to the vfs method
> > - bmap.
>
> No you don't, you can persuade the kernel to do it for you.

>
> #include <linux/fs.h>
> ...
> int block;
> ...
> fd = open(.....);
>
> block = get_logical_blocknum();
> if (ioctl(fd, FIBMAP, &block) == 0) {
> /* block now holds "physical" block number */
> }
>

sound good, is this ioctl simply calling bmap for me ?
where can i find documantion about this ioctl( e.g. sparse-files

>
> You need CAP_SYS_RAWIO to do this. Note the

sorry, i don't understand what you mean with CAP_SYS_RAWIO

>
> #include <linux/fs.h>
> which shouts "I'm not portable" to the entire world.

i'm aware to this, but something like this can never be done in a portable way.

> Note also that
> knowing the "physical" block number is often not what you want (even
> if you think you do) and that I've been putting scare quotes around
> "physical" because the device might actually be a logical device (e.g.
> LVM or RAID md where the physical block number isn't really physical)

i'm aware to this as well

> or it may be a real disk but the block has been transparently remapped
> elsewhere by the firmware or probably various other gotchas.
>

do you mean that a special-purpose hardware is being used as a proxy to the disk, or
that this is a feature available in a "normal" hard drives?

>
> --Malcolm
>
> --
> Malcolm Beattie <mbeattie@sable.ox.ac.uk>
> Unix Systems Programmer
> Oxford University Computing Services

THX ALOTTTT you have been of a great help

/gabriel

-
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/



This archive was generated by hypermail 2b29 : Mon Jul 31 2000 - 21:00:19 EST