scsi: core: Rework scsi_host_block()
authorBart Van Assche <bvanassche@acm.org>
Mon, 29 May 2023 20:26:36 +0000 (13:26 -0700)
committerMartin K. Petersen <martin.petersen@oracle.com>
Wed, 31 May 2023 15:42:46 +0000 (11:42 -0400)
Make scsi_host_block() easier to read by converting it to the widely used
early-return style. See also commit f983622ae605 ("scsi: core: Avoid
calling synchronize_rcu() for each device in scsi_host_block()").

Reviewed-by: Mike Christie <michael.christie@oracle.com>
Reviewed-by: Ming Lei <ming.lei@redhat.com>
Cc: Ye Bin <yebin10@huawei.com>
Cc: Hannes Reinecke <hare@suse.de>
Signed-off-by: Bart Van Assche <bvanassche@acm.org>
Link: https://lore.kernel.org/r/20230529202640.11883-2-bvanassche@acm.org
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
drivers/scsi/scsi_lib.c

index b7c569a42aa477551597ff0629fc6c04888277fb..758a57616dd38cce224751e622101abffcf2c0e7 100644 (file)
@@ -2939,11 +2939,20 @@ scsi_target_unblock(struct device *dev, enum scsi_device_state new_state)
 }
 EXPORT_SYMBOL_GPL(scsi_target_unblock);
 
+/**
+ * scsi_host_block - Try to transition all logical units to the SDEV_BLOCK state
+ * @shost: device to block
+ *
+ * Pause SCSI command processing for all logical units associated with the SCSI
+ * host and wait until pending scsi_queue_rq() calls have finished.
+ *
+ * Returns zero if successful or a negative error code upon failure.
+ */
 int
 scsi_host_block(struct Scsi_Host *shost)
 {
        struct scsi_device *sdev;
-       int ret = 0;
+       int ret;
 
        /*
         * Call scsi_internal_device_block_nowait so we can avoid
@@ -2955,7 +2964,7 @@ scsi_host_block(struct Scsi_Host *shost)
                mutex_unlock(&sdev->state_mutex);
                if (ret) {
                        scsi_device_put(sdev);
-                       break;
+                       return ret;
                }
        }
 
@@ -2965,10 +2974,9 @@ scsi_host_block(struct Scsi_Host *shost)
         */
        WARN_ON_ONCE(shost->tag_set.flags & BLK_MQ_F_BLOCKING);
 
-       if (!ret)
-               synchronize_rcu();
+       synchronize_rcu();
 
-       return ret;
+       return 0;
 }
 EXPORT_SYMBOL_GPL(scsi_host_block);