diff options
Diffstat (limited to 'fs/lockd/svc.c')
-rw-r--r-- | fs/lockd/svc.c | 20 |
1 files changed, 5 insertions, 15 deletions
diff --git a/fs/lockd/svc.c b/fs/lockd/svc.c index f345ef7fb8ae..f013aed11533 100644 --- a/fs/lockd/svc.c +++ b/fs/lockd/svc.c | |||
@@ -51,7 +51,6 @@ static DEFINE_MUTEX(nlmsvc_mutex); | |||
51 | static unsigned int nlmsvc_users; | 51 | static unsigned int nlmsvc_users; |
52 | static struct task_struct *nlmsvc_task; | 52 | static struct task_struct *nlmsvc_task; |
53 | static struct svc_rqst *nlmsvc_rqst; | 53 | static struct svc_rqst *nlmsvc_rqst; |
54 | int nlmsvc_grace_period; | ||
55 | unsigned long nlmsvc_timeout; | 54 | unsigned long nlmsvc_timeout; |
56 | 55 | ||
57 | /* | 56 | /* |
@@ -85,30 +84,21 @@ static unsigned long get_lockd_grace_period(void) | |||
85 | return nlm_timeout * 5 * HZ; | 84 | return nlm_timeout * 5 * HZ; |
86 | } | 85 | } |
87 | 86 | ||
88 | unsigned long get_nfs_grace_period(void) | 87 | static struct lock_manager lockd_manager = { |
89 | { | 88 | }; |
90 | unsigned long lockdgrace = get_lockd_grace_period(); | ||
91 | unsigned long nfsdgrace = 0; | ||
92 | |||
93 | if (nlmsvc_ops) | ||
94 | nfsdgrace = nlmsvc_ops->get_grace_period(); | ||
95 | |||
96 | return max(lockdgrace, nfsdgrace); | ||
97 | } | ||
98 | EXPORT_SYMBOL(get_nfs_grace_period); | ||
99 | 89 | ||
100 | static void grace_ender(struct work_struct *not_used) | 90 | static void grace_ender(struct work_struct *not_used) |
101 | { | 91 | { |
102 | nlmsvc_grace_period = 0; | 92 | locks_end_grace(&lockd_manager); |
103 | } | 93 | } |
104 | 94 | ||
105 | static DECLARE_DELAYED_WORK(grace_period_end, grace_ender); | 95 | static DECLARE_DELAYED_WORK(grace_period_end, grace_ender); |
106 | 96 | ||
107 | static void set_grace_period(void) | 97 | static void set_grace_period(void) |
108 | { | 98 | { |
109 | unsigned long grace_period = get_nfs_grace_period() + jiffies; | 99 | unsigned long grace_period = get_lockd_grace_period(); |
110 | 100 | ||
111 | nlmsvc_grace_period = 1; | 101 | locks_start_grace(&lockd_manager); |
112 | cancel_delayed_work_sync(&grace_period_end); | 102 | cancel_delayed_work_sync(&grace_period_end); |
113 | schedule_delayed_work(&grace_period_end, grace_period); | 103 | schedule_delayed_work(&grace_period_end, grace_period); |
114 | } | 104 | } |