[PATCH v5 7/7] scsi: improve warning message in scsi_device_block()

mwilck
2023-06-12T16:52:15Z

From: Martin Wilck <mwilck@suse.com>

If __scsi_internal_device_block() returns an error, it is always -EINVAL
because of an invalid state transition. For debugging purposes, it makes
more sense to print the device state.

Signed-off-by: Martin Wilck <mwilck@suse.com>
---
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 1ddd75e6d600..243c7e91e297 100644
--- a/drivers/scsi/scsi_lib.c
+++ b/drivers/scsi/scsi_lib.c
@@ -2789,9 +2789,11 @@ EXPORT_SYMBOL_GPL(scsi_internal_device_block_nowait);
static void scsi_device_block(struct scsi_device *sdev, void *data)
{
int err;
+ enum scsi_device_state state;

mutex_lock(&sdev->state_mutex);
err = __scsi_internal_device_block_nowait(sdev);
+ state = sdev->sdev_state;
if (err == 0)
/*
* scsi_stop_queue() must be called with the state_mutex
@@ -2802,8 +2804,8 @@ static void scsi_device_block(struct scsi_device *sdev, void *data)

mutex_unlock(&sdev->state_mutex);

- WARN_ONCE(err, "__scsi_internal_device_block_nowait(%s) failed: err = %d\n",
- dev_name(&sdev->sdev_gendev), err);
+ WARN_ONCE(err, "%s: failed to block %s in state %d\n",
+ __func__, dev_name(&sdev->sdev_gendev), state);
}

/**
--
2.40.1