alistair23-linux/fs/ocfs2
xuejiufei 60d663cb52 ocfs2/dlm: add DEREF_DONE message
This series of patches is to fix the dis-order issue of setting/clearing
refmap bit described below.

Node 1                               Node 2(master)
dlmlock
dlm_do_master_request
                                dlm_master_request_handler
                                -> dlm_lockres_set_refmap_bit
dlmlock succeed
dlmunlock succeed

dlm_purge_lockres
                                dlm_deref_handler
                                -> find lock resource is in
                                   DLM_LOCK_RES_SETREF_INPROG state,
                                   so dispatch a deref work
dlm_purge_lockres succeed.

call dlmlock again
dlm_do_master_request
                                dlm_master_request_handler
                                -> dlm_lockres_set_refmap_bit

                                deref work trigger, call
                                dlm_lockres_clear_refmap_bit
                                to clear Node 1 from refmap

                                dlm_purge_lockres succeed

dlm_send_remote_lock_request
                                return DLM_IVLOCKID because
                                the lockres is not exist
BUG if the lockres is $RECOVERY

This series of patches add a new message to keep the order of set and
clear.  Other nodes can purge the lock resource only after the refmap bit
on master is cleared.

This patch is to add DEREF_DONE message and corresponding handler.  Node
can purge the lock resource after receiving this message.  As a new
message is added, so increase the minor number of dlm protocol version.

Signed-off-by: xuejiufei <xuejiufei@huawei.com>
Cc: Mark Fasheh <mfasheh@suse.de>
Cc: Joel Becker <jlbec@evilplan.org>
Cc: Junxiao Bi <junxiao.bi@oracle.com>
Reviewed-by: Joseph Qi <joseph.qi@huawei.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
2016-03-15 16:55:16 -07:00
..
cluster ocfs2/cluster: replace the interrupt safe spinlocks with common ones 2016-03-15 16:55:16 -07:00
dlm ocfs2/dlm: add DEREF_DONE message 2016-03-15 16:55:16 -07:00
dlmfs kmemcg: account certain kmem allocations to memcg 2016-01-14 16:00:49 -08:00
acl.c
acl.h
alloc.c wrappers for ->i_mutex access 2016-01-22 18:04:28 -05:00
alloc.h ocfs2: constify ocfs2_extent_tree_operations structures 2016-01-14 16:00:49 -08:00
aops.c ocfs2: unlock inode if deleting inode from orphan fails 2016-02-27 10:28:52 -08:00
aops.h
blockcheck.c
blockcheck.h
buffer_head_io.c
buffer_head_io.h
dcache.c
dcache.h
dir.c wrappers for ->i_mutex access 2016-01-22 18:04:28 -05:00
dir.h
dlmglue.c ocfs2: NFS hangs in __ocfs2_cluster_lock due to race with ocfs2_unblock_lock 2016-01-21 17:20:51 -08:00
dlmglue.h
export.c
export.h
extent_map.c
extent_map.h
file.c wrappers for ->i_mutex access 2016-01-22 18:04:28 -05:00
file.h
heartbeat.c
heartbeat.h
inode.c wrappers for ->i_mutex access 2016-01-22 18:04:28 -05:00
inode.h ocfs2: only take lock if dio entry when recover orphans 2015-11-05 19:34:48 -08:00
ioctl.c wrappers for ->i_mutex access 2016-01-22 18:04:28 -05:00
ioctl.h
journal.c wrappers for ->i_mutex access 2016-01-22 18:04:28 -05:00
journal.h
Kconfig
localalloc.c wrappers for ->i_mutex access 2016-01-22 18:04:28 -05:00
localalloc.h
locks.c ocfs2: fix flock panic issue 2015-12-29 17:45:49 -08:00
locks.h
Makefile
mmap.c ocfs2: fix return value from ocfs2_page_mkwrite() 2016-03-09 15:43:42 -08:00
mmap.h
move_extents.c wrappers for ->i_mutex access 2016-01-22 18:04:28 -05:00
move_extents.h
namei.c wrappers for ->i_mutex access 2016-01-22 18:04:28 -05:00
namei.h ocfs2: do not include dio entry in case of orphan scan 2015-11-05 19:34:48 -08:00
ocfs1_fs_compat.h
ocfs2.h
ocfs2_fs.h
ocfs2_ioctl.h
ocfs2_lockid.h
ocfs2_lockingver.h
ocfs2_trace.h
quota.h quota: constify qtree_fmt_operations structures 2016-01-04 10:58:35 +01:00
quota_global.c wrappers for ->i_mutex access 2016-01-22 18:04:28 -05:00
quota_local.c
refcounttree.c wrappers for ->i_mutex access 2016-01-22 18:04:28 -05:00
refcounttree.h
reservations.c
reservations.h
resize.c wrappers for ->i_mutex access 2016-01-22 18:04:28 -05:00
resize.h
slot_map.c ocfs2: fix slot overwritten if storage link down during mount 2016-01-14 16:00:49 -08:00
slot_map.h
stack_o2cb.c
stack_user.c
stackglue.c
stackglue.h
suballoc.c wrappers for ->i_mutex access 2016-01-22 18:04:28 -05:00
suballoc.h
super.c ocfs2: use spinlock_irqsave() to downconvert lock in ocfs2_osb_dump() 2016-03-15 16:55:16 -07:00
super.h
symlink.c switch ->get_link() to delayed_call, kill ->put_link() 2015-12-30 13:01:03 -05:00
symlink.h
sysfile.c
sysfile.h
uptodate.c
uptodate.h
xattr.c wrappers for ->i_mutex access 2016-01-22 18:04:28 -05:00
xattr.h