data cache invalidation on delegation recalls

when we receive a delegation recall, we need to make a downcall
to the kernel and change a buffering/caching policy on this file.

on each open and close we pass an srv_open pointer to the nfsd to
keep in case it receives a cb_recall. we store srv_open in the
delegation state if we got a delegation.
This commit is contained in:
Olga Kornievskaia 2012-01-19 19:46:03 -05:00
parent 909947f07a
commit c22c2b6080
6 changed files with 107 additions and 14 deletions

View file

@ -102,6 +102,8 @@ typedef struct __nfs41_delegation_state {
CONDITION_VARIABLE cond;
bool_t revoked; /* for recovery, accessed under client.state.lock */
HANDLE srv_open; /* for rdbss cache invalidation */
} nfs41_delegation_state;
typedef struct __nfs41_lock_state {
@ -148,6 +150,8 @@ typedef struct __nfs41_open_state {
struct list_entry list;
uint32_t counter;
} locks;
HANDLE srv_open; /* for data cache invalidation */
} nfs41_open_state;
typedef struct __nfs41_rpc_clnt {