diff options
| -rw-r--r-- | fs/lockd/netns.h | 2 | ||||
| -rw-r--r-- | fs/lockd/svc.c | 18 |
2 files changed, 12 insertions, 8 deletions
diff --git a/fs/lockd/netns.h b/fs/lockd/netns.h index 94653aecfffb..e78650cb937c 100644 --- a/fs/lockd/netns.h +++ b/fs/lockd/netns.h | |||
| @@ -1,6 +1,7 @@ | |||
| 1 | #ifndef __LOCKD_NETNS_H__ | 1 | #ifndef __LOCKD_NETNS_H__ |
| 2 | #define __LOCKD_NETNS_H__ | 2 | #define __LOCKD_NETNS_H__ |
| 3 | 3 | ||
| 4 | #include <linux/fs.h> | ||
| 4 | #include <net/netns/generic.h> | 5 | #include <net/netns/generic.h> |
| 5 | 6 | ||
| 6 | struct lockd_net { | 7 | struct lockd_net { |
| @@ -9,6 +10,7 @@ struct lockd_net { | |||
| 9 | unsigned long nrhosts; | 10 | unsigned long nrhosts; |
| 10 | 11 | ||
| 11 | struct delayed_work grace_period_end; | 12 | struct delayed_work grace_period_end; |
| 13 | struct lock_manager lockd_manager; | ||
| 12 | }; | 14 | }; |
| 13 | 15 | ||
| 14 | extern int lockd_net_id; | 16 | extern int lockd_net_id; |
diff --git a/fs/lockd/svc.c b/fs/lockd/svc.c index 70c417758eb9..a9c436bc450c 100644 --- a/fs/lockd/svc.c +++ b/fs/lockd/svc.c | |||
| @@ -87,12 +87,14 @@ static unsigned long get_lockd_grace_period(void) | |||
| 87 | return nlm_timeout * 5 * HZ; | 87 | return nlm_timeout * 5 * HZ; |
| 88 | } | 88 | } |
| 89 | 89 | ||
| 90 | static struct lock_manager lockd_manager = { | 90 | static void grace_ender(struct work_struct *grace) |
| 91 | }; | ||
| 92 | |||
| 93 | static void grace_ender(struct work_struct *not_used) | ||
| 94 | { | 91 | { |
| 95 | locks_end_grace(&lockd_manager); | 92 | struct delayed_work *dwork = container_of(grace, struct delayed_work, |
| 93 | work); | ||
| 94 | struct lockd_net *ln = container_of(dwork, struct lockd_net, | ||
| 95 | grace_period_end); | ||
| 96 | |||
| 97 | locks_end_grace(&ln->lockd_manager); | ||
| 96 | } | 98 | } |
| 97 | 99 | ||
| 98 | static void set_grace_period(void) | 100 | static void set_grace_period(void) |
| @@ -100,7 +102,7 @@ static void set_grace_period(void) | |||
| 100 | unsigned long grace_period = get_lockd_grace_period(); | 102 | unsigned long grace_period = get_lockd_grace_period(); |
| 101 | struct lockd_net *ln = net_generic(&init_net, lockd_net_id); | 103 | struct lockd_net *ln = net_generic(&init_net, lockd_net_id); |
| 102 | 104 | ||
| 103 | locks_start_grace(&lockd_manager); | 105 | locks_start_grace(&ln->lockd_manager); |
| 104 | cancel_delayed_work_sync(&ln->grace_period_end); | 106 | cancel_delayed_work_sync(&ln->grace_period_end); |
| 105 | schedule_delayed_work(&ln->grace_period_end, grace_period); | 107 | schedule_delayed_work(&ln->grace_period_end, grace_period); |
| 106 | } | 108 | } |
| @@ -111,7 +113,7 @@ static void restart_grace(void) | |||
| 111 | struct lockd_net *ln = net_generic(&init_net, lockd_net_id); | 113 | struct lockd_net *ln = net_generic(&init_net, lockd_net_id); |
| 112 | 114 | ||
| 113 | cancel_delayed_work_sync(&ln->grace_period_end); | 115 | cancel_delayed_work_sync(&ln->grace_period_end); |
| 114 | locks_end_grace(&lockd_manager); | 116 | locks_end_grace(&ln->lockd_manager); |
| 115 | nlmsvc_invalidate_all(); | 117 | nlmsvc_invalidate_all(); |
| 116 | set_grace_period(); | 118 | set_grace_period(); |
| 117 | } | 119 | } |
| @@ -187,7 +189,7 @@ lockd(void *vrqstp) | |||
| 187 | } | 189 | } |
| 188 | flush_signals(current); | 190 | flush_signals(current); |
| 189 | cancel_delayed_work_sync(&ln->grace_period_end); | 191 | cancel_delayed_work_sync(&ln->grace_period_end); |
| 190 | locks_end_grace(&lockd_manager); | 192 | locks_end_grace(&ln->lockd_manager); |
| 191 | if (nlmsvc_ops) | 193 | if (nlmsvc_ops) |
| 192 | nlmsvc_invalidate_all(); | 194 | nlmsvc_invalidate_all(); |
| 193 | nlm_shutdown_hosts(); | 195 | nlm_shutdown_hosts(); |
