diff options
| -rw-r--r-- | fs/lockd/svc.c | 15 |
1 files changed, 11 insertions, 4 deletions
diff --git a/fs/lockd/svc.c b/fs/lockd/svc.c index abf83881f68a..1a54ae14a192 100644 --- a/fs/lockd/svc.c +++ b/fs/lockd/svc.c | |||
| @@ -104,6 +104,16 @@ static void set_grace_period(void) | |||
| 104 | schedule_delayed_work(&grace_period_end, grace_period); | 104 | schedule_delayed_work(&grace_period_end, grace_period); |
| 105 | } | 105 | } |
| 106 | 106 | ||
| 107 | static void restart_grace(void) | ||
| 108 | { | ||
| 109 | if (nlmsvc_ops) { | ||
| 110 | cancel_delayed_work_sync(&grace_period_end); | ||
| 111 | locks_end_grace(&lockd_manager); | ||
| 112 | nlmsvc_invalidate_all(); | ||
| 113 | set_grace_period(); | ||
| 114 | } | ||
| 115 | } | ||
| 116 | |||
| 107 | /* | 117 | /* |
| 108 | * This is the lockd kernel thread | 118 | * This is the lockd kernel thread |
| 109 | */ | 119 | */ |
| @@ -149,10 +159,7 @@ lockd(void *vrqstp) | |||
| 149 | 159 | ||
| 150 | if (signalled()) { | 160 | if (signalled()) { |
| 151 | flush_signals(current); | 161 | flush_signals(current); |
| 152 | if (nlmsvc_ops) { | 162 | restart_grace(); |
| 153 | nlmsvc_invalidate_all(); | ||
| 154 | set_grace_period(); | ||
| 155 | } | ||
| 156 | continue; | 163 | continue; |
| 157 | } | 164 | } |
| 158 | 165 | ||
