Whamcloud - gitweb
LU-12018 quota: do not start a thread under memory pressure 28/34328/2
authorAlex Zhuravlev <bzzz@whamcloud.com>
Tue, 26 Feb 2019 07:31:53 +0000 (10:31 +0300)
committerOleg Drokin <green@whamcloud.com>
Sun, 3 Mar 2019 00:21:54 +0000 (00:21 +0000)
this leads to a deadlock as kthreadd creating new threads
can get stuck waiting for memory as well:

PID: 2 TASK: ffff88015d1e0fb0 CPU: 3 COMMAND: "kthreadd"

Change-Id: I88f14da24ea64dcc02a9fd1f4a9c03f5771f8fda
Signed-off-by: Alex Zhuravlev <bzzz@whamcloud.com>
Reviewed-on: https://review.whamcloud.com/34328
Tested-by: Jenkins
Reviewed-by: Wang Shilong <wshilong@ddn.com>
Reviewed-by: Hongchao Zhang <hongchao@whamcloud.com>
Tested-by: Maloo <maloo@whamcloud.com>
Reviewed-by: Oleg Drokin <green@whamcloud.com>
lustre/quota/qsd_reint.c

index a74d9f5..fb90ca1 100644 (file)
@@ -639,6 +639,10 @@ int qsd_start_reint_thread(struct qsd_qtype_info *qqi)
        char                    *name;
        ENTRY;
 
+       /* do not try to start a new thread as this can lead to a deadlock */
+       if (current->flags & (PF_MEMALLOC | PF_KSWAPD))
+               RETURN(0);
+
        if (qsd->qsd_dev->dd_rdonly)
                RETURN(0);