In fs/nfsd/nfsfh.c:fh_verify() we do this: exp = exp_find(rqstp->rq_client, 0, tfh, &rqstp->rq_chandle); In the following lines we have: error = nfserr_dropit; if (IS_ERR(exp) && PTR_ERR(exp) == -EAGAIN) goto out; The nfserr_dropit return will cause us to drop this request and revisit it later, after an upcall has been made and a corresponding downcall received from userspace. Note that this revisitation can cause incorrect behavior in the NFSv4 case: compound requests may appear to be processed out of order, and non-idempotent operations may be performed more than once. There are two caches defined in fs/nfsd/export.c: the "export map": "maps client+vfsmnt+dentry to export options" .name = "nfsd.export" svc_export_request: upcall request has form "clientname path" svc_export_parse: downcall has form "clientname path expiry flags" (flags omitted for negative reponse) exp_get_by_name: clp, mnt, dentry --> svc_export exp_parent: clp, mnt, dentry -->svc_export note exp_get_by_name will return NULL if the dentry corresponds to the child of an exported directory; this function actually searches up the tree for a parent that's been exported and returns that if it finds one. note that this is the *only* cache that uses in-place updates; why? the "expkey map": "maps client+filehandle-fragment to export options" (Well, actually upcall itself just maps to a pathname to be used in the above upcall) .name = "nfsd.fh" note that the filehandle-fragment is the fsid: either type 0: 8 bytes, device and inode number, or type 1: 4 bytes, fsid: described in nfsfh.h as "possible future encoding..." currently used to identify pseudoroot. expkey_request: upcall request has form "clientname fsidtype fsid(in hex)" expkey_parse: downcall has form "clientname fsidtype fsid(in hex) expiry pathame" (pathname omitted for negative responses) also does an exp_get_by_name, which may of course trigger another upcall. exp_find_key: clnt, fsid_type, fsid --> svc_expkey exp_get_key: clnt, dev, ino --> svc_expkey exp_get_fsid_key: clp, fsid --> svc_expkey exp_set_key: adds clp, fsid_type, fsid, exp to expkey hash