]> asedeno.scripts.mit.edu Git - linux.git/commit
nvme: Avoid flush dependency in delete controller flow
authorNitzan Carmi <nitzanc@mellanox.com>
Mon, 9 Apr 2018 14:50:26 +0000 (17:50 +0300)
committerPaul E. McKenney <paulmck@linux.vnet.ibm.com>
Tue, 15 May 2018 17:28:03 +0000 (10:28 -0700)
commit4317228ad9b86f094d70c951f9210a8a9b2816be
tree6926b575d7c3fa2d091c13be18544fbc76109551
parentf7194ac32ca241d28765a98e42a7fe13debc85a7
nvme: Avoid flush dependency in delete controller flow

The nvme_delete_ctrl() function queues a work item on a MEM_RECLAIM
queue (nvme_delete_wq), which eventually calls cleanup_srcu_struct(),
which in turn flushes a delayed work from an !MEM_RECLAIM queue. This
is unsafe as we might trigger deadlocks under severe memory pressure.

Since we don't ever invoke call_srcu(), it is safe to use the shiny new
_quiesced() version of srcu cleanup, thus avoiding that flush dependency.
This commit makes that change.

Signed-off-by: Nitzan Carmi <nitzanc@mellanox.com>
Signed-off-by: Paul E. McKenney <paulmck@linux.vnet.ibm.com>
Reviewed-by: Max Gurtovoy <maxg@mellanox.com>
Tested-by: Nicholas Piggin <npiggin@gmail.com>
drivers/nvme/host/core.c