fs: dlm: ast do WARN_ON_ONCE() on hotpath
authorAlexander Aring <aahringo@redhat.com>
Thu, 17 Nov 2022 22:11:42 +0000 (17:11 -0500)
committerDavid Teigland <teigland@redhat.com>
Mon, 21 Nov 2022 15:45:49 +0000 (09:45 -0600)
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: Alexander Aring <aahringo@redhat.com>
Signed-off-by: David Teigland <teigland@redhat.com>
fs/dlm/ast.c
fs/dlm/user.c

index 982d093b80cda8866dbc9fc0e44477bc3ef449e3..7dd072b8ea3832050801d6b285e8183b6e80150f 100644 (file)
@@ -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 (;;) {
index 6b530db4bc0b262a9f02cdff961640d2ec9fe461..edf722d6935a764d67c37ae8526a4a392cd5d913 100644 (file)
@@ -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);