lkml.org 
[lkml]   [2019]   [Feb]   [11]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 4.14 013/205] dlm: Dont swamp the CPU with callbacks queued during recovery
    Date
    4.14-stable review patch.  If anyone has any objections, please let me know.

    ------------------

    [ Upstream commit 216f0efd19b9cc32207934fd1b87a45f2c4c593e ]

    Before this patch, recovery would cause all callbacks to be delayed,
    put on a queue, and afterward they were all queued to the callback
    work queue. This patch does the same thing, but occasionally takes
    a break after 25 of them so it won't swamp the CPU at the expense
    of other RT processes like corosync.

    Signed-off-by: Bob Peterson <rpeterso@redhat.com>
    Signed-off-by: David Teigland <teigland@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    ---
    fs/dlm/ast.c | 10 ++++++++++
    1 file changed, 10 insertions(+)

    diff --git a/fs/dlm/ast.c b/fs/dlm/ast.c
    index 07fed838d8fd..15fa4239ae9f 100644
    --- a/fs/dlm/ast.c
    +++ b/fs/dlm/ast.c
    @@ -290,6 +290,8 @@ void dlm_callback_suspend(struct dlm_ls *ls)
    flush_workqueue(ls->ls_callback_wq);
    }

    +#define MAX_CB_QUEUE 25
    +
    void dlm_callback_resume(struct dlm_ls *ls)
    {
    struct dlm_lkb *lkb, *safe;
    @@ -300,15 +302,23 @@ void dlm_callback_resume(struct dlm_ls *ls)
    if (!ls->ls_callback_wq)
    return;

    +more:
    mutex_lock(&ls->ls_cb_mutex);
    list_for_each_entry_safe(lkb, safe, &ls->ls_cb_delay, lkb_cb_list) {
    list_del_init(&lkb->lkb_cb_list);
    queue_work(ls->ls_callback_wq, &lkb->lkb_cb_work);
    count++;
    + if (count == MAX_CB_QUEUE)
    + break;
    }
    mutex_unlock(&ls->ls_cb_mutex);

    if (count)
    log_rinfo(ls, "dlm_callback_resume %d", count);
    + if (count == MAX_CB_QUEUE) {
    + count = 0;
    + cond_resched();
    + goto more;
    + }
    }

    --
    2.19.1


    \
     
     \ /
      Last update: 2019-02-11 15:55    [W:4.581 / U:0.284 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site