Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

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

ocfs2: temporarily disable automatic lock migration



Now we never change the owner of a lock resource until unmount or node
death. This will be re-enabled once some issues in the algorithm used have
been resolved.

Signed-off-by: default avatarKurt Hackel <kurt.hackel@oracle.com>
Signed-off-by: default avatarMark Fasheh <mark.fasheh@oracle.com>
parent 2abaf97e
Loading
Loading
Loading
Loading
+9 −5
Original line number Diff line number Diff line
@@ -227,14 +227,18 @@ static enum dlm_status dlmlock_remote(struct dlm_ctxt *dlm,
	res->state &= ~DLM_LOCK_RES_IN_PROGRESS;
	lock->lock_pending = 0;
	if (status != DLM_NORMAL) {
		if (status != DLM_NOTQUEUED)
		if (status != DLM_NOTQUEUED) {
			/*
			 * DO NOT call calc_usage, as this would unhash
			 * the remote lockres before we ever get to use
			 * it.  treat as if we never made any change to
			 * the lockres.
			 */
			lockres_changed = 0;
			dlm_error(status);
		}
		dlm_revert_pending_lock(res, lock);
		dlm_lock_put(lock);
		/* do NOT call calc_usage, as this would unhash the remote
		 * lockres before we ever get to use it.  treat as if we
		 * never made any change to the lockres. */
		lockres_changed = 0;
	} else if (dlm_is_recovery_lock(res->lockname.name, 
					res->lockname.len)) {
		/* special case for the $RECOVERY lock.
+14 −0
Original line number Diff line number Diff line
@@ -106,6 +106,20 @@ void __dlm_lockres_calc_usage(struct dlm_ctxt *dlm,
	assert_spin_locked(&res->spinlock);

	if (__dlm_lockres_unused(res)){
		/* For now, just keep any resource we master */
		if (res->owner == dlm->node_num)
		{
			if (!list_empty(&res->purge)) {
				mlog(0, "we master %s:%.*s, but it is on "
				     "the purge list.  Removing\n",
				     dlm->name, res->lockname.len,
				     res->lockname.name);
				list_del_init(&res->purge);
				dlm->purge_count--;
			}
			return;
		}

		if (list_empty(&res->purge)) {
			mlog(0, "putting lockres %.*s from purge list\n",
			     res->lockname.len, res->lockname.name);