Pranith Kumar Karampuri
2016-Nov-16 13:08 UTC
[Gluster-users] question about nfs lookup result
Added people who know nfs code. On Wed, Nov 16, 2016 at 6:21 PM, jin deng <cheneydeng88 at gmail.com> wrote:> Hi all, > I'm reading the code of 3.6.9 version and got a question.And I'm not > very familiar with the code,so I have to confirm it(I checked the master > branch,it's same with 3.6.9). > > The question is about the 'lookup' operation of NFS.And i'm with this > code flow: > > nfs3_lookup (nfs3.c) ==> nfs3_fh_resolve_and_resume > ==> nfs3_fh_resolve_root ==> nfs3_fh_resolve_resume > ==> nfs3_fh_resolve_entry ==> nfs3_fh_resolve_entry_hard. > > Now enter the "nfs_entry_loc_fill" and return with -1 which means the > "parent" not found,so we have to do hard resolve about the parent. After > doing a hard resolve,we get into the callback "nfs3_fh_resolve_inode_lookup_cbk".And > the callback has the following code: > > >>> memcpy (&cs->stbuf, buf, sizeof(*buf)); > >>> memcpy (&cs->postparent, buf, sizeof(*postparent)) > > I think we've just done a parent resolve,how could we assign the parent > result into the "stbuf" and "postparent".The later two should be the > information of the child file/directory.Do i made a misunderstand? > > Thanks advance for your help. > > _______________________________________________ > Gluster-users mailing list > Gluster-users at gluster.org > http://www.gluster.org/mailman/listinfo/gluster-users >-- Pranith -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://www.gluster.org/pipermail/gluster-users/attachments/20161116/af0ebb0d/attachment.html>
On 11/16/2016 06:38 PM, Pranith Kumar Karampuri wrote:> Added people who know nfs code. > > On Wed, Nov 16, 2016 at 6:21 PM, jin deng <cheneydeng88 at gmail.com > <mailto:cheneydeng88 at gmail.com>> wrote: > > Hi all, > I'm reading the code of 3.6.9 version and got a question.And I'm > not very familiar with the code,so I have to confirm it(I checked > the master branch,it's same with 3.6.9). > > The question is about the 'lookup' operation of NFS.And i'm with > this code flow: > > nfs3_lookup (nfs3.c) ==> nfs3_fh_resolve_and_resume > ==> nfs3_fh_resolve_root ==> nfs3_fh_resolve_resume > ==> nfs3_fh_resolve_entry ==> nfs3_fh_resolve_entry_hard. > > Now enter the "nfs_entry_loc_fill" and return with -1 which means > the "parent" not found,so we have to do hard resolve about the > parent. After doing a hard resolve,we get into the callback > "nfs3_fh_resolve_inode_lookup_cbk".And the callback has the > following code: > > >>> memcpy (&cs->stbuf, buf, sizeof(*buf)); > >>> memcpy (&cs->postparent, buf, sizeof(*postparent))This must had been done (and required) in case if this was the last entry(/inode) to be looked up.> > I think we've just done a parent resolve,how could we assign the > parent result into the "stbuf" and "postparent".The later two should > be the information of the child file/directory.Do i made a > misunderstand?In case if it was not the last entry we fall through below code in "nfs3_fh_resolve_inode_lookup_cbk" - if (cs->resolventry) nfs3_fh_resolve_entry_hard (cs); Callback is "nfs3_fh_resolve_entry_lookup_cbk()" where in cs->stbuf and cs->postparent get overridden with the values corresponding to the child entry. Thanks, Soumya> > Thanks advance for your help. > > _______________________________________________ > Gluster-users mailing list > Gluster-users at gluster.org <mailto:Gluster-users at gluster.org> > http://www.gluster.org/mailman/listinfo/gluster-users > <http://www.gluster.org/mailman/listinfo/gluster-users> > > > > > -- > Pranith