aboutsummaryrefslogtreecommitdiffstats
path: root/fs/nfsd/nfs4state.c
diff options
context:
space:
mode:
authorStanislav Kinsbursky <skinsbursky@parallels.com>2012-11-26 07:22:03 -0500
committerJ. Bruce Fields <bfields@redhat.com>2012-11-28 10:13:50 -0500
commit4e37a7c2075baa2a15a2ab90fcc44173888016ed (patch)
tree79e51b7f10d1974dec521da01ba6f65764018640 /fs/nfsd/nfs4state.c
parentc9a4962881929df7f1ef6e63e1b9da304faca4dd (diff)
nfsd: make delegations shutdown network namespace aware
NFSv4 delegations are stored in global list. But they are nfs4_client dependent, which is network namespace aware already. State shutdown and laundromat are done per network namespace as well. So, delegations unhash have to be done in network namespace context. Signed-off-by: Stanislav Kinsbursky <skinsbursky@parallels.com> Signed-off-by: J. Bruce Fields <bfields@redhat.com>
Diffstat (limited to 'fs/nfsd/nfs4state.c')
-rw-r--r--fs/nfsd/nfs4state.c4
1 files changed, 4 insertions, 0 deletions
diff --git a/fs/nfsd/nfs4state.c b/fs/nfsd/nfs4state.c
index 0e7e174de209..bc2fc9f076fc 100644
--- a/fs/nfsd/nfs4state.c
+++ b/fs/nfsd/nfs4state.c
@@ -3230,6 +3230,8 @@ nfs4_laundromat(struct nfsd_net *nn)
3230 spin_lock(&recall_lock); 3230 spin_lock(&recall_lock);
3231 list_for_each_safe(pos, next, &del_recall_lru) { 3231 list_for_each_safe(pos, next, &del_recall_lru) {
3232 dp = list_entry (pos, struct nfs4_delegation, dl_recall_lru); 3232 dp = list_entry (pos, struct nfs4_delegation, dl_recall_lru);
3233 if (net_generic(dp->dl_stid.sc_client->net, nfsd_net_id) != nn)
3234 continue;
3233 if (time_after((unsigned long)dp->dl_time, (unsigned long)cutoff)) { 3235 if (time_after((unsigned long)dp->dl_time, (unsigned long)cutoff)) {
3234 u = dp->dl_time - cutoff; 3236 u = dp->dl_time - cutoff;
3235 if (test_val > u) 3237 if (test_val > u)
@@ -4922,6 +4924,8 @@ __nfs4_state_shutdown(struct net *net)
4922 spin_lock(&recall_lock); 4924 spin_lock(&recall_lock);
4923 list_for_each_safe(pos, next, &del_recall_lru) { 4925 list_for_each_safe(pos, next, &del_recall_lru) {
4924 dp = list_entry (pos, struct nfs4_delegation, dl_recall_lru); 4926 dp = list_entry (pos, struct nfs4_delegation, dl_recall_lru);
4927 if (dp->dl_stid.sc_client->net != net)
4928 continue;
4925 list_move(&dp->dl_recall_lru, &reaplist); 4929 list_move(&dp->dl_recall_lru, &reaplist);
4926 } 4930 }
4927 spin_unlock(&recall_lock); 4931 spin_unlock(&recall_lock);