s3-brlock: add a minimim retry time for pending blocking locks
authorAndrew Tridgell <tridge@samba.org>
Sat, 6 Feb 2010 04:59:43 +0000 (20:59 -0800)
committerMichael Adam <obnox@samba.org>
Fri, 12 Feb 2010 14:52:37 +0000 (15:52 +0100)
commit5239e4376a1f725e9a096e221d74aa3d28a8c692
tree805db8c86679692aef82faeca7fa571cf92f29a6
parent2e11163ea55778c7c7c34a12059081b87a970d56
s3-brlock: add a minimim retry time for pending blocking locks

When we are waiting on a pending byte range lock, another smbd might
exit uncleanly, and therefore not notify us of the removal of the
lock, and thus not trigger the lock to be retried.

We coped with this up to now by adding a message_send_all() in the
SIGCHLD and cluster reconfigure handlers to send a MSG_SMB_UNLOCK to
all smbd processes. That would generate O(N^2) work when a large
number of clients disconnected at once (such as on a network outage),
which could leave the whole system unusable for a very long time (many
minutes, or even longer).

By adding a minimum re-check time for pending byte range locks we
avoid this problem by ensuring that pending locks are retried at a
more regular interval.
source3/smbd/blocking.c