]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/commit
When sleeping waiting for either local or remote advisory lock,
authorkib <kib@FreeBSD.org>
Sun, 26 Jun 2016 20:08:42 +0000 (20:08 +0000)
committerkib <kib@FreeBSD.org>
Sun, 26 Jun 2016 20:08:42 +0000 (20:08 +0000)
commit13c308de0c7cfd639629c469f9bc8442dc993d2b
tree29ede6f82e4b87bdb9347130d4e67bf6f2cfd2da
parent2b281bf08f5c2e942626c0fe461285f39fbf8df8
When sleeping waiting for either local or remote advisory lock,
interrupt sleeps with the ERESTART on the suspension attempts.
Otherwise, single-threading requests are deferred until the locks are
granted for NFS files, which causes hangs.

When retrying local registration of the remotely-granted adv lock,
allow full suspension and check for suspension, for usual reasons.

Reported by: markj, pho
Reviewed by: jilles
Tested by: pho
Sponsored by: The FreeBSD Foundation
MFC after: 2 weeks
Approved by: re (gjb)
sys/kern/kern_lockf.c
sys/nlm/nlm_advlock.c
sys/nlm/nlm_prot_impl.c