OSDN Git Service

dlm: fix missing dir remove
authorDavid Teigland <teigland@redhat.com>
Mon, 25 Jun 2012 18:48:05 +0000 (13:48 -0500)
committerDavid Teigland <teigland@redhat.com>
Mon, 16 Jul 2012 19:24:43 +0000 (14:24 -0500)
commit96006ea6d4eea73466e90ef353bf34e507724e77
treeba6d5498e805d0042fbbe1a8e0326d8c0d16bceb
parentc503a62103c46d56447f56306b52be6f844689ba
dlm: fix missing dir remove

I don't know exactly how, but in some cases, a dir
record is not removed, or a new one is created when
it shouldn't be.  The result is that the dir node
lookup returns a master node where the rsb does not
exist.  In this case, The master node will repeatedly
return -EBADR for requests, and the lock requests will
be stuck.

Until all possible ways for this to happen can be
eliminated, a simple and effective way to recover from
this situation is for the supposed master node to send
a standard remove message to the dir node when it
receives a request for a resource it has no rsb for.

Signed-off-by: David Teigland <teigland@redhat.com>
fs/dlm/lock.c