[Gluster-devel] Inode to Gluster handle

Niels de Vos ndevos at redhat.com
Mon Feb 20 07:34:03 UTC 2017


On Sun, Feb 19, 2017 at 11:05:03PM -0500, Raghavendra Gowdappa wrote:
> Speaking of gluster internals, gluster relies primarily on gfid to identify file-system objects. So, if you've gfid, its easy to do operations on the fs object. In fact fuse mount even allows access to fs objects just by using gfids:
> 
>       --aux-gfid-mount       Enable access to filesystem through gfid directly
> 
> When glusterfs is mounted with the above option, one can access the file/directory using path <glusterfs-mount>/.gfid/<canonicalized-gfid>
> 
> However, with just ino from stat I think it might not be possible to access the fs object. Note the following function, which derives ino from gfid:
> 
> ino_t
> gfid_to_ino (uuid_t gfid)
> {
>         ino_t ino = 0;
>         int32_t i;
> 
>         for (i = 8; i < 16; i++) {
>                 ino <<= 8;
>                 ino += (uint8_t)gfid[i];
>         }
> 
>         return ino;
> }
> 
> As can be seen above first 8 bytes of gfid is *lost*. So, I don't think its possible to derive gfid from ino. Without gfid or path, access to fs object is not possible
> 
> PS: Though I've used the example of fuse, on a high level, the answer is same for gfapi.

gfapi offers glfs_h_extract_handle() and glfs_h_create_from_handle().
Internally these function use the volume-id and gfid, it is not possible
to use the inode#.

  https://github.com/gluster/glusterfs/blob/master/api/src/glfs-handles.h#L278-L289

This is what NFS-Ganesha uses too. A NFS-Client gets a handle (opaque
string) from NFS-Ganesha and keeps it cached in combination with the
inode. When the client access the inode again, it finds the cached
handle and uses that to communicate back to NFS-Ganesha (and properly
NFS-Ganesh server that is, after reboots and all, no server-side caching
of the handle is required).

This is pretty similar to how FUSE works internally as well.

HTH,
Niels


> 
> regards,
> Raghavendra
> 
> ----- Original Message -----
> > From: "chris holcombe" <chris.holcombe at canonical.com>
> > To: gluster-devel at gluster.org
> > Sent: Sunday, February 19, 2017 11:08:16 PM
> > Subject: [Gluster-devel] Inode to Gluster handle
> > 
> > Anyone know how to take an inode number and get a gfapi gluster object
> > from it?  Or possibly even better, convert it into a gluster path?
> > 
> > Thanks,
> > Chris
> > _______________________________________________
> > Gluster-devel mailing list
> > Gluster-devel at gluster.org
> > http://lists.gluster.org/mailman/listinfo/gluster-devel
> > 
> _______________________________________________
> Gluster-devel mailing list
> Gluster-devel at gluster.org
> http://lists.gluster.org/mailman/listinfo/gluster-devel
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 801 bytes
Desc: not available
URL: <http://lists.gluster.org/pipermail/gluster-devel/attachments/20170220/296ab5ac/attachment.sig>


More information about the Gluster-devel mailing list