mirror of
https://github.com/torvalds/linux.git
synced 2024-12-29 06:12:08 +00:00
ocfs2: update lvb immediately during recovery
Signed-off-by: Kurt Hackel <kurt.hackel@oracle.com> Signed-off-by: Mark Fasheh <mark.fasheh@oracle.com>
This commit is contained in:
parent
588e00902b
commit
ccd8b1f916
@ -1675,12 +1675,20 @@ static int dlm_process_recovery_data(struct dlm_ctxt *dlm,
|
||||
lksb->flags |= (ml->flags &
|
||||
(DLM_LKSB_PUT_LVB|DLM_LKSB_GET_LVB));
|
||||
|
||||
if (ml->type == LKM_NLMODE)
|
||||
goto skip_lvb;
|
||||
|
||||
if (!dlm_lvb_is_empty(mres->lvb)) {
|
||||
if (lksb->flags & DLM_LKSB_PUT_LVB) {
|
||||
/* other node was trying to update
|
||||
* lvb when node died. recreate the
|
||||
* lksb with the updated lvb. */
|
||||
memcpy(lksb->lvb, mres->lvb, DLM_LVB_LEN);
|
||||
/* the lock resource lvb update must happen
|
||||
* NOW, before the spinlock is dropped.
|
||||
* we no longer wait for the AST to update
|
||||
* the lvb. */
|
||||
memcpy(res->lvb, mres->lvb, DLM_LVB_LEN);
|
||||
} else {
|
||||
/* otherwise, the node is sending its
|
||||
* most recent valid lvb info */
|
||||
@ -1707,7 +1715,7 @@ static int dlm_process_recovery_data(struct dlm_ctxt *dlm,
|
||||
memcpy(res->lvb, mres->lvb, DLM_LVB_LEN);
|
||||
}
|
||||
}
|
||||
|
||||
skip_lvb:
|
||||
|
||||
/* NOTE:
|
||||
* wrt lock queue ordering and recovery:
|
||||
|
Loading…
Reference in New Issue
Block a user