Commit ccd8b1f9 authored by Kurt Hackel's avatar Kurt Hackel Committed by Mark Fasheh
Browse files

ocfs2: update lvb immediately during recovery

parent 588e0090
Loading
Loading
Loading
Loading
+26 −18
Original line number Diff line number Diff line
@@ -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: