diff mbox series

Avoid that a kernel warning appears during system resume

Message ID 20190315232758.221199-1-bvanassche@acm.org (mailing list archive)
State Mainlined
Commit 17605afaae825b0291f80c62a7f6565879edaa8a
Headers show
Series Avoid that a kernel warning appears during system resume | expand

Commit Message

Bart Van Assche March 15, 2019, 11:27 p.m. UTC
Since scsi_device_quiesce() skips SCSI devices that have another state
than RUNNING, OFFLINE or TRANSPORT_OFFLINE, scsi_device_resume() should
not complain about SCSI devices that have been skipped. Hence this patch.
This patch avoids that the following warning appears during resume:

WARNING: CPU: 3 PID: 1039 at blk_clear_pm_only+0x2a/0x30
CPU: 3 PID: 1039 Comm: kworker/u8:49 Not tainted 5.0.0+ #1
Hardware name: LENOVO 4180F42/4180F42, BIOS 83ET75WW (1.45 ) 05/10/2013
Workqueue: events_unbound async_run_entry_fn
RIP: 0010:blk_clear_pm_only+0x2a/0x30
Call Trace:
 ? scsi_device_resume+0x28/0x50
 ? scsi_dev_type_resume+0x2b/0x80
 ? async_run_entry_fn+0x2c/0xd0
 ? process_one_work+0x1f0/0x3f0
 ? worker_thread+0x28/0x3c0
 ? process_one_work+0x3f0/0x3f0
 ? kthread+0x10c/0x130
 ? __kthread_create_on_node+0x150/0x150
 ? ret_from_fork+0x1f/0x30

Cc: Christoph Hellwig <hch@lst.de>
Cc: Hannes Reinecke <hare@suse.com>
Cc: Ming Lei <ming.lei@redhat.com>
Cc: Johannes Thumshirn <jthumshirn@suse.de>
Cc: Oleksandr Natalenko <oleksandr@natalenko.name>
Cc: Martin Steigerwald <martin@lichtvoll.de>
Cc: <stable@vger.kernel.org>
Reported-by: Jisheng Zhang <Jisheng.Zhang@synaptics.com>
Tested-by: Jisheng Zhang <Jisheng.Zhang@synaptics.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 | 6 ++++--
 1 file changed, 4 insertions(+), 2 deletions(-)

Comments

Martin Steigerwald March 16, 2019, 10:43 a.m. UTC | #1
Hi Bart.

Bart Van Assche - 16.03.19, 00:27:
> Since scsi_device_quiesce() skips SCSI devices that have another state
> than RUNNING, OFFLINE or TRANSPORT_OFFLINE, scsi_device_resume()
> should not complain about SCSI devices that have been skipped. Hence
> this patch. This patch avoids that the following warning appears
> during resume:

Am I on CC cause one of those warnings appeared in bug reports from me 
from quite some time ago?

> WARNING: CPU: 3 PID: 1039 at blk_clear_pm_only+0x2a/0x30
> CPU: 3 PID: 1039 Comm: kworker/u8:49 Not tainted 5.0.0+ #1
> Hardware name: LENOVO 4180F42/4180F42, BIOS 83ET75WW (1.45 )

This at least does not appear to be this ThinkPad T520, as I have BIOS 
version 1.49 already.

Thanks and have good weekend,
Martin

> 05/10/2013 Workqueue: events_unbound async_run_entry_fn
> RIP: 0010:blk_clear_pm_only+0x2a/0x30
> Call Trace:
>  ? scsi_device_resume+0x28/0x50
>  ? scsi_dev_type_resume+0x2b/0x80
>  ? async_run_entry_fn+0x2c/0xd0
>  ? process_one_work+0x1f0/0x3f0
>  ? worker_thread+0x28/0x3c0
>  ? process_one_work+0x3f0/0x3f0
>  ? kthread+0x10c/0x130
>  ? __kthread_create_on_node+0x150/0x150
>  ? ret_from_fork+0x1f/0x30
> 
> Cc: Christoph Hellwig <hch@lst.de>
> Cc: Hannes Reinecke <hare@suse.com>
> Cc: Ming Lei <ming.lei@redhat.com>
> Cc: Johannes Thumshirn <jthumshirn@suse.de>
> Cc: Oleksandr Natalenko <oleksandr@natalenko.name>
> Cc: Martin Steigerwald <martin@lichtvoll.de>
> Cc: <stable@vger.kernel.org>
> Reported-by: Jisheng Zhang <Jisheng.Zhang@synaptics.com>
> Tested-by: Jisheng Zhang <Jisheng.Zhang@synaptics.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 | 6 ++++--
>  1 file changed, 4 insertions(+), 2 deletions(-)
> 
> diff --git a/drivers/scsi/scsi_lib.c b/drivers/scsi/scsi_lib.c
> index 324f830ee9fa..54ad751b42b8 100644
> --- a/drivers/scsi/scsi_lib.c
> +++ b/drivers/scsi/scsi_lib.c
> @@ -2541,8 +2541,10 @@ void scsi_device_resume(struct scsi_device
> *sdev) * device deleted during suspend)
>  	 */
>  	mutex_lock(&sdev->state_mutex);
> -	sdev->quiesced_by = NULL;
> -	blk_clear_pm_only(sdev->request_queue);
> +	if (sdev->quiesced_by) {
> +		sdev->quiesced_by = NULL;
> +		blk_clear_pm_only(sdev->request_queue);
> +	}
>  	if (sdev->sdev_state == SDEV_QUIESCE)
>  		scsi_device_set_state(sdev, SDEV_RUNNING);
>  	mutex_unlock(&sdev->state_mutex);
Bart Van Assche March 16, 2019, 9:28 p.m. UTC | #2
On 3/16/19 3:43 AM, Martin Steigerwald wrote:
> Bart Van Assche - 16.03.19, 00:27:
>> Since scsi_device_quiesce() skips SCSI devices that have another state
>> than RUNNING, OFFLINE or TRANSPORT_OFFLINE, scsi_device_resume()
>> should not complain about SCSI devices that have been skipped. Hence
>> this patch. This patch avoids that the following warning appears
>> during resume:
> 
> Am I on CC cause one of those warnings appeared in bug reports from me
> from quite some time ago?

Hi Martin,

That's correct. I hope that you don't mind that I cc'ed you?

>> WARNING: CPU: 3 PID: 1039 at blk_clear_pm_only+0x2a/0x30
>> CPU: 3 PID: 1039 Comm: kworker/u8:49 Not tainted 5.0.0+ #1
>> Hardware name: LENOVO 4180F42/4180F42, BIOS 83ET75WW (1.45 )
> 
> This at least does not appear to be this ThinkPad T520, as I have BIOS
> version 1.49 already.

The call trace in the patch description is only an example. I think the 
problem description and the patch applies to all systems that have one 
or more SCSI disks.

Best regards,

Bart.
Martin Steigerwald March 17, 2019, 2:20 p.m. UTC | #3
Hi Bart.

Bart Van Assche - 16.03.19, 22:28:
> On 3/16/19 3:43 AM, Martin Steigerwald wrote:
> > Bart Van Assche - 16.03.19, 00:27:
> >> Since scsi_device_quiesce() skips SCSI devices that have another
> >> state than RUNNING, OFFLINE or TRANSPORT_OFFLINE,
> >> scsi_device_resume() should not complain about SCSI devices that
> >> have been skipped. Hence this patch. This patch avoids that the
> >> following warning appears> 
> >> during resume:
> > Am I on CC cause one of those warnings appeared in bug reports from
> > me from quite some time ago?
[…]
> That's correct. I hope that you don't mind that I cc'ed you?

No, I don't mind.

Would you like me to apply the patch in order to test it? As it is just 
about suppressing a kernel warning and not changing any major 
functionality, I wondered whether you like me to do with this or whether 
the CC is more JFYI.

