diff mbox series

Avoid that system resume triggers a kernel warning

Message ID 20190227003526.53872-1-bvanassche@acm.org (mailing list archive)
State Mainlined
Commit 388b4e6a00bb3097278ed1648ac5a1cb48c894e6
Headers show
Series Avoid that system resume triggers a kernel warning | expand

Commit Message

Bart Van Assche Feb. 27, 2019, 12:35 a.m. UTC
scsi_device_quiesce() and scsi_device_resume() are called during
system-wide suspend and resume. scsi_device_quiesce() only succeeds
for SCSI devices that are in one of the RUNNING, OFFLINE or
TRANSPORT_OFFLINE states (see also scsi_set_device_state()).
This patch avoids that the following warning is triggered when
resuming a system for which quiescing a SCSI device failed:

WARNING: CPU: 2 PID: 11303 at drivers/scsi/scsi_lib.c:2600 scsi_device_resume+0x4f/0x58
CPU: 2 PID: 11303 Comm: kworker/u8:70 Not tainted 5.0.0-rc1+ #50
Hardware name: LENOVO 80E3/Lancer 5B2, BIOS A2CN45WW(V2.13) 08/04/2016
Workqueue: events_unbound async_run_entry_fn
Call Trace:
 scsi_dev_type_resume+0x2e/0x60
 async_run_entry_fn+0x32/0xd8
 process_one_work+0x1f4/0x420
 worker_thread+0x28/0x3c0
 kthread+0x118/0x130
 ret_from_fork+0x22/0x40

Cc: Przemek Socha <soprwa@gmail.com>
Reported-by: Przemek Socha <soprwa@gmail.com>
Fixes: 3a0a529971ec ("block, scsi: Make SCSI quiesce and resume work reliably") # v4.15
Signed-off-by: Bart Van Assche <bvanassche@acm.org>
---
 drivers/scsi/scsi_lib.c | 1 -
 1 file changed, 1 deletion(-)

Comments

Martin K. Petersen Feb. 27, 2019, 1:52 p.m. UTC | #1
Bart,

> scsi_device_quiesce() and scsi_device_resume() are called during
> system-wide suspend and resume. scsi_device_quiesce() only succeeds
> for SCSI devices that are in one of the RUNNING, OFFLINE or
> TRANSPORT_OFFLINE states (see also scsi_set_device_state()).
> This patch avoids that the following warning is triggered when
> resuming a system for which quiescing a SCSI device failed:

Applied to 5.0/scsi-fixes, thanks!
diff mbox series

Patch

diff --git a/drivers/scsi/scsi_lib.c b/drivers/scsi/scsi_lib.c
index c77cb0d31dbc..c73045a5f739 100644
--- a/drivers/scsi/scsi_lib.c
+++ b/drivers/scsi/scsi_lib.c
@@ -2541,7 +2541,6 @@  void scsi_device_resume(struct scsi_device *sdev)
 	 * device deleted during suspend)
 	 */
 	mutex_lock(&sdev->state_mutex);
-	WARN_ON_ONCE(!sdev->quiesced_by);
 	sdev->quiesced_by = NULL;
 	blk_clear_pm_only(sdev->request_queue);
 	if (sdev->sdev_state == SDEV_QUIESCE)