[Gluster-devel] Report ESTALE as ENOENT
Shyam
srangana at redhat.com
Thu Mar 24 13:51:45 UTC 2016
On 03/23/2016 12:07 PM, Ravishankar N wrote:
> On 03/23/2016 09:16 PM, Soumya Koduri wrote:
>> If it occurs only when the file/dir is not actually present at the
>> back-end, shouldn't we fix the server to send ENOENT then?
> I never fully understood it here is the answer:
> http://review.gluster.org/#/c/6318/
The intention of ESTALE is to state that the inode#/GFID is stale, when
using that for any operations. IOW, we did not find the GFID in the
backend, that does not mean the name is not present. This hence means,
if you have a pGFID+bname, try resolving with that.
For example, a client side cache can hang onto a GFID for a bname, but
another client could have, in the interim, unlinked the bname and create
a new file there.
A presence test using GFID by the client that cached the result the
first time, is an ESTALE. But a resolution based on pGFID+bname again by
the same client would be a success.
By extension, a GFID based resolution, when not really present in the
backend will return ESTALE, it could very well mean ENOENT, but that has
to be determined by the client again, if possible.
See "A10. What does it mean when my application fails because of an
ESTALE error?" for NFS here [1] and [2] (there maybe better sources for
this information)
[1] http://nfs.sourceforge.net/
[2] https://lwn.net/Articles/272684/
>
> _______________________________________________
> Gluster-devel mailing list
> Gluster-devel at gluster.org
> http://www.gluster.org/mailman/listinfo/gluster-devel
More information about the Gluster-devel
mailing list