diff options
-rw-r--r-- | fs/nfs_common/grace.c | 6 | ||||
-rw-r--r-- | fs/nfsd/nfs4state.c | 7 |
2 files changed, 9 insertions, 4 deletions
diff --git a/fs/nfs_common/grace.c b/fs/nfs_common/grace.c index bd3e2d328e64..5be08f02a76b 100644 --- a/fs/nfs_common/grace.c +++ b/fs/nfs_common/grace.c | |||
@@ -30,7 +30,11 @@ locks_start_grace(struct net *net, struct lock_manager *lm) | |||
30 | struct list_head *grace_list = net_generic(net, grace_net_id); | 30 | struct list_head *grace_list = net_generic(net, grace_net_id); |
31 | 31 | ||
32 | spin_lock(&grace_lock); | 32 | spin_lock(&grace_lock); |
33 | list_add(&lm->list, grace_list); | 33 | if (list_empty(&lm->list)) |
34 | list_add(&lm->list, grace_list); | ||
35 | else | ||
36 | WARN(1, "double list_add attempt detected in net %x %s\n", | ||
37 | net->ns.inum, (net == &init_net) ? "(init_net)" : ""); | ||
34 | spin_unlock(&grace_lock); | 38 | spin_unlock(&grace_lock); |
35 | } | 39 | } |
36 | EXPORT_SYMBOL_GPL(locks_start_grace); | 40 | EXPORT_SYMBOL_GPL(locks_start_grace); |
diff --git a/fs/nfsd/nfs4state.c b/fs/nfsd/nfs4state.c index 73451436c1c2..b29b5a185a2c 100644 --- a/fs/nfsd/nfs4state.c +++ b/fs/nfsd/nfs4state.c | |||
@@ -7103,6 +7103,10 @@ static int nfs4_state_create_net(struct net *net) | |||
7103 | INIT_LIST_HEAD(&nn->sessionid_hashtbl[i]); | 7103 | INIT_LIST_HEAD(&nn->sessionid_hashtbl[i]); |
7104 | nn->conf_name_tree = RB_ROOT; | 7104 | nn->conf_name_tree = RB_ROOT; |
7105 | nn->unconf_name_tree = RB_ROOT; | 7105 | nn->unconf_name_tree = RB_ROOT; |
7106 | nn->boot_time = get_seconds(); | ||
7107 | nn->grace_ended = false; | ||
7108 | nn->nfsd4_manager.block_opens = true; | ||
7109 | INIT_LIST_HEAD(&nn->nfsd4_manager.list); | ||
7106 | INIT_LIST_HEAD(&nn->client_lru); | 7110 | INIT_LIST_HEAD(&nn->client_lru); |
7107 | INIT_LIST_HEAD(&nn->close_lru); | 7111 | INIT_LIST_HEAD(&nn->close_lru); |
7108 | INIT_LIST_HEAD(&nn->del_recall_lru); | 7112 | INIT_LIST_HEAD(&nn->del_recall_lru); |
@@ -7160,9 +7164,6 @@ nfs4_state_start_net(struct net *net) | |||
7160 | ret = nfs4_state_create_net(net); | 7164 | ret = nfs4_state_create_net(net); |
7161 | if (ret) | 7165 | if (ret) |
7162 | return ret; | 7166 | return ret; |
7163 | nn->boot_time = get_seconds(); | ||
7164 | nn->grace_ended = false; | ||
7165 | nn->nfsd4_manager.block_opens = true; | ||
7166 | locks_start_grace(net, &nn->nfsd4_manager); | 7167 | locks_start_grace(net, &nn->nfsd4_manager); |
7167 | nfsd4_client_tracking_init(net); | 7168 | nfsd4_client_tracking_init(net); |
7168 | printk(KERN_INFO "NFSD: starting %ld-second grace period (net %x)\n", | 7169 | printk(KERN_INFO "NFSD: starting %ld-second grace period (net %x)\n", |