Hello, Poorinima and Soumya,

Thanks for your kind reply.

As you said, for the "first" lookup(called in fuse_first_lookup), xdata will be 
set "gfid-req", which will miss the md-cache, and then call other translators.


However, in fuse_getattr, when nodeid==1, gfid-req is set to "gfid-req", too. 
That is to say, every fuse_getattr in root, a lookup with "gfid-req" is called, 
this call will miss the md-cache, then takes a high cost.


Is it necessary to lookup with "gfid-req" in fuse_getattr?


In fact, whether we lookup with a "gfid-req" decides the performance of 
fuse_getattr. In my case, I need to call many times fuse_getattr, so it does 
matter!





Best regards,
Zhitao Li

Sent from Outlook<http://aka.ms/weboutlook>
________________________________
From: Poornima Gurusiddaiah <[email protected]>
Sent: Tuesday, March 21, 2017 3:07:01 PM
To: Soumya Koduri
Cc: Zhitao Li; Gluster Devel; Zhitao Li; [email protected]
Subject: Re: [Gluster-devel] What does xdata mean? "gfid-req"?



----- Original Message -----
> From: "Soumya Koduri" <[email protected]>
> To: "Zhitao Li" <[email protected]>, "Gluster Devel" 
> <[email protected]>
> Cc: "Zhitao Li" <[email protected]>, [email protected], "Poornima 
> Gurusiddaiah" <[email protected]>
> Sent: Monday, March 20, 2017 2:21:12 PM
> Subject: Re: [Gluster-devel] What does xdata mean? "gfid-req"?
>
>
>
> On 03/18/2017 06:51 PM, Zhitao Li wrote:
> > Hello, everyone,
> >
> >
> > I am investigating  the difference between stat and lookup operations in
> > GlusterFs now. In the translator named "md_cache", stat operation will
> > hit the cache generally, while lookup operation will miss the cache.
> >
> >
> > The reason is that for lookup operation, md_cache will check whether the
> > xdata is satisfied. In my case, lookup will include xdata "gfid-req"
> > filled by fuse-bridge. However, in md_cache, this check never pass
> > because the load flag of mdc_key "gfid-req"  is always 0.
>
> Client(in this case fuse-bridge) generates gfid and sets it as xdata
> 'gfid-req' key during the first lookup so as to let server heal the
> file/dir with the missing gfid (if any) with the newly generated one.
>
> I guess md-cache ignores the LOOKUP fop with this xdata key set as it
> implies that its the first lookup done by the client. Even if it doesn't
> filter it out, the file/dir entry will not be present in the
> cache then. Subsequent LOOKUPs should be served from md-cache. Poornima
> (cc'ed) shall be able to clarify the actual reason.

Yes, gfid-req will be set only on the first lookup. If not then that definitely
needs to be looked at.

>
> Thanks,
> Soumya
>
> >
> >
> > Could anyone tell me why "gfid-req" is filled by
> > fuse-bridge.c(fuse_getattr: nodeid==1->lookup)? What does it mean? And
> > how xdata is used?
>
>
> >
> > If no xdata, what would happen?
> >
> > Thank you!
> >
> >
> > Best regards,
> > Zhitao Li
> >
> > Sent from Outlook <http://aka.ms/weboutlook>
> >
> >
> > _______________________________________________
> > Gluster-devel mailing list
> > [email protected]
> > http://lists.gluster.org/mailman/listinfo/gluster-devel
> >
>
_______________________________________________
Gluster-devel mailing list
[email protected]
http://lists.gluster.org/mailman/listinfo/gluster-devel

Reply via email to