nvme: Prevent resets during paused controller state
authorKeith Busch <kbusch@kernel.org>
Fri, 6 Sep 2019 17:23:08 +0000 (11:23 -0600)
committerKeith Busch <kbusch@kernel.org>
Mon, 14 Oct 2019 14:21:54 +0000 (23:21 +0900)
commit4c75f877853cfa81b12374a07208e07b077f39b8
treedcac648e8a57d4661743094f6ec2c565d36132ee
parent92b98e88d59ab17e65f261fbb5db272143ccf414
nvme: Prevent resets during paused controller state

A paused controller is doing critical internal activation work in the
background. Prevent subsequent controller resets from occurring during
this period by setting the controller state to RESETTING first. A helper
function, nvme_try_sched_reset_work(), is introduced for these paths so
they may continue with scheduling the reset_work after they've completed
their uninterruptible critical section.

Tested-by: Edmund Nadolski <edmund.nadolski@intel.com>
Reviewed-by: Christoph Hellwig <hch@lst.de>
Signed-off-by: Keith Busch <kbusch@kernel.org>
drivers/nvme/host/core.c