aboutsummaryrefslogtreecommitdiffstats
path: root/fs/lockd/grace.c
diff options
context:
space:
mode:
authorStanislav Kinsbursky <skinsbursky@parallels.com>2012-07-25 08:57:13 -0400
committerJ. Bruce Fields <bfields@redhat.com>2012-07-27 16:49:22 -0400
commitdb9c4553412d72c6a05e0168d1d487f66e0660b3 (patch)
treee6510453641076d46fb1453867f9532205ba302d /fs/lockd/grace.c
parent9695c7057f4887ed54dc1e6c2ef22f72a2be1175 (diff)
LockD: manage grace list per network namespace
Signed-off-by: Stanislav Kinsbursky <skinsbursky@parallels.com> Signed-off-by: J. Bruce Fields <bfields@redhat.com>
Diffstat (limited to 'fs/lockd/grace.c')
-rw-r--r--fs/lockd/grace.c14
1 files changed, 11 insertions, 3 deletions
diff --git a/fs/lockd/grace.c b/fs/lockd/grace.c
index 183cc1f0af1c..8dbaff782098 100644
--- a/fs/lockd/grace.c
+++ b/fs/lockd/grace.c
@@ -4,8 +4,10 @@
4 4
5#include <linux/module.h> 5#include <linux/module.h>
6#include <linux/lockd/bind.h> 6#include <linux/lockd/bind.h>
7#include <net/net_namespace.h>
8
9#include "netns.h"
7 10
8static LIST_HEAD(grace_list);
9static DEFINE_SPINLOCK(grace_lock); 11static DEFINE_SPINLOCK(grace_lock);
10 12
11/** 13/**
@@ -21,8 +23,11 @@ static DEFINE_SPINLOCK(grace_lock);
21 */ 23 */
22void locks_start_grace(struct lock_manager *lm) 24void locks_start_grace(struct lock_manager *lm)
23{ 25{
26 struct net *net = &init_net;
27 struct lockd_net *ln = net_generic(net, lockd_net_id);
28
24 spin_lock(&grace_lock); 29 spin_lock(&grace_lock);
25 list_add(&lm->list, &grace_list); 30 list_add(&lm->list, &ln->grace_list);
26 spin_unlock(&grace_lock); 31 spin_unlock(&grace_lock);
27} 32}
28EXPORT_SYMBOL_GPL(locks_start_grace); 33EXPORT_SYMBOL_GPL(locks_start_grace);
@@ -54,6 +59,9 @@ EXPORT_SYMBOL_GPL(locks_end_grace);
54 */ 59 */
55int locks_in_grace(void) 60int locks_in_grace(void)
56{ 61{
57 return !list_empty(&grace_list); 62 struct net *net = &init_net;
63 struct lockd_net *ln = net_generic(net, lockd_net_id);
64
65 return !list_empty(&ln->grace_list);
58} 66}
59EXPORT_SYMBOL_GPL(locks_in_grace); 67EXPORT_SYMBOL_GPL(locks_in_grace);