Thank you so much.Soumya,you make me more clear about the logic of the code.
I used to wonder the code was to handle the last resolve case.However i followed the "nfs3_fh_resolve_entry_hard" and I thought it would get the ret == -2 case and went into the "nfs3_lookup_op" branch,and finally call the "nfs3_call_resume".Seems has no chance to call "nfs3_fh_resolve_entry_lookup_cbk" because it was a LOOKUP operation.Am i wrong again? :-) 2016-11-16 21:45 GMT+08:00 Soumya Koduri <[email protected]>: > > > 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 <[email protected] >> <mailto:[email protected]>> 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 >> [email protected] <mailto:[email protected]> >> http://www.gluster.org/mailman/listinfo/gluster-users >> <http://www.gluster.org/mailman/listinfo/gluster-users> >> >> >> >> >> -- >> Pranith >> >
_______________________________________________ Gluster-users mailing list [email protected] http://www.gluster.org/mailman/listinfo/gluster-users
