[DLM] fix stopping unstarted recovery
authorDavid Teigland <teigland@redhat.com>
Tue, 31 Oct 2006 17:56:08 +0000 (11:56 -0600)
committerSteven Whitehouse <swhiteho@redhat.com>
Thu, 30 Nov 2006 15:35:16 +0000 (10:35 -0500)
commit2cdc98aaf072d573df10c503d3b3b0b74e2a6d06
treec8f0ed478c6384da504026ce2668ed916b01a6af
parent91c0dc93a1a6bbdd79707ed311e48b4397df177f
[DLM] fix stopping unstarted recovery

Red Hat BZ 211914

When many nodes are joining a lockspace simultaneously, the dlm gets a
quick sequence of stop/start events, a pair for adding each node.
dlm_controld in user space sends dlm_recoverd in the kernel each stop and
start event.  dlm_controld will sometimes send the stop before
dlm_recoverd has had a chance to take up the previously queued start.  The
stop aborts the processing of the previous start by setting the
RECOVERY_STOP flag.  dlm_recoverd is erroneously clearing this flag and
ignoring the stop/abort if it happens to take up the start after the stop
meant to abort it.  The fix is to check the sequence number that's
incremented for each stop/start before clearing the flag.

Signed-off-by: David Teigland <teigland@redhat.com>
Signed-off-by: Steven Whitehouse <swhiteho@redhat.com>
fs/dlm/recoverd.c