• X
    ocfs2/dlm: add DEREF_DONE message · 60d663cb
    xuejiufei 提交于
    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: Nxuejiufei <xuejiufei@huawei.com>
    Cc: Mark Fasheh <mfasheh@suse.de>
    Cc: Joel Becker <jlbec@evilplan.org>
    Cc: Junxiao Bi <junxiao.bi@oracle.com>
    Reviewed-by: NJoseph Qi <joseph.qi@huawei.com>
    Signed-off-by: NAndrew Morton <akpm@linux-foundation.org>
    Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
    60d663cb
dlmmaster.c 99.0 KB