Three minor fixes, two in drivers, one to fix a hang after reset with
iSCSI, and one to avoid a spurious log message; and the final core one
to correct a suspend/resume miscount with quiesced devices.

The patch is available here:

git://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi.git scsi-fixes

The short changelog is:

Bodo Stroesser (1):
      scsi: target: Put lun_ref at end of tmr processing

Can Guo (1):
      scsi: pm: Balance pm_only counter of request queue during system resume

Ewan D. Milne (1):
      scsi: qla2xxx: Do not log message when reading port speed via sysfs

And the diffstat:

 drivers/scsi/qla2xxx/qla_attr.c        |  3 ---
 drivers/scsi/scsi_pm.c                 | 10 ++++++++--
 drivers/target/target_core_transport.c |  1 +
 3 files changed, 9 insertions(+), 5 deletions(-)

With full diff below.

James

---

diff --git a/drivers/scsi/qla2xxx/qla_attr.c b/drivers/scsi/qla2xxx/qla_attr.c
index 33255968f03a..2c9e5ac24692 100644
--- a/drivers/scsi/qla2xxx/qla_attr.c
+++ b/drivers/scsi/qla2xxx/qla_attr.c
@@ -1850,9 +1850,6 @@ qla2x00_port_speed_show(struct device *dev, struct 
device_attribute *attr,
                return -EINVAL;
        }
 
-       ql_log(ql_log_info, vha, 0x70d6,
-           "port speed:%d\n", ha->link_data_rate);
-
        return scnprintf(buf, PAGE_SIZE, "%s\n", spd[ha->link_data_rate]);
 }
 
diff --git a/drivers/scsi/scsi_pm.c b/drivers/scsi/scsi_pm.c
index 3717eea37ecb..5f0ad8b32e3a 100644
--- a/drivers/scsi/scsi_pm.c
+++ b/drivers/scsi/scsi_pm.c
@@ -80,6 +80,10 @@ static int scsi_dev_type_resume(struct device *dev,
        dev_dbg(dev, "scsi resume: %d\n", err);
 
        if (err == 0) {
+               bool was_runtime_suspended;
+
+               was_runtime_suspended = pm_runtime_suspended(dev);
+
                pm_runtime_disable(dev);
                err = pm_runtime_set_active(dev);
                pm_runtime_enable(dev);
@@ -93,8 +97,10 @@ static int scsi_dev_type_resume(struct device *dev,
                 */
                if (!err && scsi_is_sdev_device(dev)) {
                        struct scsi_device *sdev = to_scsi_device(dev);
-
-                       blk_set_runtime_active(sdev->request_queue);
+                       if (was_runtime_suspended)
+                               blk_post_runtime_resume(sdev->request_queue, 0);
+                       else
+                               blk_set_runtime_active(sdev->request_queue);
                }
        }
 
diff --git a/drivers/target/target_core_transport.c 
b/drivers/target/target_core_transport.c
index 594b724bbf79..264a822c0bfa 100644
--- a/drivers/target/target_core_transport.c
+++ b/drivers/target/target_core_transport.c
@@ -3350,6 +3350,7 @@ static void target_tmr_work(struct work_struct *work)
 
        cmd->se_tfo->queue_tm_rsp(cmd);
 
+       transport_lun_remove_cmd(cmd);
        transport_cmd_check_stop_to_fabric(cmd);
        return;
 

Reply via email to