diff --git a/[refs] b/[refs] index cd7d8fc95c47..e3fc57e8891c 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: b2c0cea6b1cb210e962f07047df602875564069e +refs/heads/master: 89996df4b5b1a09c279f50b3fd03aa9df735f5cb diff --git a/trunk/fs/lockd/svc.c b/trunk/fs/lockd/svc.c index abf83881f68a..1a54ae14a192 100644 --- a/trunk/fs/lockd/svc.c +++ b/trunk/fs/lockd/svc.c @@ -104,6 +104,16 @@ static void set_grace_period(void) schedule_delayed_work(&grace_period_end, grace_period); } +static void restart_grace(void) +{ + if (nlmsvc_ops) { + cancel_delayed_work_sync(&grace_period_end); + locks_end_grace(&lockd_manager); + nlmsvc_invalidate_all(); + set_grace_period(); + } +} + /* * This is the lockd kernel thread */ @@ -149,10 +159,7 @@ lockd(void *vrqstp) if (signalled()) { flush_signals(current); - if (nlmsvc_ops) { - nlmsvc_invalidate_all(); - set_grace_period(); - } + restart_grace(); continue; }