1
linux/fs/dlm
David Teigland da8c66638a dlm: fix lvb invalidation conditions
When a node is removed that held a PW/EX lock, the
existing master node should invalidate the lvb on the
resource due to the purged lock.

Previously, the existing master node was invalidating
the lvb if it found only NL/CR locks on the resource
during recovery for the removed node.  This could lead
to cases where it invalidated the lvb and shouldn't
have, or cases where it should have invalidated and
didn't.

When recovery selects a *new* master node for a
resource, and that new master finds only NL/CR locks
on the resource after lock recovery, it should
invalidate the lvb.  This case was handled correctly
(but was incorrectly applied to the existing master
case also.)

When a process exits while holding a PW/EX lock,
the lvb on the resource should be invalidated.
This was not happening.

The lvb contents and VALNOTVALID flag should be
recovered before granting locks in recovery so that
the recovered lvb state is provided in the callback.
The lvb was being recovered after the lock was granted.

Signed-off-by: David Teigland <teigland@redhat.com>
2012-11-16 11:20:42 -06:00
..
ast.c dlm: fix uninitialized spinlock 2012-08-08 11:33:43 -05:00
ast.h dlm: use workqueue for callbacks 2011-07-15 12:30:43 -05:00
config.c dlm: fix deadlock between dlm_send and dlm_controld 2012-08-08 11:33:35 -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: fix lvb invalidation conditions 2012-11-16 11:20:42 -06:00
Kconfig fs/dlm: remove CONFIG_EXPERIMENTAL 2012-11-01 15:27:24 -05:00
lock.c dlm: fix lvb invalidation conditions 2012-11-16 11:20:42 -06:00
lock.h dlm: use rsbtbl as resource directory 2012-07-16 14:16:19 -05:00
lockspace.c dlm: fix unlock balance warnings 2012-08-08 11:33:49 -05:00
lockspace.h
lowcomms.c dlm: remove unused variable in *dlm_lowcomms_get_buffer() 2012-11-01 15:27:13 -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
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
midcomms.h
netlink.c netlink: Rename pid to portid to avoid confusion 2012-09-10 15:30:41 -04:00
plock.c locks: rename lock-manager ops 2011-07-20 20:23:19 -04: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: fix lvb invalidation conditions 2012-11-16 11:20:42 -06: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
user.c dlm: check the maximum size of a request from user 2012-09-10 09:50:27 -05:00
user.h dlm: record full callback state 2011-03-10 10:40:00 -06:00
util.c
util.h