> >> WARNING: CPU: 3 PID: 1039 at blk_clear_pm_only+0x2a/0x30
> >> CPU: 3 PID: 1039 Comm: kworker/u8:49 Not tainted 5.0.0+ #1
> >> Hardware name: LENOVO 4180F42/4180F42, BIOS 83ET75WW (1.45 )
> > 
> > This at least does not appear to be this ThinkPad T520, as I have
> > BIOS version 1.49 already.
> 
> The call trace in the patch description is only an example. I think
> the problem description and the patch applies to all systems that
> have one or more SCSI disks.

Best,
Bart Van Assche March 17, 2019, 5:19 p.m. UTC | #4
On 3/17/19 7:20 AM, Martin Steigerwald wrote:
> Bart Van Assche - 16.03.19, 22:28:
>> On 3/16/19 3:43 AM, Martin Steigerwald wrote:
>>> Bart Van Assche - 16.03.19, 00:27:
>>>> Since scsi_device_quiesce() skips SCSI devices that have another
>>>> state than RUNNING, OFFLINE or TRANSPORT_OFFLINE,
>>>> scsi_device_resume() should not complain about SCSI devices that
>>>> have been skipped. Hence this patch. This patch avoids that the
>>>> following warning appears>
>>>> during resume:
>>> Am I on CC cause one of those warnings appeared in bug reports from
>>> me from quite some time ago?
> […]
>> That's correct. I hope that you don't mind that I cc'ed you?
> 
> No, I don't mind.
> 
> Would you like me to apply the patch in order to test it? As it is just
> about suppressing a kernel warning and not changing any major
> functionality, I wondered whether you like me to do with this or whether
> the CC is more JFYI.

Hi Martin,

I had cc'd you in case you would have hit the same warning. If you have 
not yet encountered this warning it's probably not that important that 
you test this patch.

Best regards,

Bart.
Martin K. Petersen March 19, 2019, 6:27 p.m. UTC | #5
Bart,

> Since scsi_device_quiesce() skips SCSI devices that have another state
> than RUNNING, OFFLINE or TRANSPORT_OFFLINE, scsi_device_resume()
> should not complain about SCSI devices that have been skipped. Hence
> this patch.  This patch avoids that the following warning appears
> during resume:

Applied to 5.1/scsi-fixes, thanks!
Bart Van Assche March 25, 2019, 4:47 a.m. UTC | #6
On 3/24/19 5:38 PM, Sasha Levin wrote:
> [This is an automated email]
> 
> This commit has been processed because it contains a "Fixes:" tag,
> fixing commit: 3a0a529971ec block, scsi: Make SCSI quiesce and resume work reliably.
> 
> The bot has tested the following trees: v5.0.3, v4.19.30.
> 
> v5.0.3: Build OK!
> v4.19.30: Failed to apply! Possible dependencies:
>      cd84a62e0078 ("block, scsi: Change the preempt-only flag into a counter")
> 
> 
> How should we proceed with this patch?

I think if you want to backport that patch that you will also have to 
backport commit cd84a62e0078 ("block, scsi: Change the preempt-only flag 
into a counter") (kernel v4.20).

Bart.
diff mbox series

Patch

diff --git a/drivers/scsi/scsi_lib.c b/drivers/scsi/scsi_lib.c
index 324f830ee9fa..54ad751b42b8 100644
--- a/drivers/scsi/scsi_lib.c
+++ b/drivers/scsi/scsi_lib.c
@@ -2541,8 +2541,10 @@  void scsi_device_resume(struct scsi_device *sdev)
 	 * device deleted during suspend)
 	 */
 	mutex_lock(&sdev->state_mutex);
-	sdev->quiesced_by = NULL;
-	blk_clear_pm_only(sdev->request_queue);
+	if (sdev->quiesced_by) {
+		sdev->quiesced_by = NULL;
+		blk_clear_pm_only(sdev->request_queue);
+	}
 	if (sdev->sdev_state == SDEV_QUIESCE)
 		scsi_device_set_state(sdev, SDEV_RUNNING);
 	mutex_unlock(&sdev->state_mutex);