|
@@ -150,7 +150,8 @@ scsi devices of which only the first 2 respond:
|
|
|
LLD mid level LLD
|
|
|
===-------------------=========--------------------===------
|
|
|
scsi_host_alloc() -->
|
|
|
-scsi_add_host() --------+
|
|
|
+scsi_add_host() ---->
|
|
|
+scsi_scan_host() -------+
|
|
|
|
|
|
|
slave_alloc()
|
|
|
slave_configure() --> scsi_adjust_queue_depth()
|
|
@@ -196,7 +197,7 @@ of the issues involved. See the section on reference counting below.
|
|
|
|
|
|
|
|
|
The hotplug concept may be extended to SCSI devices. Currently, when an
|
|
|
-HBA is added, the scsi_add_host() function causes a scan for SCSI devices
|
|
|
+HBA is added, the scsi_scan_host() function causes a scan for SCSI devices
|
|
|
attached to the HBA's SCSI transport. On newer SCSI transports the HBA
|
|
|
may become aware of a new SCSI device _after_ the scan has completed.
|
|
|
An LLD can use this sequence to make the mid level aware of a SCSI device:
|
|
@@ -372,7 +373,7 @@ names all start with "scsi_".
|
|
|
Summary:
|
|
|
scsi_activate_tcq - turn on tag command queueing
|
|
|
scsi_add_device - creates new scsi device (lu) instance
|
|
|
- scsi_add_host - perform sysfs registration and SCSI bus scan.
|
|
|
+ scsi_add_host - perform sysfs registration and set up transport class
|
|
|
scsi_adjust_queue_depth - change the queue depth on a SCSI device
|
|
|
scsi_assign_lock - replace default host_lock with given lock
|
|
|
scsi_bios_ptable - return copy of block device's partition table
|
|
@@ -386,6 +387,7 @@ Summary:
|
|
|
scsi_remove_device - detach and remove a SCSI device
|
|
|
scsi_remove_host - detach and remove all SCSI devices owned by host
|
|
|
scsi_report_bus_reset - report scsi _bus_ reset observed
|
|
|
+ scsi_scan_host - scan SCSI bus
|
|
|
scsi_track_queue_full - track successive QUEUE_FULL events
|
|
|
scsi_unblock_requests - allow further commands to be queued to given host
|
|
|
scsi_unregister - [calls scsi_host_put()]
|
|
@@ -425,10 +427,10 @@ void scsi_activate_tcq(struct scsi_device *sdev, int depth)
|
|
|
* Might block: yes
|
|
|
*
|
|
|
* Notes: This call is usually performed internally during a scsi
|
|
|
- * bus scan when an HBA is added (i.e. scsi_add_host()). So it
|
|
|
+ * bus scan when an HBA is added (i.e. scsi_scan_host()). So it
|
|
|
* should only be called if the HBA becomes aware of a new scsi
|
|
|
- * device (lu) after scsi_add_host() has completed. If successful
|
|
|
- * this call we lead to slave_alloc() and slave_configure() callbacks
|
|
|
+ * device (lu) after scsi_scan_host() has completed. If successful
|
|
|
+ * this call can lead to slave_alloc() and slave_configure() callbacks
|
|
|
* into the LLD.
|
|
|
*
|
|
|
* Defined in: drivers/scsi/scsi_scan.c
|
|
@@ -439,7 +441,7 @@ struct scsi_device * scsi_add_device(struct Scsi_Host *shost,
|
|
|
|
|
|
|
|
|
/**
|
|
|
- * scsi_add_host - perform sysfs registration and SCSI bus scan.
|
|
|
+ * scsi_add_host - perform sysfs registration and set up transport class
|
|
|
* @shost: pointer to scsi host instance
|
|
|
* @dev: pointer to struct device of type scsi class
|
|
|
*
|
|
@@ -448,7 +450,11 @@ struct scsi_device * scsi_add_device(struct Scsi_Host *shost,
|
|
|
* Might block: no
|
|
|
*
|
|
|
* Notes: Only required in "hotplug initialization model" after a
|
|
|
- * successful call to scsi_host_alloc().
|
|
|
+ * successful call to scsi_host_alloc(). This function does not
|
|
|
+ * scan the bus; this can be done by calling scsi_scan_host() or
|
|
|
+ * in some other transport-specific way. The LLD must set up
|
|
|
+ * the transport template before calling this function and may only
|
|
|
+ * access the transport class data after this function has been called.
|
|
|
*
|
|
|
* Defined in: drivers/scsi/hosts.c
|
|
|
**/
|
|
@@ -559,7 +565,7 @@ void scsi_deactivate_tcq(struct scsi_device *sdev, int depth)
|
|
|
* area for the LLD's exclusive use.
|
|
|
* Both associated refcounting objects have their refcount set to 1.
|
|
|
* Full registration (in sysfs) and a bus scan are performed later when
|
|
|
- * scsi_add_host() is called.
|
|
|
+ * scsi_add_host() and scsi_scan_host() are called.
|
|
|
*
|
|
|
* Defined in: drivers/scsi/hosts.c .
|
|
|
**/
|
|
@@ -698,6 +704,19 @@ int scsi_remove_host(struct Scsi_Host *shost)
|
|
|
void scsi_report_bus_reset(struct Scsi_Host * shost, int channel)
|
|
|
|
|
|
|
|
|
+/**
|
|
|
+ * scsi_scan_host - scan SCSI bus
|
|
|
+ * @shost: a pointer to a scsi host instance
|
|
|
+ *
|
|
|
+ * Might block: yes
|
|
|
+ *
|
|
|
+ * Notes: Should be called after scsi_add_host()
|
|
|
+ *
|
|
|
+ * Defined in: drivers/scsi/scsi_scan.c
|
|
|
+ **/
|
|
|
+void scsi_scan_host(struct Scsi_Host *shost)
|
|
|
+
|
|
|
+
|
|
|
/**
|
|
|
* scsi_track_queue_full - track successive QUEUE_FULL events on given
|
|
|
* device to determine if and when there is a need
|