]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
dlm: save callback debug info earlier
authorAlexander Aring <aahringo@redhat.com>
Thu, 28 Mar 2024 15:48:39 +0000 (11:48 -0400)
committerDavid Teigland <teigland@redhat.com>
Mon, 1 Apr 2024 18:31:12 +0000 (13:31 -0500)
Save lkb callback info when queueing the callback so that the
lkb struct is not needed in the callback workqueue processing.

Signed-off-by: Alexander Aring <aahringo@redhat.com>
Signed-off-by: David Teigland <teigland@redhat.com>
fs/dlm/ast.c

index dd7cca3c1472f2b3a10c257b39d6dea39e307d92..cadbcbe0786b2af38f2be093d1ffab3ce2adcc0a 100644 (file)
@@ -105,8 +105,13 @@ int dlm_enqueue_lkb_callback(struct dlm_lkb *lkb, uint32_t flags, int mode,
 
        list_add_tail(&cb->list, &lkb->lkb_callbacks);
 
-       if (flags & DLM_CB_CAST)
+       if (flags & DLM_CB_BAST) {
+               lkb->lkb_last_bast_time = ktime_get();
+               lkb->lkb_last_bast_mode = cb->mode;
+       } else if (flags & DLM_CB_CAST) {
                dlm_callback_set_last_ptr(&lkb->lkb_last_cast, cb);
+               lkb->lkb_last_cast_time = ktime_get();
+       }
 
        dlm_callback_set_last_ptr(&lkb->lkb_last_cb, cb);
 
@@ -194,8 +199,6 @@ void dlm_callback_work(struct work_struct *work)
                        trace_dlm_bast(ls->ls_global_id, lkb->lkb_id,
                                       cb->mode, rsb->res_name,
                                       rsb->res_length);
-                       lkb->lkb_last_bast_time = ktime_get();
-                       lkb->lkb_last_bast_mode = cb->mode;
                        bastfn(lkb->lkb_astparam, cb->mode);
                } else if (cb->flags & DLM_CB_CAST) {
                        lkb->lkb_lksb->sb_status = cb->sb_status;
@@ -203,7 +206,6 @@ void dlm_callback_work(struct work_struct *work)
                        trace_dlm_ast(ls->ls_global_id, lkb->lkb_id,
                                      cb->sb_flags, cb->sb_status,
                                      rsb->res_name, rsb->res_length);
-                       lkb->lkb_last_cast_time = ktime_get();
                        castfn(lkb->lkb_astparam);
                }