Commit 740bb8fc authored by Alexander Aring's avatar Alexander Aring Committed by David Teigland
Browse files

fs: dlm: ast do WARN_ON_ONCE() on hotpath



This patch changes the ast hotpath functionality in very unlikely cases
that we do WARN_ON_ONCE() instead of WARN_ON() to not spamming the
console output if we run into states that it would occur over and over
again.

Signed-off-by: default avatarAlexander Aring <aahringo@redhat.com>
Signed-off-by: default avatarDavid Teigland <teigland@redhat.com>
parent 9267c857
Loading
Loading
Loading
Loading
+3 −3
Original line number Diff line number Diff line
@@ -161,12 +161,12 @@ void dlm_add_cb(struct dlm_lkb *lkb, uint32_t flags, int mode, int status,
		spin_unlock(&ls->ls_cb_lock);
		break;
	case DLM_ENQUEUE_CALLBACK_FAILURE:
		WARN_ON(1);
		WARN_ON_ONCE(1);
		break;
	case DLM_ENQUEUE_CALLBACK_SUCCESS:
		break;
	default:
		WARN_ON(1);
		WARN_ON_ONCE(1);
		break;
	}
	spin_unlock(&lkb->lkb_cb_lock);
@@ -185,7 +185,7 @@ void dlm_callback_work(struct work_struct *work)
	rv = dlm_dequeue_lkb_callback(lkb, &cb);
	spin_unlock(&lkb->lkb_cb_lock);

	if (WARN_ON(rv == DLM_DEQUEUE_CALLBACK_EMPTY))
	if (WARN_ON_ONCE(rv == DLM_DEQUEUE_CALLBACK_EMPTY))
		goto out;

	for (;;) {
+4 −4
Original line number Diff line number Diff line
@@ -214,7 +214,7 @@ void dlm_user_add_ast(struct dlm_lkb *lkb, uint32_t flags, int mode,
	switch (rv) {
	case DLM_ENQUEUE_CALLBACK_FAILURE:
		spin_unlock(&proc->asts_spin);
		WARN_ON(1);
		WARN_ON_ONCE(1);
		goto out;
	case DLM_ENQUEUE_CALLBACK_NEED_SCHED:
		kref_get(&lkb->lkb_ref);
@@ -224,7 +224,7 @@ void dlm_user_add_ast(struct dlm_lkb *lkb, uint32_t flags, int mode,
	case DLM_ENQUEUE_CALLBACK_SUCCESS:
		break;
	default:
		WARN_ON(1);
		WARN_ON_ONCE(1);
		break;
	}
	spin_unlock(&proc->asts_spin);
@@ -880,7 +880,7 @@ static ssize_t device_read(struct file *file, char __user *buf, size_t count,
		spin_unlock(&proc->asts_spin);
		/* removes ref for proc->asts, may cause lkb to be freed */
		dlm_put_lkb(lkb);
		WARN_ON(1);
		WARN_ON_ONCE(1);
		goto try_another;
	case DLM_DEQUEUE_CALLBACK_LAST:
		list_del_init(&lkb->lkb_cb_list);
@@ -890,7 +890,7 @@ static ssize_t device_read(struct file *file, char __user *buf, size_t count,
	case DLM_DEQUEUE_CALLBACK_SUCCESS:
		break;
	default:
		WARN_ON(1);
		WARN_ON_ONCE(1);
		break;
	}
	spin_unlock(&proc->asts_spin);