deleg: delegation support for name/attr cache

when a delegation is granted by OPEN, its delegation type is passed to nfs41_name_cache_insert().  as long as the delegation is held, its name_cache_entry is kept out of the cache.exp_entries list to prevent it from expiring.  an extra reference is held on the attr_cache_entry as well, so it sticks around even if the name_cache_entry is removed (a parent expires, for example).  new function nfs41_name_cache_delegreturn() adds the name_cache_entry back to the list, and releases the extra attr_cache_entry reference

Signed-off-by: Casey Bodley <cbodley@citi.umich.edu>
This commit is contained in:
Casey Bodley 2011-07-06 11:05:45 -04:00 committed by unknown
parent ee71a62af2
commit 38259e0017
4 changed files with 124 additions and 32 deletions

View file

@ -75,7 +75,14 @@ int nfs41_name_cache_insert(
IN const nfs41_component *name,
IN OPTIONAL const nfs41_fh *fh,
IN OPTIONAL const nfs41_file_info *info,
IN OPTIONAL const change_info4 *cinfo);
IN OPTIONAL const change_info4 *cinfo,
IN enum open_delegation_type4 delegation);
int nfs41_name_cache_delegreturn(
IN struct nfs41_name_cache *cache,
IN uint64_t fileid,
IN const char *path,
IN const nfs41_component *name);
int nfs41_name_cache_remove(
IN struct nfs41_name_cache *cache,