a97f4a66d8
When dlm_release_lockspace(ls, 1) is invoked on a busy system immediately after the last dlm_unlock() AST has finished it can occur that lkb_idr_is_local() is invoked for the unlocked LKB since removal from ls_lkbidr only occurs after the AST has returned. If that happens dlm_release_lockspace(ls, 1) will return -EBUSY instead of releasing the lockspace. Fix this race condition by changing lkb_idr_is_local() such that it only returns true for LKB's that have not yet been unlocked. Signed-off-by: Bart Van Assche <bvanassche@acm.org> Signed-off-by: David Teigland <teigland@redhat.com> |
||
---|---|---|
.. | ||
Kconfig | ||
Makefile | ||
ast.c | ||
ast.h | ||
config.c | ||
config.h | ||
debug_fs.c | ||
dir.c | ||
dir.h | ||
dlm_internal.h | ||
lock.c | ||
lock.h | ||
lockspace.c | ||
lockspace.h | ||
lowcomms.c | ||
lowcomms.h | ||
lvb_table.h | ||
main.c | ||
member.c | ||
member.h | ||
memory.c | ||
memory.h | ||
midcomms.c | ||
midcomms.h | ||
netlink.c | ||
plock.c | ||
rcom.c | ||
rcom.h | ||
recover.c | ||
recover.h | ||
recoverd.c | ||
recoverd.h | ||
requestqueue.c | ||
requestqueue.h | ||
user.c | ||
user.h | ||
util.c | ||
util.h |