[Gluster-devel] What does xdata mean? "gfid-req"?

Zhitao Li zhitaoli1201 at outlook.com
Tue Mar 21 08:09:23 UTC 2017


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 <pgurusid at redhat.com>
Sent: Tuesday, March 21, 2017 3:07:01 PM
To: Soumya Koduri
Cc: Zhitao Li; Gluster Devel; Zhitao Li; 1318078301 at qq.com
Subject: Re: [Gluster-devel] What does xdata mean? "gfid-req"?



----- Original Message -----
> From: "Soumya Koduri" <skoduri at redhat.com>
> To: "Zhitao Li" <zhitaoli1201 at outlook.com>, "Gluster Devel" <gluster-devel at gluster.org>
> Cc: "Zhitao Li" <zhitaoli1201 at 163.com>, 1318078301 at qq.com, "Poornima Gurusiddaiah" <pgurusid at redhat.com>
> 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
> > Gluster-devel at gluster.org
> > http://lists.gluster.org/mailman/listinfo/gluster-devel
> >
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.gluster.org/pipermail/gluster-devel/attachments/20170321/dd8d5e5f/attachment-0001.html>


More information about the Gluster-devel mailing list