Trond Myklebust [Trond.Myklebust@xxxxxxxxxx] wrote: > On Fri, 2011-11-11 at 18:04 -0500, Matthew Treinish wrote: > > +static int nfs4_proc_vfh_lookup(struct rpc_clnt *clnt, struct inode *dir, > > + struct qstr *name, struct nfs_fh *fhandle, struct nfs_fattr *fattr) > > +{ > > + struct nfs4_exception exception = { }; > > + int err; > > + do { > > + int status; > > + > > + status = _nfs4_proc_lookup(clnt, dir, name, fhandle, fattr); > > + switch (status) { > > + case -NFS4ERR_BADNAME: > > + return -ENOENT; > > + case -NFS4ERR_MOVED: > > + err = nfs4_get_referral(dir, name, fattr, fhandle); > > + break; > > + case -NFS4ERR_FHEXPIRED: > > + return -NFS4ERR_FHEXPIRED; > > + case -NFS4ERR_WRONGSEC: > > + nfs_fixup_secinfo_attributes(fattr, fhandle); > > case -NFS4ERR_ACCESS: > ??????? > > > + } > > + err = nfs4_handle_exception(NFS_SERVER(dir), > > + status, &exception); > > + } while (exception.retry); > > + return err; > > +} > > + > > What execution context is this function going to be running under and > what guarantees that it actually has the right file access credentials > to allow it to perform a lookup? I imagine, it is in the context of the process that received FHEXPIRED error. It may not have credentials to perform a lookup on parent directories. If it doesn't, that would end up with ESTALE with Matt's patches, right Matt? --Malahal. -- To unsubscribe from this list: send the line "unsubscribe linux-nfs" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html