Whamcloud - gitweb
LU-12018 quota: do not start a thread under memory pressure 64/34464/4
authorAlex Zhuravlev <bzzz@whamcloud.com>
Tue, 26 Feb 2019 07:31:53 +0000 (10:31 +0300)
committerOleg Drokin <green@whamcloud.com>
Mon, 1 Apr 2019 06:19:17 +0000 (06:19 +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"

Lustre-change: https://review.whamcloud.com/34328
Lustre-commit: 94b11d5a7c55f4f6aff918c3b565b74cb18d04fb

Change-Id: I88f14da24ea64dcc02a9fd1f4a9c03f5771f8fda
Signed-off-by: Alex Zhuravlev <bzzz@whamcloud.com>
Reviewed-by: Wang Shilong <wshilong@ddn.com>
Reviewed-by: Hongchao Zhang <hongchao@whamcloud.com>
Signed-off-by: Minh Diep <mdiep@whamcloud.com>
Reviewed-on: https://review.whamcloud.com/34464
Reviewed-by: Andreas Dilger <adilger@whamcloud.com>
Tested-by: Jenkins
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);