diff options
author | Bryan Schumaker <bjschuma@netapp.com> | 2012-11-29 11:40:46 -0500 |
---|---|---|
committer | J. Bruce Fields <bfields@redhat.com> | 2012-12-03 09:59:03 -0500 |
commit | 6c1e82a4b74ad0c8b45c833a4409f153199d9be4 (patch) | |
tree | 10734030e4b308f16680de6f54db3af76ecca8b3 /fs/nfsd/nfs4state.c | |
parent | d7cc431edd0a6c69a88b5ff1e304af50bfb2270e (diff) | |
download | op-kernel-dev-6c1e82a4b74ad0c8b45c833a4409f153199d9be4.zip op-kernel-dev-6c1e82a4b74ad0c8b45c833a4409f153199d9be4.tar.gz |
NFSD: Forget state for a specific client
Write the client's ip address to any state file and all appropriate
state for that client will be forgotten.
Signed-off-by: Bryan Schumaker <bjschuma@netapp.com>
Signed-off-by: J. Bruce Fields <bfields@redhat.com>
Diffstat (limited to 'fs/nfsd/nfs4state.c')
-rw-r--r-- | fs/nfsd/nfs4state.c | 15 |
1 files changed, 15 insertions, 0 deletions
diff --git a/fs/nfsd/nfs4state.c b/fs/nfsd/nfs4state.c index 9fb8e52..eff7340 100644 --- a/fs/nfsd/nfs4state.c +++ b/fs/nfsd/nfs4state.c @@ -4763,6 +4763,21 @@ u64 nfsd_for_n_state(u64 max, u64 (*func)(struct nfs4_client *, u64)) return count; } +struct nfs4_client *nfsd_find_client(struct sockaddr_storage *addr, size_t addr_size) +{ + struct nfs4_client *clp; + struct nfsd_net *nn = net_generic(current->nsproxy->net_ns, nfsd_net_id); + + if (!nfsd_netns_ready(nn)) + return NULL; + + list_for_each_entry(clp, &nn->client_lru, cl_lru) { + if (memcmp(&clp->cl_addr, addr, addr_size) == 0) + return clp; + } + return NULL; +} + #endif /* CONFIG_NFSD_FAULT_INJECTION */ /* initialization to perform at module load time: */ |