[Gluster-users] question about nfs lookup result

Soumya Koduri skoduri at redhat.com
Wed Nov 16 14:30:13 UTC 2016



On 11/16/2016 07:38 PM, jin deng wrote:
> 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? :-)

You are right :)...for LOOKUP fop, we go to "nfs3_call_resume" which is 
nfs3_lookup_resume and the callback is "nfs3svc_lookup_cbk" where in we 
are not updating cs->stbuf. But we seem to be constructing lookup reply 
(nfs3_lookup_reply) using 'buf' directly returned for the child entry 
instead of using cs->stbuf. Maybe that's the reason it was working well 
till now.
FYI - there was an issue in the lookup logic code path which we fixed as 
part of http://review.gluster.org/14911 . I will not be surprised if 
there are any more lurking around :)

Thanks,
Soumya

>
>
>
> 2016-11-16 21:45 GMT+08:00 Soumya Koduri <skoduri at redhat.com
> <mailto:skoduri at redhat.com>>:
>
>
>
>     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>
>         <mailto: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>
>         <mailto: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>
>             <http://www.gluster.org/mailman/listinfo/gluster-users
>         <http://www.gluster.org/mailman/listinfo/gluster-users>>
>
>
>
>
>         --
>         Pranith
>
>


More information about the Gluster-users mailing list