linux/fs/dlm
Bart Van Assche a97f4a66d8 dlm: Avoid that dlm_release_lockspace() incorrectly returns -EBUSY
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>
2013-10-16 10:32:42 -05:00
..
ast.c dlm: WQ_NON_REENTRANT is meaningless and going away 2013-07-30 09:24:24 -05:00
ast.h dlm: use workqueue for callbacks 2011-07-15 12:30:43 -05:00
config.c dlm: config: using strlcpy instead of strncpy 2013-06-25 12:53:06 -05:00
config.h dlm: fix deadlock between dlm_send and dlm_controld 2012-08-08 11:33:35 -05:00
debug_fs.c dlm: use rsbtbl as resource directory 2012-07-16 14:16:19 -05:00
dir.c dlm: use rsbtbl as resource directory 2012-07-16 14:16:19 -05:00
dir.h dlm: use rsbtbl as resource directory 2012-07-16 14:16:19 -05:00
dlm_internal.h dlm: avoid scanning unchanged toss lists 2013-01-07 12:02:49 -06:00
Kconfig fs/dlm: remove CONFIG_EXPERIMENTAL 2012-11-01 15:27:24 -05:00
lock.c dlm: Avoid LVB truncation 2013-06-26 11:38:02 -05:00
lock.h dlm: use rsbtbl as resource directory 2012-07-16 14:16:19 -05:00
lockspace.c dlm: Avoid that dlm_release_lockspace() incorrectly returns -EBUSY 2013-10-16 10:32:42 -05:00
lockspace.h dlm: detect available userspace daemon 2008-08-28 11:49:43 -05:00
lowcomms.c dlm: remove duplicated include from lowcomms.c 2013-06-19 09:52:09 -05:00
lowcomms.h dlm: fix deadlock between dlm_send and dlm_controld 2012-08-08 11:33:35 -05:00
lvb_table.h
main.c dlm: fix deadlock between dlm_send and dlm_controld 2012-08-08 11:33:35 -05:00
Makefile dlm: move plock code from gfs2 2008-04-21 11:22:28 -05:00
member.c dlm: fix unlock balance warnings 2012-08-08 11:33:49 -05:00
member.h dlm: add recovery callbacks 2012-01-04 08:56:31 -06:00
memory.c dlm: NULL dereference on failure in kmem_cache_create() 2012-05-15 10:39:28 -05:00
memory.h dlm: improve rsb searches 2011-07-12 16:02:09 -05:00
midcomms.c dlm: fix up memory allocation flags 2008-12-23 10:15:40 -06:00
midcomms.h
netlink.c netlink: Rename pid to portid to avoid confusion 2012-09-10 15:30:41 -04:00
plock.c dlm: avoid unnecessary posix unlock 2013-04-08 12:03:15 -05:00
rcom.c dlm: fix unlock balance warnings 2012-08-08 11:33:49 -05:00
rcom.h dlm: use rsbtbl as resource directory 2012-07-16 14:16:19 -05:00
recover.c dlm: convert to idr_alloc() 2013-02-27 19:10:19 -08:00
recover.h dlm: use rsbtbl as resource directory 2012-07-16 14:16:19 -05:00
recoverd.c dlm: fix unlock balance warnings 2012-08-08 11:33:49 -05:00
recoverd.h dlm: fix unlock balance warnings 2012-08-08 11:33:49 -05:00
requestqueue.c dlm: fixes for nodir mode 2012-05-02 14:15:27 -05:00
requestqueue.h dlm: use proper C for dlm/requestqueue stuff (and fix alignment bug) 2008-02-04 01:21:32 -06:00
user.c dlm: remove signal blocking 2013-08-12 15:22:43 -05:00
user.h dlm: record full callback state 2011-03-10 10:40:00 -06:00
util.c dlm: do not byteswap rcom_config 2008-02-04 01:23:43 -06:00
util.h