lkml.org 
[lkml]   [2022]   [Aug]   [14]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH AUTOSEL 5.15 43/46] nvmet-tcp: fix lockdep complaint on nvmet_tcp_wq flush during queue teardown
    Date
    From: Sagi Grimberg <sagi@grimberg.me>

    [ Upstream commit 533d2e8b4d5e4c89772a0adce913525fb86cbbee ]

    We probably need nvmet_tcp_wq to have MEM_RECLAIM as we are
    sending/receiving for the socket from works on this workqueue.
    Also this eliminates lockdep complaints:
    --
    [ 6174.010200] workqueue: WQ_MEM_RECLAIM
    nvmet-wq:nvmet_tcp_release_queue_work [nvmet_tcp] is flushing
    !WQ_MEM_RECLAIM nvmet_tcp_wq:nvmet_tcp_io_work [nvmet_tcp]
    [ 6174.010216] WARNING: CPU: 20 PID: 14456 at kernel/workqueue.c:2628
    check_flush_dependency+0x110/0x14c

    Reported-by: Yi Zhang <yi.zhang@redhat.com>
    Signed-off-by: Sagi Grimberg <sagi@grimberg.me>
    Signed-off-by: Christoph Hellwig <hch@lst.de>
    Signed-off-by: Jens Axboe <axboe@kernel.dk>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    ---
    drivers/nvme/target/tcp.c | 3 ++-
    1 file changed, 2 insertions(+), 1 deletion(-)

    diff --git a/drivers/nvme/target/tcp.c b/drivers/nvme/target/tcp.c
    index f592e5f7f5f3..889c5433c94d 100644
    --- a/drivers/nvme/target/tcp.c
    +++ b/drivers/nvme/target/tcp.c
    @@ -1834,7 +1834,8 @@ static int __init nvmet_tcp_init(void)
    {
    int ret;

    - nvmet_tcp_wq = alloc_workqueue("nvmet_tcp_wq", WQ_HIGHPRI, 0);
    + nvmet_tcp_wq = alloc_workqueue("nvmet_tcp_wq",
    + WQ_MEM_RECLAIM | WQ_HIGHPRI, 0);
    if (!nvmet_tcp_wq)
    return -ENOMEM;

    --
    2.35.1
    \
     
     \ /
      Last update: 2022-08-14 17:49    [W:2.431 / U:0.008 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site