aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/scsi
diff options
context:
space:
mode:
authorRob Landley <rob@landley.net>2007-11-03 14:30:39 -0400
committerJames Bottomley <James.Bottomley@HansenPartnership.com>2008-01-11 19:22:40 -0500
commiteb44820c28bc9a042e1157b41c677018a8fdfc74 (patch)
treede027b3cd40533488805ef7ee8156f077cd2b7e5 /drivers/scsi
parent3f48985823001c89c9bd5c5e57cc07530578dfcc (diff)
[SCSI] Add Documentation and integrate into docbook build
Add Documentation/DocBook/scsi_midlayer.tmpl, add to Makefile, and update lots of kerneldoc comments in drivers/scsi/*. Updated with comments from Stefan Richter, Stephen M. Cameron, James Bottomley and Randy Dunlap. Signed-off-by: Rob Landley <rob@landley.net> Signed-off-by: James Bottomley <James.Bottomley@HansenPartnership.com>
Diffstat (limited to 'drivers/scsi')
-rw-r--r--drivers/scsi/constants.c1
-rw-r--r--drivers/scsi/hosts.c4
-rw-r--r--drivers/scsi/scsi.c183
-rw-r--r--drivers/scsi/scsi_devinfo.c34
-rw-r--r--drivers/scsi/scsi_error.c46
-rw-r--r--drivers/scsi/scsi_ioctl.c24
-rw-r--r--drivers/scsi/scsi_lib.c42
-rw-r--r--drivers/scsi/scsi_netlink.c19
-rw-r--r--drivers/scsi/scsi_proc.c110
-rw-r--r--drivers/scsi/scsi_scan.c32
-rw-r--r--drivers/scsi/scsi_transport_fc.c102
-rw-r--r--drivers/scsi/scsi_transport_iscsi.c17
-rw-r--r--drivers/scsi/scsi_transport_sas.c40
-rw-r--r--drivers/scsi/scsi_transport_srp.c10
-rw-r--r--drivers/scsi/scsicam.c35
15 files changed, 411 insertions, 288 deletions
diff --git a/drivers/scsi/constants.c b/drivers/scsi/constants.c
index fac4314cd2ad..403a7f2d8f9b 100644
--- a/drivers/scsi/constants.c
+++ b/drivers/scsi/constants.c
@@ -362,7 +362,6 @@ void scsi_print_command(struct scsi_cmnd *cmd)
362EXPORT_SYMBOL(scsi_print_command); 362EXPORT_SYMBOL(scsi_print_command);
363 363
364/** 364/**
365 *
366 * scsi_print_status - print scsi status description 365 * scsi_print_status - print scsi status description
367 * @scsi_status: scsi status value 366 * @scsi_status: scsi status value
368 * 367 *
diff --git a/drivers/scsi/hosts.c b/drivers/scsi/hosts.c
index 24271a871b8c..9a10b4335e76 100644
--- a/drivers/scsi/hosts.c
+++ b/drivers/scsi/hosts.c
@@ -54,8 +54,7 @@ static struct class shost_class = {
54}; 54};
55 55
56/** 56/**
57 * scsi_host_set_state - Take the given host through the host 57 * scsi_host_set_state - Take the given host through the host state model.
58 * state model.
59 * @shost: scsi host to change the state of. 58 * @shost: scsi host to change the state of.
60 * @state: state to change to. 59 * @state: state to change to.
61 * 60 *
@@ -431,7 +430,6 @@ EXPORT_SYMBOL(scsi_unregister);
431 430
432/** 431/**
433 * scsi_host_lookup - get a reference to a Scsi_Host by host no 432 * scsi_host_lookup - get a reference to a Scsi_Host by host no
434 *
435 * @hostnum: host number to locate 433 * @hostnum: host number to locate
436 * 434 *
437 * Return value: 435 * Return value:
diff --git a/drivers/scsi/scsi.c b/drivers/scsi/scsi.c
index 0fb1709ce5e3..412a351c6cf7 100644
--- a/drivers/scsi/scsi.c
+++ b/drivers/scsi/scsi.c
@@ -122,6 +122,11 @@ static const char *const scsi_device_types[] = {
122 "Automation/Drive ", 122 "Automation/Drive ",
123}; 123};
124 124
125/**
126 * scsi_device_type - Return 17 char string indicating device type.
127 * @type: type number to look up
128 */
129
125const char * scsi_device_type(unsigned type) 130const char * scsi_device_type(unsigned type)
126{ 131{
127 if (type == 0x1e) 132 if (type == 0x1e)
@@ -156,6 +161,14 @@ static struct scsi_host_cmd_pool scsi_cmd_dma_pool = {
156 161
157static DEFINE_MUTEX(host_cmd_pool_mutex); 162static DEFINE_MUTEX(host_cmd_pool_mutex);
158 163
164/**
165 * __scsi_get_command - Allocate a struct scsi_cmnd
166 * @shost: host to transmit command
167 * @gfp_mask: allocation mask
168 *
169 * Description: allocate a struct scsi_cmd from host's slab, recycling from the
170 * host's free_list if necessary.
171 */
159struct scsi_cmnd *__scsi_get_command(struct Scsi_Host *shost, gfp_t gfp_mask) 172struct scsi_cmnd *__scsi_get_command(struct Scsi_Host *shost, gfp_t gfp_mask)
160{ 173{
161 struct scsi_cmnd *cmd; 174 struct scsi_cmnd *cmd;
@@ -179,13 +192,10 @@ struct scsi_cmnd *__scsi_get_command(struct Scsi_Host *shost, gfp_t gfp_mask)
179} 192}
180EXPORT_SYMBOL_GPL(__scsi_get_command); 193EXPORT_SYMBOL_GPL(__scsi_get_command);
181 194
182/* 195/**
183 * Function: scsi_get_command() 196 * scsi_get_command - Allocate and setup a scsi command block
184 * 197 * @dev: parent scsi device
185 * Purpose: Allocate and setup a scsi command block 198 * @gfp_mask: allocator flags
186 *
187 * Arguments: dev - parent scsi device
188 * gfp_mask- allocator flags
189 * 199 *
190 * Returns: The allocated scsi command structure. 200 * Returns: The allocated scsi command structure.
191 */ 201 */
@@ -217,6 +227,12 @@ struct scsi_cmnd *scsi_get_command(struct scsi_device *dev, gfp_t gfp_mask)
217} 227}
218EXPORT_SYMBOL(scsi_get_command); 228EXPORT_SYMBOL(scsi_get_command);
219 229
230/**
231 * __scsi_put_command - Free a struct scsi_cmnd
232 * @shost: dev->host
233 * @cmd: Command to free
234 * @dev: parent scsi device
235 */
220void __scsi_put_command(struct Scsi_Host *shost, struct scsi_cmnd *cmd, 236void __scsi_put_command(struct Scsi_Host *shost, struct scsi_cmnd *cmd,
221 struct device *dev) 237 struct device *dev)
222{ 238{
@@ -237,12 +253,9 @@ void __scsi_put_command(struct Scsi_Host *shost, struct scsi_cmnd *cmd,
237} 253}
238EXPORT_SYMBOL(__scsi_put_command); 254EXPORT_SYMBOL(__scsi_put_command);
239 255
240/* 256/**
241 * Function: scsi_put_command() 257 * scsi_put_command - Free a scsi command block
242 * 258 * @cmd: command block to free
243 * Purpose: Free a scsi command block
244 *
245 * Arguments: cmd - command block to free
246 * 259 *
247 * Returns: Nothing. 260 * Returns: Nothing.
248 * 261 *
@@ -263,12 +276,13 @@ void scsi_put_command(struct scsi_cmnd *cmd)
263} 276}
264EXPORT_SYMBOL(scsi_put_command); 277EXPORT_SYMBOL(scsi_put_command);
265 278
266/* 279/**
267 * Function: scsi_setup_command_freelist() 280 * scsi_setup_command_freelist - Setup the command freelist for a scsi host.
268 * 281 * @shost: host to allocate the freelist for.
269 * Purpose: Setup the command freelist for a scsi host.
270 * 282 *
271 * Arguments: shost - host to allocate the freelist for. 283 * Description: The command freelist protects against system-wide out of memory
284 * deadlock by preallocating one SCSI command structure for each host, so the
285 * system can always write to a swap file on a device associated with that host.
272 * 286 *
273 * Returns: Nothing. 287 * Returns: Nothing.
274 */ 288 */
@@ -282,7 +296,7 @@ int scsi_setup_command_freelist(struct Scsi_Host *shost)
282 296
283 /* 297 /*
284 * Select a command slab for this host and create it if not 298 * Select a command slab for this host and create it if not
285 * yet existant. 299 * yet existent.
286 */ 300 */
287 mutex_lock(&host_cmd_pool_mutex); 301 mutex_lock(&host_cmd_pool_mutex);
288 pool = (shost->unchecked_isa_dma ? &scsi_cmd_dma_pool : &scsi_cmd_pool); 302 pool = (shost->unchecked_isa_dma ? &scsi_cmd_dma_pool : &scsi_cmd_pool);
@@ -318,12 +332,9 @@ int scsi_setup_command_freelist(struct Scsi_Host *shost)
318 332
319} 333}
320 334
321/* 335/**
322 * Function: scsi_destroy_command_freelist() 336 * scsi_destroy_command_freelist - Release the command freelist for a scsi host.
323 * 337 * @shost: host whose freelist is going to be destroyed
324 * Purpose: Release the command freelist for a scsi host.
325 *
326 * Arguments: shost - host that's freelist is going to be destroyed
327 */ 338 */
328void scsi_destroy_command_freelist(struct Scsi_Host *shost) 339void scsi_destroy_command_freelist(struct Scsi_Host *shost)
329{ 340{
@@ -441,8 +452,12 @@ void scsi_log_completion(struct scsi_cmnd *cmd, int disposition)
441} 452}
442#endif 453#endif
443 454
444/* 455/**
445 * Assign a serial number to the request for error recovery 456 * scsi_cmd_get_serial - Assign a serial number to a command
457 * @host: the scsi host
458 * @cmd: command to assign serial number to
459 *
460 * Description: a serial number identifies a request for error recovery
446 * and debugging purposes. Protected by the Host_Lock of host. 461 * and debugging purposes. Protected by the Host_Lock of host.
447 */ 462 */
448static inline void scsi_cmd_get_serial(struct Scsi_Host *host, struct scsi_cmnd *cmd) 463static inline void scsi_cmd_get_serial(struct Scsi_Host *host, struct scsi_cmnd *cmd)
@@ -452,14 +467,12 @@ static inline void scsi_cmd_get_serial(struct Scsi_Host *host, struct scsi_cmnd
452 cmd->serial_number = host->cmd_serial_number++; 467 cmd->serial_number = host->cmd_serial_number++;
453} 468}
454 469
455/* 470/**
456 * Function: scsi_dispatch_command 471 * scsi_dispatch_command - Dispatch a command to the low-level driver.
457 * 472 * @cmd: command block we are dispatching.
458 * Purpose: Dispatch a command to the low-level driver.
459 *
460 * Arguments: cmd - command block we are dispatching.
461 * 473 *
462 * Notes: 474 * Return: nonzero return request was rejected and device's queue needs to be
475 * plugged.
463 */ 476 */
464int scsi_dispatch_cmd(struct scsi_cmnd *cmd) 477int scsi_dispatch_cmd(struct scsi_cmnd *cmd)
465{ 478{
@@ -585,7 +598,7 @@ int scsi_dispatch_cmd(struct scsi_cmnd *cmd)
585 598
586/** 599/**
587 * scsi_req_abort_cmd -- Request command recovery for the specified command 600 * scsi_req_abort_cmd -- Request command recovery for the specified command
588 * cmd: pointer to the SCSI command of interest 601 * @cmd: pointer to the SCSI command of interest
589 * 602 *
590 * This function requests that SCSI Core start recovery for the 603 * This function requests that SCSI Core start recovery for the
591 * command by deleting the timer and adding the command to the eh 604 * command by deleting the timer and adding the command to the eh
@@ -606,9 +619,9 @@ EXPORT_SYMBOL(scsi_req_abort_cmd);
606 * @cmd: The SCSI Command for which a low-level device driver (LLDD) gives 619 * @cmd: The SCSI Command for which a low-level device driver (LLDD) gives
607 * ownership back to SCSI Core -- i.e. the LLDD has finished with it. 620 * ownership back to SCSI Core -- i.e. the LLDD has finished with it.
608 * 621 *
609 * This function is the mid-level's (SCSI Core) interrupt routine, which 622 * Description: This function is the mid-level's (SCSI Core) interrupt routine,
610 * regains ownership of the SCSI command (de facto) from a LLDD, and enqueues 623 * which regains ownership of the SCSI command (de facto) from a LLDD, and
611 * the command to the done queue for further processing. 624 * enqueues the command to the done queue for further processing.
612 * 625 *
613 * This is the producer of the done queue who enqueues at the tail. 626 * This is the producer of the done queue who enqueues at the tail.
614 * 627 *
@@ -617,7 +630,7 @@ EXPORT_SYMBOL(scsi_req_abort_cmd);
617static void scsi_done(struct scsi_cmnd *cmd) 630static void scsi_done(struct scsi_cmnd *cmd)
618{ 631{
619 /* 632 /*
620 * We don't have to worry about this one timing out any more. 633 * We don't have to worry about this one timing out anymore.
621 * If we are unable to remove the timer, then the command 634 * If we are unable to remove the timer, then the command
622 * has already timed out. In which case, we have no choice but to 635 * has already timed out. In which case, we have no choice but to
623 * let the timeout function run, as we have no idea where in fact 636 * let the timeout function run, as we have no idea where in fact
@@ -660,10 +673,11 @@ static struct scsi_driver *scsi_cmd_to_driver(struct scsi_cmnd *cmd)
660 return *(struct scsi_driver **)cmd->request->rq_disk->private_data; 673 return *(struct scsi_driver **)cmd->request->rq_disk->private_data;
661} 674}
662 675
663/* 676/**
664 * Function: scsi_finish_command 677 * scsi_finish_command - cleanup and pass command back to upper layer
678 * @cmd: the command
665 * 679 *
666 * Purpose: Pass command off to upper layer for finishing of I/O 680 * Description: Pass command off to upper layer for finishing of I/O
667 * request, waking processes that are waiting on results, 681 * request, waking processes that are waiting on results,
668 * etc. 682 * etc.
669 */ 683 */
@@ -708,18 +722,14 @@ void scsi_finish_command(struct scsi_cmnd *cmd)
708} 722}
709EXPORT_SYMBOL(scsi_finish_command); 723EXPORT_SYMBOL(scsi_finish_command);
710 724
711/* 725/**
712 * Function: scsi_adjust_queue_depth() 726 * scsi_adjust_queue_depth - Let low level drivers change a device's queue depth
713 * 727 * @sdev: SCSI Device in question
714 * Purpose: Allow low level drivers to tell us to change the queue depth 728 * @tagged: Do we use tagged queueing (non-0) or do we treat
715 * on a specific SCSI device 729 * this device as an untagged device (0)
716 * 730 * @tags: Number of tags allowed if tagged queueing enabled,
717 * Arguments: sdev - SCSI Device in question 731 * or number of commands the low level driver can
718 * tagged - Do we use tagged queueing (non-0) or do we treat 732 * queue up in non-tagged mode (as per cmd_per_lun).
719 * this device as an untagged device (0)
720 * tags - Number of tags allowed if tagged queueing enabled,
721 * or number of commands the low level driver can
722 * queue up in non-tagged mode (as per cmd_per_lun).
723 * 733 *
724 * Returns: Nothing 734 * Returns: Nothing
725 * 735 *
@@ -742,8 +752,8 @@ void scsi_adjust_queue_depth(struct scsi_device *sdev, int tagged, int tags)
742 752
743 spin_lock_irqsave(sdev->request_queue->queue_lock, flags); 753 spin_lock_irqsave(sdev->request_queue->queue_lock, flags);
744 754
745 /* Check to see if the queue is managed by the block layer 755 /* Check to see if the queue is managed by the block layer.
746 * if it is, and we fail to adjust the depth, exit */ 756 * If it is, and we fail to adjust the depth, exit. */
747 if (blk_queue_tagged(sdev->request_queue) && 757 if (blk_queue_tagged(sdev->request_queue) &&
748 blk_queue_resize_tags(sdev->request_queue, tags) != 0) 758 blk_queue_resize_tags(sdev->request_queue, tags) != 0)
749 goto out; 759 goto out;
@@ -772,20 +782,17 @@ void scsi_adjust_queue_depth(struct scsi_device *sdev, int tagged, int tags)
772} 782}
773EXPORT_SYMBOL(scsi_adjust_queue_depth); 783EXPORT_SYMBOL(scsi_adjust_queue_depth);
774 784
775/* 785/**
776 * Function: scsi_track_queue_full() 786 * scsi_track_queue_full - track QUEUE_FULL events to adjust queue depth
787 * @sdev: SCSI Device in question
788 * @depth: Current number of outstanding SCSI commands on this device,
789 * not counting the one returned as QUEUE_FULL.
777 * 790 *
778 * Purpose: This function will track successive QUEUE_FULL events on a 791 * Description: This function will track successive QUEUE_FULL events on a
779 * specific SCSI device to determine if and when there is a 792 * specific SCSI device to determine if and when there is a
780 * need to adjust the queue depth on the device. 793 * need to adjust the queue depth on the device.
781 * 794 *
782 * Arguments: sdev - SCSI Device in question 795 * Returns: 0 - No change needed, >0 - Adjust queue depth to this new depth,
783 * depth - Current number of outstanding SCSI commands on
784 * this device, not counting the one returned as
785 * QUEUE_FULL.
786 *
787 * Returns: 0 - No change needed
788 * >0 - Adjust queue depth to this new depth
789 * -1 - Drop back to untagged operation using host->cmd_per_lun 796 * -1 - Drop back to untagged operation using host->cmd_per_lun
790 * as the untagged command depth 797 * as the untagged command depth
791 * 798 *
@@ -824,10 +831,10 @@ int scsi_track_queue_full(struct scsi_device *sdev, int depth)
824EXPORT_SYMBOL(scsi_track_queue_full); 831EXPORT_SYMBOL(scsi_track_queue_full);
825 832
826/** 833/**
827 * scsi_device_get - get an addition reference to a scsi_device 834 * scsi_device_get - get an additional reference to a scsi_device
828 * @sdev: device to get a reference to 835 * @sdev: device to get a reference to
829 * 836 *
830 * Gets a reference to the scsi_device and increments the use count 837 * Description: Gets a reference to the scsi_device and increments the use count
831 * of the underlying LLDD module. You must hold host_lock of the 838 * of the underlying LLDD module. You must hold host_lock of the
832 * parent Scsi_Host or already have a reference when calling this. 839 * parent Scsi_Host or already have a reference when calling this.
833 */ 840 */
@@ -849,8 +856,8 @@ EXPORT_SYMBOL(scsi_device_get);
849 * scsi_device_put - release a reference to a scsi_device 856 * scsi_device_put - release a reference to a scsi_device
850 * @sdev: device to release a reference on. 857 * @sdev: device to release a reference on.
851 * 858 *
852 * Release a reference to the scsi_device and decrements the use count 859 * Description: Release a reference to the scsi_device and decrements the use
853 * of the underlying LLDD module. The device is freed once the last 860 * count of the underlying LLDD module. The device is freed once the last
854 * user vanishes. 861 * user vanishes.
855 */ 862 */
856void scsi_device_put(struct scsi_device *sdev) 863void scsi_device_put(struct scsi_device *sdev)
@@ -867,7 +874,7 @@ void scsi_device_put(struct scsi_device *sdev)
867} 874}
868EXPORT_SYMBOL(scsi_device_put); 875EXPORT_SYMBOL(scsi_device_put);
869 876
870/* helper for shost_for_each_device, thus not documented */ 877/* helper for shost_for_each_device, see that for documentation */
871struct scsi_device *__scsi_iterate_devices(struct Scsi_Host *shost, 878struct scsi_device *__scsi_iterate_devices(struct Scsi_Host *shost,
872 struct scsi_device *prev) 879 struct scsi_device *prev)
873{ 880{
@@ -895,6 +902,8 @@ EXPORT_SYMBOL(__scsi_iterate_devices);
895/** 902/**
896 * starget_for_each_device - helper to walk all devices of a target 903 * starget_for_each_device - helper to walk all devices of a target
897 * @starget: target whose devices we want to iterate over. 904 * @starget: target whose devices we want to iterate over.
905 * @data: Opaque passed to each function call.
906 * @fn: Function to call on each device
898 * 907 *
899 * This traverses over each device of @starget. The devices have 908 * This traverses over each device of @starget. The devices have
900 * a reference that must be released by scsi_host_put when breaking 909 * a reference that must be released by scsi_host_put when breaking
@@ -946,13 +955,13 @@ EXPORT_SYMBOL(__starget_for_each_device);
946 * @starget: SCSI target pointer 955 * @starget: SCSI target pointer
947 * @lun: SCSI Logical Unit Number 956 * @lun: SCSI Logical Unit Number
948 * 957 *
949 * Looks up the scsi_device with the specified @lun for a give 958 * Description: Looks up the scsi_device with the specified @lun for a given
950 * @starget. The returned scsi_device does not have an additional 959 * @starget. The returned scsi_device does not have an additional
951 * reference. You must hold the host's host_lock over this call and 960 * reference. You must hold the host's host_lock over this call and
952 * any access to the returned scsi_device. 961 * any access to the returned scsi_device.
953 * 962 *
954 * Note: The only reason why drivers would want to use this is because 963 * Note: The only reason why drivers would want to use this is because
955 * they're need to access the device list in irq context. Otherwise you 964 * they need to access the device list in irq context. Otherwise you
956 * really want to use scsi_device_lookup_by_target instead. 965 * really want to use scsi_device_lookup_by_target instead.
957 **/ 966 **/
958struct scsi_device *__scsi_device_lookup_by_target(struct scsi_target *starget, 967struct scsi_device *__scsi_device_lookup_by_target(struct scsi_target *starget,
@@ -974,9 +983,9 @@ EXPORT_SYMBOL(__scsi_device_lookup_by_target);
974 * @starget: SCSI target pointer 983 * @starget: SCSI target pointer
975 * @lun: SCSI Logical Unit Number 984 * @lun: SCSI Logical Unit Number
976 * 985 *
977 * Looks up the scsi_device with the specified @channel, @id, @lun for a 986 * Description: Looks up the scsi_device with the specified @channel, @id, @lun
978 * give host. The returned scsi_device has an additional reference that 987 * for a given host. The returned scsi_device has an additional reference that
979 * needs to be release with scsi_host_put once you're done with it. 988 * needs to be released with scsi_device_put once you're done with it.
980 **/ 989 **/
981struct scsi_device *scsi_device_lookup_by_target(struct scsi_target *starget, 990struct scsi_device *scsi_device_lookup_by_target(struct scsi_target *starget,
982 uint lun) 991 uint lun)
@@ -996,19 +1005,19 @@ struct scsi_device *scsi_device_lookup_by_target(struct scsi_target *starget,
996EXPORT_SYMBOL(scsi_device_lookup_by_target); 1005EXPORT_SYMBOL(scsi_device_lookup_by_target);
997 1006
998/** 1007/**
999 * scsi_device_lookup - find a device given the host (UNLOCKED) 1008 * __scsi_device_lookup - find a device given the host (UNLOCKED)
1000 * @shost: SCSI host pointer 1009 * @shost: SCSI host pointer
1001 * @channel: SCSI channel (zero if only one channel) 1010 * @channel: SCSI channel (zero if only one channel)
1002 * @pun: SCSI target number (physical unit number) 1011 * @id: SCSI target number (physical unit number)
1003 * @lun: SCSI Logical Unit Number 1012 * @lun: SCSI Logical Unit Number
1004 * 1013 *
1005 * Looks up the scsi_device with the specified @channel, @id, @lun for a 1014 * Description: Looks up the scsi_device with the specified @channel, @id, @lun
1006 * give host. The returned scsi_device does not have an additional reference. 1015 * for a given host. The returned scsi_device does not have an additional
1007 * You must hold the host's host_lock over this call and any access to the 1016 * reference. You must hold the host's host_lock over this call and any access
1008 * returned scsi_device. 1017 * to the returned scsi_device.
1009 * 1018 *
1010 * Note: The only reason why drivers would want to use this is because 1019 * Note: The only reason why drivers would want to use this is because
1011 * they're need to access the device list in irq context. Otherwise you 1020 * they need to access the device list in irq context. Otherwise you
1012 * really want to use scsi_device_lookup instead. 1021 * really want to use scsi_device_lookup instead.
1013 **/ 1022 **/
1014struct scsi_device *__scsi_device_lookup(struct Scsi_Host *shost, 1023struct scsi_device *__scsi_device_lookup(struct Scsi_Host *shost,
@@ -1033,9 +1042,9 @@ EXPORT_SYMBOL(__scsi_device_lookup);
1033 * @id: SCSI target number (physical unit number) 1042 * @id: SCSI target number (physical unit number)
1034 * @lun: SCSI Logical Unit Number 1043 * @lun: SCSI Logical Unit Number
1035 * 1044 *
1036 * Looks up the scsi_device with the specified @channel, @id, @lun for a 1045 * Description: Looks up the scsi_device with the specified @channel, @id, @lun
1037 * give host. The returned scsi_device has an additional reference that 1046 * for a given host. The returned scsi_device has an additional reference that
1038 * needs to be release with scsi_host_put once you're done with it. 1047 * needs to be released with scsi_device_put once you're done with it.
1039 **/ 1048 **/
1040struct scsi_device *scsi_device_lookup(struct Scsi_Host *shost, 1049struct scsi_device *scsi_device_lookup(struct Scsi_Host *shost,
1041 uint channel, uint id, uint lun) 1050 uint channel, uint id, uint lun)
diff --git a/drivers/scsi/scsi_devinfo.c b/drivers/scsi/scsi_devinfo.c
index 348cc5a6e3cd..6839c1004b29 100644
--- a/drivers/scsi/scsi_devinfo.c
+++ b/drivers/scsi/scsi_devinfo.c
@@ -276,11 +276,12 @@ static void scsi_strcpy_devinfo(char *name, char *to, size_t to_length,
276} 276}
277 277
278/** 278/**
279 * scsi_dev_info_list_add: add one dev_info list entry. 279 * scsi_dev_info_list_add - add one dev_info list entry.
280 * @compatible: if true, null terminate short strings. Otherwise space pad.
280 * @vendor: vendor string 281 * @vendor: vendor string
281 * @model: model (product) string 282 * @model: model (product) string
282 * @strflags: integer string 283 * @strflags: integer string
283 * @flag: if strflags NULL, use this flag value 284 * @flags: if strflags NULL, use this flag value
284 * 285 *
285 * Description: 286 * Description:
286 * Create and add one dev_info entry for @vendor, @model, @strflags or 287 * Create and add one dev_info entry for @vendor, @model, @strflags or
@@ -322,8 +323,7 @@ static int scsi_dev_info_list_add(int compatible, char *vendor, char *model,
322} 323}
323 324
324/** 325/**
325 * scsi_dev_info_list_add_str: parse dev_list and add to the 326 * scsi_dev_info_list_add_str - parse dev_list and add to the scsi_dev_info_list.
326 * scsi_dev_info_list.
327 * @dev_list: string of device flags to add 327 * @dev_list: string of device flags to add
328 * 328 *
329 * Description: 329 * Description:
@@ -374,15 +374,15 @@ static int scsi_dev_info_list_add_str(char *dev_list)
374} 374}
375 375
376/** 376/**
377 * get_device_flags - get device specific flags from the dynamic device 377 * get_device_flags - get device specific flags from the dynamic device list.
378 * list. Called during scan time. 378 * @sdev: &scsi_device to get flags for
379 * @vendor: vendor name 379 * @vendor: vendor name
380 * @model: model name 380 * @model: model name
381 * 381 *
382 * Description: 382 * Description:
383 * Search the scsi_dev_info_list for an entry matching @vendor and 383 * Search the scsi_dev_info_list for an entry matching @vendor and
384 * @model, if found, return the matching flags value, else return 384 * @model, if found, return the matching flags value, else return
385 * the host or global default settings. 385 * the host or global default settings. Called during scan time.
386 **/ 386 **/
387int scsi_get_device_flags(struct scsi_device *sdev, 387int scsi_get_device_flags(struct scsi_device *sdev,
388 const unsigned char *vendor, 388 const unsigned char *vendor,
@@ -483,13 +483,11 @@ stop_output:
483} 483}
484 484
485/* 485/*
486 * proc_scsi_dev_info_write: allow additions to the scsi_dev_info_list via 486 * proc_scsi_dev_info_write - allow additions to scsi_dev_info_list via /proc.
487 * /proc.
488 * 487 *
489 * Use: echo "vendor:model:flag" > /proc/scsi/device_info 488 * Description: Adds a black/white list entry for vendor and model with an
490 * 489 * integer value of flag to the scsi device info list.
491 * To add a black/white list entry for vendor and model with an integer 490 * To use, echo "vendor:model:flag" > /proc/scsi/device_info
492 * value of flag to the scsi device info list.
493 */ 491 */
494static int proc_scsi_devinfo_write(struct file *file, const char __user *buf, 492static int proc_scsi_devinfo_write(struct file *file, const char __user *buf,
495 unsigned long length, void *data) 493 unsigned long length, void *data)
@@ -532,8 +530,7 @@ MODULE_PARM_DESC(default_dev_flags,
532 "scsi default device flag integer value"); 530 "scsi default device flag integer value");
533 531
534/** 532/**
535 * scsi_dev_info_list_delete: called from scsi.c:exit_scsi to remove 533 * scsi_dev_info_list_delete - called from scsi.c:exit_scsi to remove the scsi_dev_info_list.
536 * the scsi_dev_info_list.
537 **/ 534 **/
538void scsi_exit_devinfo(void) 535void scsi_exit_devinfo(void)
539{ 536{
@@ -552,13 +549,12 @@ void scsi_exit_devinfo(void)
552} 549}
553 550
554/** 551/**
555 * scsi_dev_list_init: set up the dynamic device list. 552 * scsi_dev_list_init - set up the dynamic device list.
556 * @dev_list: string of device flags to add
557 * 553 *
558 * Description: 554 * Description:
559 * Add command line @dev_list entries, then add 555 * Add command line entries from scsi_dev_flags, then add
560 * scsi_static_device_list entries to the scsi device info list. 556 * scsi_static_device_list entries to the scsi device info list.
561 **/ 557 */
562int __init scsi_init_devinfo(void) 558int __init scsi_init_devinfo(void)
563{ 559{
564#ifdef CONFIG_SCSI_PROC_FS 560#ifdef CONFIG_SCSI_PROC_FS
diff --git a/drivers/scsi/scsi_error.c b/drivers/scsi/scsi_error.c
index ebaca4ca4a13..22f8140598ba 100644
--- a/drivers/scsi/scsi_error.c
+++ b/drivers/scsi/scsi_error.c
@@ -779,7 +779,7 @@ static int scsi_request_sense(struct scsi_cmnd *scmd)
779 * Notes: 779 * Notes:
780 * We don't want to use the normal command completion while we are are 780 * We don't want to use the normal command completion while we are are
781 * still handling errors - it may cause other commands to be queued, 781 * still handling errors - it may cause other commands to be queued,
782 * and that would disturb what we are doing. thus we really want to 782 * and that would disturb what we are doing. Thus we really want to
783 * keep a list of pending commands for final completion, and once we 783 * keep a list of pending commands for final completion, and once we
784 * are ready to leave error handling we handle completion for real. 784 * are ready to leave error handling we handle completion for real.
785 **/ 785 **/
@@ -794,7 +794,7 @@ EXPORT_SYMBOL(scsi_eh_finish_cmd);
794/** 794/**
795 * scsi_eh_get_sense - Get device sense data. 795 * scsi_eh_get_sense - Get device sense data.
796 * @work_q: Queue of commands to process. 796 * @work_q: Queue of commands to process.
797 * @done_q: Queue of proccessed commands.. 797 * @done_q: Queue of processed commands.
798 * 798 *
799 * Description: 799 * Description:
800 * See if we need to request sense information. if so, then get it 800 * See if we need to request sense information. if so, then get it
@@ -802,7 +802,7 @@ EXPORT_SYMBOL(scsi_eh_finish_cmd);
802 * 802 *
803 * Notes: 803 * Notes:
804 * This has the unfortunate side effect that if a shost adapter does 804 * This has the unfortunate side effect that if a shost adapter does
805 * not automatically request sense information, that we end up shutting 805 * not automatically request sense information, we end up shutting
806 * it down before we request it. 806 * it down before we request it.
807 * 807 *
808 * All drivers should request sense information internally these days, 808 * All drivers should request sense information internally these days,
@@ -858,7 +858,7 @@ EXPORT_SYMBOL_GPL(scsi_eh_get_sense);
858 858
859/** 859/**
860 * scsi_eh_tur - Send TUR to device. 860 * scsi_eh_tur - Send TUR to device.
861 * @scmd: Scsi cmd to send TUR 861 * @scmd: &scsi_cmnd to send TUR
862 * 862 *
863 * Return value: 863 * Return value:
864 * 0 - Device is ready. 1 - Device NOT ready. 864 * 0 - Device is ready. 1 - Device NOT ready.
@@ -887,14 +887,14 @@ retry_tur:
887} 887}
888 888
889/** 889/**
890 * scsi_eh_abort_cmds - abort canceled commands. 890 * scsi_eh_abort_cmds - abort pending commands.
891 * @shost: scsi host being recovered. 891 * @work_q: &list_head for pending commands.
892 * @eh_done_q: list_head for processed commands. 892 * @done_q: &list_head for processed commands.
893 * 893 *
894 * Decription: 894 * Decription:
895 * Try and see whether or not it makes sense to try and abort the 895 * Try and see whether or not it makes sense to try and abort the
896 * running command. this only works out to be the case if we have one 896 * running command. This only works out to be the case if we have one
897 * command that has timed out. if the command simply failed, it makes 897 * command that has timed out. If the command simply failed, it makes
898 * no sense to try and abort the command, since as far as the shost 898 * no sense to try and abort the command, since as far as the shost
899 * adapter is concerned, it isn't running. 899 * adapter is concerned, it isn't running.
900 **/ 900 **/
@@ -931,7 +931,7 @@ static int scsi_eh_abort_cmds(struct list_head *work_q,
931 931
932/** 932/**
933 * scsi_eh_try_stu - Send START_UNIT to device. 933 * scsi_eh_try_stu - Send START_UNIT to device.
934 * @scmd: Scsi cmd to send START_UNIT 934 * @scmd: &scsi_cmnd to send START_UNIT
935 * 935 *
936 * Return value: 936 * Return value:
937 * 0 - Device is ready. 1 - Device NOT ready. 937 * 0 - Device is ready. 1 - Device NOT ready.
@@ -956,8 +956,9 @@ static int scsi_eh_try_stu(struct scsi_cmnd *scmd)
956 956
957 /** 957 /**
958 * scsi_eh_stu - send START_UNIT if needed 958 * scsi_eh_stu - send START_UNIT if needed
959 * @shost: scsi host being recovered. 959 * @shost: &scsi host being recovered.
960 * @eh_done_q: list_head for processed commands. 960 * @work_q: &list_head for pending commands.
961 * @done_q: &list_head for processed commands.
961 * 962 *
962 * Notes: 963 * Notes:
963 * If commands are failing due to not ready, initializing command required, 964 * If commands are failing due to not ready, initializing command required,
@@ -1008,10 +1009,11 @@ static int scsi_eh_stu(struct Scsi_Host *shost,
1008/** 1009/**
1009 * scsi_eh_bus_device_reset - send bdr if needed 1010 * scsi_eh_bus_device_reset - send bdr if needed
1010 * @shost: scsi host being recovered. 1011 * @shost: scsi host being recovered.
1011 * @eh_done_q: list_head for processed commands. 1012 * @work_q: &list_head for pending commands.
1013 * @done_q: &list_head for processed commands.
1012 * 1014 *
1013 * Notes: 1015 * Notes:
1014 * Try a bus device reset. still, look to see whether we have multiple 1016 * Try a bus device reset. Still, look to see whether we have multiple
1015 * devices that are jammed or not - if we have multiple devices, it 1017 * devices that are jammed or not - if we have multiple devices, it
1016 * makes no sense to try bus_device_reset - we really would need to try 1018 * makes no sense to try bus_device_reset - we really would need to try
1017 * a bus_reset instead. 1019 * a bus_reset instead.
@@ -1063,8 +1065,9 @@ static int scsi_eh_bus_device_reset(struct Scsi_Host *shost,
1063 1065
1064/** 1066/**
1065 * scsi_eh_bus_reset - send a bus reset 1067 * scsi_eh_bus_reset - send a bus reset
1066 * @shost: scsi host being recovered. 1068 * @shost: &scsi host being recovered.
1067 * @eh_done_q: list_head for processed commands. 1069 * @work_q: &list_head for pending commands.
1070 * @done_q: &list_head for processed commands.
1068 **/ 1071 **/
1069static int scsi_eh_bus_reset(struct Scsi_Host *shost, 1072static int scsi_eh_bus_reset(struct Scsi_Host *shost,
1070 struct list_head *work_q, 1073 struct list_head *work_q,
@@ -1440,7 +1443,8 @@ static void scsi_restart_operations(struct Scsi_Host *shost)
1440/** 1443/**
1441 * scsi_eh_ready_devs - check device ready state and recover if not. 1444 * scsi_eh_ready_devs - check device ready state and recover if not.
1442 * @shost: host to be recovered. 1445 * @shost: host to be recovered.
1443 * @eh_done_q: list_head for processed commands. 1446 * @work_q: &list_head for pending commands.
1447 * @done_q: &list_head for processed commands.
1444 * 1448 *
1445 **/ 1449 **/
1446void scsi_eh_ready_devs(struct Scsi_Host *shost, 1450void scsi_eh_ready_devs(struct Scsi_Host *shost,
@@ -1824,9 +1828,7 @@ int scsi_command_normalize_sense(struct scsi_cmnd *cmd,
1824EXPORT_SYMBOL(scsi_command_normalize_sense); 1828EXPORT_SYMBOL(scsi_command_normalize_sense);
1825 1829
1826/** 1830/**
1827 * scsi_sense_desc_find - search for a given descriptor type in 1831 * scsi_sense_desc_find - search for a given descriptor type in descriptor sense data format.
1828 * descriptor sense data format.
1829 *
1830 * @sense_buffer: byte array of descriptor format sense data 1832 * @sense_buffer: byte array of descriptor format sense data
1831 * @sb_len: number of valid bytes in sense_buffer 1833 * @sb_len: number of valid bytes in sense_buffer
1832 * @desc_type: value of descriptor type to find 1834 * @desc_type: value of descriptor type to find
@@ -1865,9 +1867,7 @@ const u8 * scsi_sense_desc_find(const u8 * sense_buffer, int sb_len,
1865EXPORT_SYMBOL(scsi_sense_desc_find); 1867EXPORT_SYMBOL(scsi_sense_desc_find);
1866 1868
1867/** 1869/**
1868 * scsi_get_sense_info_fld - attempts to get information field from 1870 * scsi_get_sense_info_fld - get information field from sense data (either fixed or descriptor format)
1869 * sense data (either fixed or descriptor format)
1870 *
1871 * @sense_buffer: byte array of sense data 1871 * @sense_buffer: byte array of sense data
1872 * @sb_len: number of valid bytes in sense_buffer 1872 * @sb_len: number of valid bytes in sense_buffer
1873 * @info_out: pointer to 64 integer where 8 or 4 byte information 1873 * @info_out: pointer to 64 integer where 8 or 4 byte information
diff --git a/drivers/scsi/scsi_ioctl.c b/drivers/scsi/scsi_ioctl.c
index 32293f451669..83e144716901 100644
--- a/drivers/scsi/scsi_ioctl.c
+++ b/drivers/scsi/scsi_ioctl.c
@@ -174,10 +174,15 @@ static int scsi_ioctl_get_pci(struct scsi_device *sdev, void __user *arg)
174} 174}
175 175
176 176
177/* 177/**
178 * the scsi_ioctl() function differs from most ioctls in that it does 178 * scsi_ioctl - Dispatch ioctl to scsi device
179 * not take a major/minor number as the dev field. Rather, it takes 179 * @sdev: scsi device receiving ioctl
180 * a pointer to a scsi_devices[] element, a structure. 180 * @cmd: which ioctl is it
181 * @arg: data associated with ioctl
182 *
183 * Description: The scsi_ioctl() function differs from most ioctls in that it
184 * does not take a major/minor number as the dev field. Rather, it takes
185 * a pointer to a &struct scsi_device.
181 */ 186 */
182int scsi_ioctl(struct scsi_device *sdev, int cmd, void __user *arg) 187int scsi_ioctl(struct scsi_device *sdev, int cmd, void __user *arg)
183{ 188{
@@ -264,9 +269,12 @@ int scsi_ioctl(struct scsi_device *sdev, int cmd, void __user *arg)
264} 269}
265EXPORT_SYMBOL(scsi_ioctl); 270EXPORT_SYMBOL(scsi_ioctl);
266 271
267/* 272/**
268 * the scsi_nonblock_ioctl() function is designed for ioctls which may 273 * scsi_nonblock_ioctl() - Handle SG_SCSI_RESET
269 * be executed even if the device is in recovery. 274 * @sdev: scsi device receiving ioctl
275 * @cmd: Must be SC_SCSI_RESET
276 * @arg: pointer to int containing SG_SCSI_RESET_{DEVICE,BUS,HOST}
277 * @filp: either NULL or a &struct file which must have the O_NONBLOCK flag.
270 */ 278 */
271int scsi_nonblockable_ioctl(struct scsi_device *sdev, int cmd, 279int scsi_nonblockable_ioctl(struct scsi_device *sdev, int cmd,
272 void __user *arg, struct file *filp) 280 void __user *arg, struct file *filp)
@@ -276,7 +284,7 @@ int scsi_nonblockable_ioctl(struct scsi_device *sdev, int cmd,
276 /* The first set of iocts may be executed even if we're doing 284 /* The first set of iocts may be executed even if we're doing
277 * error processing, as long as the device was opened 285 * error processing, as long as the device was opened
278 * non-blocking */ 286 * non-blocking */
279 if (filp && filp->f_flags & O_NONBLOCK) { 287 if (filp && (filp->f_flags & O_NONBLOCK)) {
280 if (scsi_host_in_recovery(sdev->host)) 288 if (scsi_host_in_recovery(sdev->host))
281 return -ENODEV; 289 return -ENODEV;
282 } else if (!scsi_block_when_processing_errors(sdev)) 290 } else if (!scsi_block_when_processing_errors(sdev))
diff --git a/drivers/scsi/scsi_lib.c b/drivers/scsi/scsi_lib.c
index a9ac5b1b1667..199b02452259 100644
--- a/drivers/scsi/scsi_lib.c
+++ b/drivers/scsi/scsi_lib.c
@@ -175,7 +175,7 @@ int scsi_queue_insert(struct scsi_cmnd *cmd, int reason)
175 * 175 *
176 * returns the req->errors value which is the scsi_cmnd result 176 * returns the req->errors value which is the scsi_cmnd result
177 * field. 177 * field.
178 **/ 178 */
179int scsi_execute(struct scsi_device *sdev, const unsigned char *cmd, 179int scsi_execute(struct scsi_device *sdev, const unsigned char *cmd,
180 int data_direction, void *buffer, unsigned bufflen, 180 int data_direction, void *buffer, unsigned bufflen,
181 unsigned char *sense, int timeout, int retries, int flags) 181 unsigned char *sense, int timeout, int retries, int flags)
@@ -274,7 +274,7 @@ static void scsi_bi_endio(struct bio *bio, int error)
274/** 274/**
275 * scsi_req_map_sg - map a scatterlist into a request 275 * scsi_req_map_sg - map a scatterlist into a request
276 * @rq: request to fill 276 * @rq: request to fill
277 * @sg: scatterlist 277 * @sgl: scatterlist
278 * @nsegs: number of elements 278 * @nsegs: number of elements
279 * @bufflen: len of buffer 279 * @bufflen: len of buffer
280 * @gfp: memory allocation flags 280 * @gfp: memory allocation flags
@@ -365,14 +365,16 @@ free_bios:
365 * @sdev: scsi device 365 * @sdev: scsi device
366 * @cmd: scsi command 366 * @cmd: scsi command
367 * @cmd_len: length of scsi cdb 367 * @cmd_len: length of scsi cdb
368 * @data_direction: data direction 368 * @data_direction: DMA_TO_DEVICE, DMA_FROM_DEVICE, or DMA_NONE
369 * @buffer: data buffer (this can be a kernel buffer or scatterlist) 369 * @buffer: data buffer (this can be a kernel buffer or scatterlist)
370 * @bufflen: len of buffer 370 * @bufflen: len of buffer
371 * @use_sg: if buffer is a scatterlist this is the number of elements 371 * @use_sg: if buffer is a scatterlist this is the number of elements
372 * @timeout: request timeout in seconds 372 * @timeout: request timeout in seconds
373 * @retries: number of times to retry request 373 * @retries: number of times to retry request
374 * @flags: or into request flags 374 * @privdata: data passed to done()
375 **/ 375 * @done: callback function when done
376 * @gfp: memory allocation flags
377 */
376int scsi_execute_async(struct scsi_device *sdev, const unsigned char *cmd, 378int scsi_execute_async(struct scsi_device *sdev, const unsigned char *cmd,
377 int cmd_len, int data_direction, void *buffer, unsigned bufflen, 379 int cmd_len, int data_direction, void *buffer, unsigned bufflen,
378 int use_sg, int timeout, int retries, void *privdata, 380 int use_sg, int timeout, int retries, void *privdata,
@@ -1804,7 +1806,7 @@ void scsi_exit_queue(void)
1804 * @timeout: command timeout 1806 * @timeout: command timeout
1805 * @retries: number of retries before failing 1807 * @retries: number of retries before failing
1806 * @data: returns a structure abstracting the mode header data 1808 * @data: returns a structure abstracting the mode header data
1807 * @sense: place to put sense data (or NULL if no sense to be collected). 1809 * @sshdr: place to put sense data (or NULL if no sense to be collected).
1808 * must be SCSI_SENSE_BUFFERSIZE big. 1810 * must be SCSI_SENSE_BUFFERSIZE big.
1809 * 1811 *
1810 * Returns zero if successful; negative error number or scsi 1812 * Returns zero if successful; negative error number or scsi
@@ -1871,8 +1873,7 @@ scsi_mode_select(struct scsi_device *sdev, int pf, int sp, int modepage,
1871EXPORT_SYMBOL_GPL(scsi_mode_select); 1873EXPORT_SYMBOL_GPL(scsi_mode_select);
1872 1874
1873/** 1875/**
1874 * scsi_mode_sense - issue a mode sense, falling back from 10 to 1876 * scsi_mode_sense - issue a mode sense, falling back from 10 to six bytes if necessary.
1875 * six bytes if necessary.
1876 * @sdev: SCSI device to be queried 1877 * @sdev: SCSI device to be queried
1877 * @dbd: set if mode sense will allow block descriptors to be returned 1878 * @dbd: set if mode sense will allow block descriptors to be returned
1878 * @modepage: mode page being requested 1879 * @modepage: mode page being requested
@@ -1881,13 +1882,13 @@ EXPORT_SYMBOL_GPL(scsi_mode_select);
1881 * @timeout: command timeout 1882 * @timeout: command timeout
1882 * @retries: number of retries before failing 1883 * @retries: number of retries before failing
1883 * @data: returns a structure abstracting the mode header data 1884 * @data: returns a structure abstracting the mode header data
1884 * @sense: place to put sense data (or NULL if no sense to be collected). 1885 * @sshdr: place to put sense data (or NULL if no sense to be collected).
1885 * must be SCSI_SENSE_BUFFERSIZE big. 1886 * must be SCSI_SENSE_BUFFERSIZE big.
1886 * 1887 *
1887 * Returns zero if unsuccessful, or the header offset (either 4 1888 * Returns zero if unsuccessful, or the header offset (either 4
1888 * or 8 depending on whether a six or ten byte command was 1889 * or 8 depending on whether a six or ten byte command was
1889 * issued) if successful. 1890 * issued) if successful.
1890 **/ 1891 */
1891int 1892int
1892scsi_mode_sense(struct scsi_device *sdev, int dbd, int modepage, 1893scsi_mode_sense(struct scsi_device *sdev, int dbd, int modepage,
1893 unsigned char *buffer, int len, int timeout, int retries, 1894 unsigned char *buffer, int len, int timeout, int retries,
@@ -2007,14 +2008,13 @@ scsi_test_unit_ready(struct scsi_device *sdev, int timeout, int retries)
2007EXPORT_SYMBOL(scsi_test_unit_ready); 2008EXPORT_SYMBOL(scsi_test_unit_ready);
2008 2009
2009/** 2010/**
2010 * scsi_device_set_state - Take the given device through the device 2011 * scsi_device_set_state - Take the given device through the device state model.
2011 * state model.
2012 * @sdev: scsi device to change the state of. 2012 * @sdev: scsi device to change the state of.
2013 * @state: state to change to. 2013 * @state: state to change to.
2014 * 2014 *
2015 * Returns zero if unsuccessful or an error if the requested 2015 * Returns zero if unsuccessful or an error if the requested
2016 * transition is illegal. 2016 * transition is illegal.
2017 **/ 2017 */
2018int 2018int
2019scsi_device_set_state(struct scsi_device *sdev, enum scsi_device_state state) 2019scsi_device_set_state(struct scsi_device *sdev, enum scsi_device_state state)
2020{ 2020{
@@ -2264,7 +2264,7 @@ EXPORT_SYMBOL_GPL(sdev_evt_send_simple);
2264 * Must be called with user context, may sleep. 2264 * Must be called with user context, may sleep.
2265 * 2265 *
2266 * Returns zero if unsuccessful or an error if not. 2266 * Returns zero if unsuccessful or an error if not.
2267 **/ 2267 */
2268int 2268int
2269scsi_device_quiesce(struct scsi_device *sdev) 2269scsi_device_quiesce(struct scsi_device *sdev)
2270{ 2270{
@@ -2289,7 +2289,7 @@ EXPORT_SYMBOL(scsi_device_quiesce);
2289 * queues. 2289 * queues.
2290 * 2290 *
2291 * Must be called with user context, may sleep. 2291 * Must be called with user context, may sleep.
2292 **/ 2292 */
2293void 2293void
2294scsi_device_resume(struct scsi_device *sdev) 2294scsi_device_resume(struct scsi_device *sdev)
2295{ 2295{
@@ -2326,8 +2326,7 @@ scsi_target_resume(struct scsi_target *starget)
2326EXPORT_SYMBOL(scsi_target_resume); 2326EXPORT_SYMBOL(scsi_target_resume);
2327 2327
2328/** 2328/**
2329 * scsi_internal_device_block - internal function to put a device 2329 * scsi_internal_device_block - internal function to put a device temporarily into the SDEV_BLOCK state
2330 * temporarily into the SDEV_BLOCK state
2331 * @sdev: device to block 2330 * @sdev: device to block
2332 * 2331 *
2333 * Block request made by scsi lld's to temporarily stop all 2332 * Block request made by scsi lld's to temporarily stop all
@@ -2342,7 +2341,7 @@ EXPORT_SYMBOL(scsi_target_resume);
2342 * state, all commands are deferred until the scsi lld reenables 2341 * state, all commands are deferred until the scsi lld reenables
2343 * the device with scsi_device_unblock or device_block_tmo fires. 2342 * the device with scsi_device_unblock or device_block_tmo fires.
2344 * This routine assumes the host_lock is held on entry. 2343 * This routine assumes the host_lock is held on entry.
2345 **/ 2344 */
2346int 2345int
2347scsi_internal_device_block(struct scsi_device *sdev) 2346scsi_internal_device_block(struct scsi_device *sdev)
2348{ 2347{
@@ -2382,7 +2381,7 @@ EXPORT_SYMBOL_GPL(scsi_internal_device_block);
2382 * (which must be a legal transition) allowing the midlayer to 2381 * (which must be a legal transition) allowing the midlayer to
2383 * goose the queue for this device. This routine assumes the 2382 * goose the queue for this device. This routine assumes the
2384 * host_lock is held upon entry. 2383 * host_lock is held upon entry.
2385 **/ 2384 */
2386int 2385int
2387scsi_internal_device_unblock(struct scsi_device *sdev) 2386scsi_internal_device_unblock(struct scsi_device *sdev)
2388{ 2387{
@@ -2460,7 +2459,7 @@ EXPORT_SYMBOL_GPL(scsi_target_unblock);
2460 2459
2461/** 2460/**
2462 * scsi_kmap_atomic_sg - find and atomically map an sg-elemnt 2461 * scsi_kmap_atomic_sg - find and atomically map an sg-elemnt
2463 * @sg: scatter-gather list 2462 * @sgl: scatter-gather list
2464 * @sg_count: number of segments in sg 2463 * @sg_count: number of segments in sg
2465 * @offset: offset in bytes into sg, on return offset into the mapped area 2464 * @offset: offset in bytes into sg, on return offset into the mapped area
2466 * @len: bytes to map, on return number of bytes mapped 2465 * @len: bytes to map, on return number of bytes mapped
@@ -2509,8 +2508,7 @@ void *scsi_kmap_atomic_sg(struct scatterlist *sgl, int sg_count,
2509EXPORT_SYMBOL(scsi_kmap_atomic_sg); 2508EXPORT_SYMBOL(scsi_kmap_atomic_sg);
2510 2509
2511/** 2510/**
2512 * scsi_kunmap_atomic_sg - atomically unmap a virtual address, previously 2511 * scsi_kunmap_atomic_sg - atomically unmap a virtual address, previously mapped with scsi_kmap_atomic_sg
2513 * mapped with scsi_kmap_atomic_sg
2514 * @virt: virtual address to be unmapped 2512 * @virt: virtual address to be unmapped
2515 */ 2513 */
2516void scsi_kunmap_atomic_sg(void *virt) 2514void scsi_kunmap_atomic_sg(void *virt)
diff --git a/drivers/scsi/scsi_netlink.c b/drivers/scsi/scsi_netlink.c
index 40579edca101..3e1591828171 100644
--- a/drivers/scsi/scsi_netlink.c
+++ b/drivers/scsi/scsi_netlink.c
@@ -32,11 +32,12 @@ EXPORT_SYMBOL_GPL(scsi_nl_sock);
32 32
33 33
34/** 34/**
35 * scsi_nl_rcv_msg - 35 * scsi_nl_rcv_msg - Receive message handler.
36 * Receive message handler. Extracts message from a receive buffer. 36 * @skb: socket receive buffer
37 *
38 * Description: Extracts message from a receive buffer.
37 * Validates message header and calls appropriate transport message handler 39 * Validates message header and calls appropriate transport message handler
38 * 40 *
39 * @skb: socket receive buffer
40 * 41 *
41 **/ 42 **/
42static void 43static void
@@ -99,9 +100,7 @@ next_msg:
99 100
100 101
101/** 102/**
102 * scsi_nl_rcv_event - 103 * scsi_nl_rcv_event - Event handler for a netlink socket.
103 * Event handler for a netlink socket.
104 *
105 * @this: event notifier block 104 * @this: event notifier block
106 * @event: event type 105 * @event: event type
107 * @ptr: event payload 106 * @ptr: event payload
@@ -129,9 +128,7 @@ static struct notifier_block scsi_netlink_notifier = {
129 128
130 129
131/** 130/**
132 * scsi_netlink_init - 131 * scsi_netlink_init - Called by SCSI subsystem to intialize the SCSI transport netlink interface
133 * Called by SCSI subsystem to intialize the SCSI transport netlink
134 * interface
135 * 132 *
136 **/ 133 **/
137void 134void
@@ -160,9 +157,7 @@ scsi_netlink_init(void)
160 157
161 158
162/** 159/**
163 * scsi_netlink_exit - 160 * scsi_netlink_exit - Called by SCSI subsystem to disable the SCSI transport netlink interface
164 * Called by SCSI subsystem to disable the SCSI transport netlink
165 * interface
166 * 161 *
167 **/ 162 **/
168void 163void
diff --git a/drivers/scsi/scsi_proc.c b/drivers/scsi/scsi_proc.c
index bb6f051beda8..ed395154a5b1 100644
--- a/drivers/scsi/scsi_proc.c
+++ b/drivers/scsi/scsi_proc.c
@@ -45,6 +45,16 @@ static struct proc_dir_entry *proc_scsi;
45/* Protect sht->present and sht->proc_dir */ 45/* Protect sht->present and sht->proc_dir */
46static DEFINE_MUTEX(global_host_template_mutex); 46static DEFINE_MUTEX(global_host_template_mutex);
47 47
48/**
49 * proc_scsi_read - handle read from /proc by calling host's proc_info() command
50 * @buffer: passed to proc_info
51 * @start: passed to proc_info
52 * @offset: passed to proc_info
53 * @length: passed to proc_info
54 * @eof: returns whether length read was less than requested
55 * @data: pointer to a &struct Scsi_Host
56 */
57
48static int proc_scsi_read(char *buffer, char **start, off_t offset, 58static int proc_scsi_read(char *buffer, char **start, off_t offset,
49 int length, int *eof, void *data) 59 int length, int *eof, void *data)
50{ 60{
@@ -57,6 +67,13 @@ static int proc_scsi_read(char *buffer, char **start, off_t offset,
57 return n; 67 return n;
58} 68}
59 69
70/**
71 * proc_scsi_write_proc - Handle write to /proc by calling host's proc_info()
72 * @file: not used
73 * @buf: source of data to write.
74 * @count: number of bytes (at most PROC_BLOCK_SIZE) to write.
75 * @data: pointer to &struct Scsi_Host
76 */
60static int proc_scsi_write_proc(struct file *file, const char __user *buf, 77static int proc_scsi_write_proc(struct file *file, const char __user *buf,
61 unsigned long count, void *data) 78 unsigned long count, void *data)
62{ 79{
@@ -80,6 +97,13 @@ out:
80 return ret; 97 return ret;
81} 98}
82 99
100/**
101 * scsi_proc_hostdir_add - Create directory in /proc for a scsi host
102 * @sht: owner of this directory
103 *
104 * Sets sht->proc_dir to the new directory.
105 */
106
83void scsi_proc_hostdir_add(struct scsi_host_template *sht) 107void scsi_proc_hostdir_add(struct scsi_host_template *sht)
84{ 108{
85 if (!sht->proc_info) 109 if (!sht->proc_info)
@@ -97,6 +121,10 @@ void scsi_proc_hostdir_add(struct scsi_host_template *sht)
97 mutex_unlock(&global_host_template_mutex); 121 mutex_unlock(&global_host_template_mutex);
98} 122}
99 123
124/**
125 * scsi_proc_hostdir_rm - remove directory in /proc for a scsi host
126 * @sht: owner of directory
127 */
100void scsi_proc_hostdir_rm(struct scsi_host_template *sht) 128void scsi_proc_hostdir_rm(struct scsi_host_template *sht)
101{ 129{
102 if (!sht->proc_info) 130 if (!sht->proc_info)
@@ -110,6 +138,11 @@ void scsi_proc_hostdir_rm(struct scsi_host_template *sht)
110 mutex_unlock(&global_host_template_mutex); 138 mutex_unlock(&global_host_template_mutex);
111} 139}
112 140
141
142/**
143 * scsi_proc_host_add - Add entry for this host to appropriate /proc dir
144 * @shost: host to add
145 */
113void scsi_proc_host_add(struct Scsi_Host *shost) 146void scsi_proc_host_add(struct Scsi_Host *shost)
114{ 147{
115 struct scsi_host_template *sht = shost->hostt; 148 struct scsi_host_template *sht = shost->hostt;
@@ -133,6 +166,10 @@ void scsi_proc_host_add(struct Scsi_Host *shost)
133 p->owner = sht->module; 166 p->owner = sht->module;
134} 167}
135 168
169/**
170 * scsi_proc_host_rm - remove this host's entry from /proc
171 * @shost: which host
172 */
136void scsi_proc_host_rm(struct Scsi_Host *shost) 173void scsi_proc_host_rm(struct Scsi_Host *shost)
137{ 174{
138 char name[10]; 175 char name[10];
@@ -143,7 +180,14 @@ void scsi_proc_host_rm(struct Scsi_Host *shost)
143 sprintf(name,"%d", shost->host_no); 180 sprintf(name,"%d", shost->host_no);
144 remove_proc_entry(name, shost->hostt->proc_dir); 181 remove_proc_entry(name, shost->hostt->proc_dir);
145} 182}
146 183/**
184 * proc_print_scsidevice - return data about this host
185 * @dev: A scsi device
186 * @data: &struct seq_file to output to.
187 *
188 * Description: prints Host, Channel, Id, Lun, Vendor, Model, Rev, Type,
189 * and revision.
190 */
147static int proc_print_scsidevice(struct device *dev, void *data) 191static int proc_print_scsidevice(struct device *dev, void *data)
148{ 192{
149 struct scsi_device *sdev = to_scsi_device(dev); 193 struct scsi_device *sdev = to_scsi_device(dev);
@@ -189,6 +233,21 @@ static int proc_print_scsidevice(struct device *dev, void *data)
189 return 0; 233 return 0;
190} 234}
191 235
236/**
237 * scsi_add_single_device - Respond to user request to probe for/add device
238 * @host: user-supplied decimal integer
239 * @channel: user-supplied decimal integer
240 * @id: user-supplied decimal integer
241 * @lun: user-supplied decimal integer
242 *
243 * Description: called by writing "scsi add-single-device" to /proc/scsi/scsi.
244 *
245 * does scsi_host_lookup() and either user_scan() if that transport
246 * type supports it, or else scsi_scan_host_selected()
247 *
248 * Note: this seems to be aimed exclusively at SCSI parallel busses.
249 */
250
192static int scsi_add_single_device(uint host, uint channel, uint id, uint lun) 251static int scsi_add_single_device(uint host, uint channel, uint id, uint lun)
193{ 252{
194 struct Scsi_Host *shost; 253 struct Scsi_Host *shost;
@@ -206,6 +265,16 @@ static int scsi_add_single_device(uint host, uint channel, uint id, uint lun)
206 return error; 265 return error;
207} 266}
208 267
268/**
269 * scsi_remove_single_device - Respond to user request to remove a device
270 * @host: user-supplied decimal integer
271 * @channel: user-supplied decimal integer
272 * @id: user-supplied decimal integer
273 * @lun: user-supplied decimal integer
274 *
275 * Description: called by writing "scsi remove-single-device" to
276 * /proc/scsi/scsi. Does a scsi_device_lookup() and scsi_remove_device()
277 */
209static int scsi_remove_single_device(uint host, uint channel, uint id, uint lun) 278static int scsi_remove_single_device(uint host, uint channel, uint id, uint lun)
210{ 279{
211 struct scsi_device *sdev; 280 struct scsi_device *sdev;
@@ -226,6 +295,25 @@ static int scsi_remove_single_device(uint host, uint channel, uint id, uint lun)
226 return error; 295 return error;
227} 296}
228 297
298/**
299 * proc_scsi_write - handle writes to /proc/scsi/scsi
300 * @file: not used
301 * @buf: buffer to write
302 * @length: length of buf, at most PAGE_SIZE
303 * @ppos: not used
304 *
305 * Description: this provides a legacy mechanism to add or remove devices by
306 * Host, Channel, ID, and Lun. To use,
307 * "echo 'scsi add-single-device 0 1 2 3' > /proc/scsi/scsi" or
308 * "echo 'scsi remove-single-device 0 1 2 3' > /proc/scsi/scsi" with
309 * "0 1 2 3" replaced by the Host, Channel, Id, and Lun.
310 *
311 * Note: this seems to be aimed at parallel SCSI. Most modern busses (USB,
312 * SATA, Firewire, Fibre Channel, etc) dynamically assign these values to
313 * provide a unique identifier and nothing more.
314 */
315
316
229static ssize_t proc_scsi_write(struct file *file, const char __user *buf, 317static ssize_t proc_scsi_write(struct file *file, const char __user *buf,
230 size_t length, loff_t *ppos) 318 size_t length, loff_t *ppos)
231{ 319{
@@ -291,6 +379,11 @@ static ssize_t proc_scsi_write(struct file *file, const char __user *buf,
291 return err; 379 return err;
292} 380}
293 381
382/**
383 * proc_scsi_show - show contents of /proc/scsi/scsi (attached devices)
384 * @s: output goes here
385 * @p: not used
386 */
294static int proc_scsi_show(struct seq_file *s, void *p) 387static int proc_scsi_show(struct seq_file *s, void *p)
295{ 388{
296 seq_printf(s, "Attached devices:\n"); 389 seq_printf(s, "Attached devices:\n");
@@ -298,10 +391,17 @@ static int proc_scsi_show(struct seq_file *s, void *p)
298 return 0; 391 return 0;
299} 392}
300 393
394/**
395 * proc_scsi_open - glue function
396 * @inode: not used
397 * @file: passed to single_open()
398 *
399 * Associates proc_scsi_show with this file
400 */
301static int proc_scsi_open(struct inode *inode, struct file *file) 401static int proc_scsi_open(struct inode *inode, struct file *file)
302{ 402{
303 /* 403 /*
304 * We don't really needs this for the write case but it doesn't 404 * We don't really need this for the write case but it doesn't
305 * harm either. 405 * harm either.
306 */ 406 */
307 return single_open(file, proc_scsi_show, NULL); 407 return single_open(file, proc_scsi_show, NULL);
@@ -315,6 +415,9 @@ static const struct file_operations proc_scsi_operations = {
315 .release = single_release, 415 .release = single_release,
316}; 416};
317 417
418/**
419 * scsi_init_procfs - create scsi and scsi/scsi in procfs
420 */
318int __init scsi_init_procfs(void) 421int __init scsi_init_procfs(void)
319{ 422{
320 struct proc_dir_entry *pde; 423 struct proc_dir_entry *pde;
@@ -336,6 +439,9 @@ err1:
336 return -ENOMEM; 439 return -ENOMEM;
337} 440}
338 441
442/**
443 * scsi_exit_procfs - Remove scsi/scsi and scsi from procfs
444 */
339void scsi_exit_procfs(void) 445void scsi_exit_procfs(void)
340{ 446{
341 remove_proc_entry("scsi/scsi", NULL); 447 remove_proc_entry("scsi/scsi", NULL);
diff --git a/drivers/scsi/scsi_scan.c b/drivers/scsi/scsi_scan.c
index 40ea71cd2ca6..7e8b2045ccfa 100644
--- a/drivers/scsi/scsi_scan.c
+++ b/drivers/scsi/scsi_scan.c
@@ -221,6 +221,9 @@ static void scsi_unlock_floptical(struct scsi_device *sdev,
221 221
222/** 222/**
223 * scsi_alloc_sdev - allocate and setup a scsi_Device 223 * scsi_alloc_sdev - allocate and setup a scsi_Device
224 * @starget: which target to allocate a &scsi_device for
225 * @lun: which lun
226 * @hostdata: usually NULL and set by ->slave_alloc instead
224 * 227 *
225 * Description: 228 * Description:
226 * Allocate, initialize for io, and return a pointer to a scsi_Device. 229 * Allocate, initialize for io, and return a pointer to a scsi_Device.
@@ -472,7 +475,6 @@ static void scsi_target_reap_usercontext(struct work_struct *work)
472 475
473/** 476/**
474 * scsi_target_reap - check to see if target is in use and destroy if not 477 * scsi_target_reap - check to see if target is in use and destroy if not
475 *
476 * @starget: target to be checked 478 * @starget: target to be checked
477 * 479 *
478 * This is used after removing a LUN or doing a last put of the target 480 * This is used after removing a LUN or doing a last put of the target
@@ -928,8 +930,7 @@ static inline void scsi_destroy_sdev(struct scsi_device *sdev)
928 930
929#ifdef CONFIG_SCSI_LOGGING 931#ifdef CONFIG_SCSI_LOGGING
930/** 932/**
931 * scsi_inq_str - print INQUIRY data from min to max index, 933 * scsi_inq_str - print INQUIRY data from min to max index, strip trailing whitespace
932 * strip trailing whitespace
933 * @buf: Output buffer with at least end-first+1 bytes of space 934 * @buf: Output buffer with at least end-first+1 bytes of space
934 * @inq: Inquiry buffer (input) 935 * @inq: Inquiry buffer (input)
935 * @first: Offset of string into inq 936 * @first: Offset of string into inq
@@ -957,9 +958,10 @@ static unsigned char *scsi_inq_str(unsigned char *buf, unsigned char *inq,
957 * scsi_probe_and_add_lun - probe a LUN, if a LUN is found add it 958 * scsi_probe_and_add_lun - probe a LUN, if a LUN is found add it
958 * @starget: pointer to target device structure 959 * @starget: pointer to target device structure
959 * @lun: LUN of target device 960 * @lun: LUN of target device
960 * @sdevscan: probe the LUN corresponding to this scsi_device
961 * @sdevnew: store the value of any new scsi_device allocated
962 * @bflagsp: store bflags here if not NULL 961 * @bflagsp: store bflags here if not NULL
962 * @sdevp: probe the LUN corresponding to this scsi_device
963 * @rescan: if nonzero skip some code only needed on first scan
964 * @hostdata: passed to scsi_alloc_sdev()
963 * 965 *
964 * Description: 966 * Description:
965 * Call scsi_probe_lun, if a LUN with an attached device is found, 967 * Call scsi_probe_lun, if a LUN with an attached device is found,
@@ -1110,6 +1112,8 @@ static int scsi_probe_and_add_lun(struct scsi_target *starget,
1110 * scsi_sequential_lun_scan - sequentially scan a SCSI target 1112 * scsi_sequential_lun_scan - sequentially scan a SCSI target
1111 * @starget: pointer to target structure to scan 1113 * @starget: pointer to target structure to scan
1112 * @bflags: black/white list flag for LUN 0 1114 * @bflags: black/white list flag for LUN 0
1115 * @scsi_level: Which version of the standard does this device adhere to
1116 * @rescan: passed to scsi_probe_add_lun()
1113 * 1117 *
1114 * Description: 1118 * Description:
1115 * Generally, scan from LUN 1 (LUN 0 is assumed to already have been 1119 * Generally, scan from LUN 1 (LUN 0 is assumed to already have been
@@ -1220,7 +1224,7 @@ EXPORT_SYMBOL(scsilun_to_int);
1220 1224
1221/** 1225/**
1222 * int_to_scsilun: reverts an int into a scsi_lun 1226 * int_to_scsilun: reverts an int into a scsi_lun
1223 * @int: integer to be reverted 1227 * @lun: integer to be reverted
1224 * @scsilun: struct scsi_lun to be set. 1228 * @scsilun: struct scsi_lun to be set.
1225 * 1229 *
1226 * Description: 1230 * Description:
@@ -1252,18 +1256,22 @@ EXPORT_SYMBOL(int_to_scsilun);
1252 1256
1253/** 1257/**
1254 * scsi_report_lun_scan - Scan using SCSI REPORT LUN results 1258 * scsi_report_lun_scan - Scan using SCSI REPORT LUN results
1255 * @sdevscan: scan the host, channel, and id of this scsi_device 1259 * @starget: which target
1260 * @bflags: Zero or a mix of BLIST_NOLUN, BLIST_REPORTLUN2, or BLIST_NOREPORTLUN
1261 * @rescan: nonzero if we can skip code only needed on first scan
1256 * 1262 *
1257 * Description: 1263 * Description:
1258 * If @sdevscan is for a SCSI-3 or up device, send a REPORT LUN 1264 * Fast scanning for modern (SCSI-3) devices by sending a REPORT LUN command.
1259 * command, and scan the resulting list of LUNs by calling 1265 * Scan the resulting list of LUNs by calling scsi_probe_and_add_lun.
1260 * scsi_probe_and_add_lun.
1261 * 1266 *
1262 * Modifies sdevscan->lun. 1267 * If BLINK_REPORTLUN2 is set, scan a target that supports more than 8
1268 * LUNs even if it's older than SCSI-3.
1269 * If BLIST_NOREPORTLUN is set, return 1 always.
1270 * If BLIST_NOLUN is set, return 0 always.
1263 * 1271 *
1264 * Return: 1272 * Return:
1265 * 0: scan completed (or no memory, so further scanning is futile) 1273 * 0: scan completed (or no memory, so further scanning is futile)
1266 * 1: no report lun scan, or not configured 1274 * 1: could not scan with REPORT LUN
1267 **/ 1275 **/
1268static int scsi_report_lun_scan(struct scsi_target *starget, int bflags, 1276static int scsi_report_lun_scan(struct scsi_target *starget, int bflags,
1269 int rescan) 1277 int rescan)
diff --git a/drivers/scsi/scsi_transport_fc.c b/drivers/scsi/scsi_transport_fc.c
index 7a7cfe583b2a..b1119da6e88c 100644
--- a/drivers/scsi/scsi_transport_fc.c
+++ b/drivers/scsi/scsi_transport_fc.c
@@ -481,9 +481,9 @@ MODULE_PARM_DESC(dev_loss_tmo,
481 " exceeded, the scsi target is removed. Value should be" 481 " exceeded, the scsi target is removed. Value should be"
482 " between 1 and SCSI_DEVICE_BLOCK_MAX_TIMEOUT."); 482 " between 1 and SCSI_DEVICE_BLOCK_MAX_TIMEOUT.");
483 483
484/** 484/*
485 * Netlink Infrastructure 485 * Netlink Infrastructure
486 **/ 486 */
487 487
488static atomic_t fc_event_seq; 488static atomic_t fc_event_seq;
489 489
@@ -491,10 +491,10 @@ static atomic_t fc_event_seq;
491 * fc_get_event_number - Obtain the next sequential FC event number 491 * fc_get_event_number - Obtain the next sequential FC event number
492 * 492 *
493 * Notes: 493 * Notes:
494 * We could have inline'd this, but it would have required fc_event_seq to 494 * We could have inlined this, but it would have required fc_event_seq to
495 * be exposed. For now, live with the subroutine call. 495 * be exposed. For now, live with the subroutine call.
496 * Atomic used to avoid lock/unlock... 496 * Atomic used to avoid lock/unlock...
497 **/ 497 */
498u32 498u32
499fc_get_event_number(void) 499fc_get_event_number(void)
500{ 500{
@@ -505,7 +505,6 @@ EXPORT_SYMBOL(fc_get_event_number);
505 505
506/** 506/**
507 * fc_host_post_event - called to post an even on an fc_host. 507 * fc_host_post_event - called to post an even on an fc_host.
508 *
509 * @shost: host the event occurred on 508 * @shost: host the event occurred on
510 * @event_number: fc event number obtained from get_fc_event_number() 509 * @event_number: fc event number obtained from get_fc_event_number()
511 * @event_code: fc_host event being posted 510 * @event_code: fc_host event being posted
@@ -513,7 +512,7 @@ EXPORT_SYMBOL(fc_get_event_number);
513 * 512 *
514 * Notes: 513 * Notes:
515 * This routine assumes no locks are held on entry. 514 * This routine assumes no locks are held on entry.
516 **/ 515 */
517void 516void
518fc_host_post_event(struct Scsi_Host *shost, u32 event_number, 517fc_host_post_event(struct Scsi_Host *shost, u32 event_number,
519 enum fc_host_event_code event_code, u32 event_data) 518 enum fc_host_event_code event_code, u32 event_data)
@@ -579,17 +578,16 @@ EXPORT_SYMBOL(fc_host_post_event);
579 578
580 579
581/** 580/**
582 * fc_host_post_vendor_event - called to post a vendor unique event on 581 * fc_host_post_vendor_event - called to post a vendor unique event on an fc_host
583 * a fc_host
584 *
585 * @shost: host the event occurred on 582 * @shost: host the event occurred on
586 * @event_number: fc event number obtained from get_fc_event_number() 583 * @event_number: fc event number obtained from get_fc_event_number()
587 * @data_len: amount, in bytes, of vendor unique data 584 * @data_len: amount, in bytes, of vendor unique data
588 * @data_buf: pointer to vendor unique data 585 * @data_buf: pointer to vendor unique data
586 * @vendor_id: Vendor id
589 * 587 *
590 * Notes: 588 * Notes:
591 * This routine assumes no locks are held on entry. 589 * This routine assumes no locks are held on entry.
592 **/ 590 */
593void 591void
594fc_host_post_vendor_event(struct Scsi_Host *shost, u32 event_number, 592fc_host_post_vendor_event(struct Scsi_Host *shost, u32 event_number,
595 u32 data_len, char * data_buf, u64 vendor_id) 593 u32 data_len, char * data_buf, u64 vendor_id)
@@ -1900,7 +1898,6 @@ static int fc_vport_match(struct attribute_container *cont,
1900 1898
1901/** 1899/**
1902 * fc_timed_out - FC Transport I/O timeout intercept handler 1900 * fc_timed_out - FC Transport I/O timeout intercept handler
1903 *
1904 * @scmd: The SCSI command which timed out 1901 * @scmd: The SCSI command which timed out
1905 * 1902 *
1906 * This routine protects against error handlers getting invoked while a 1903 * This routine protects against error handlers getting invoked while a
@@ -1920,7 +1917,7 @@ static int fc_vport_match(struct attribute_container *cont,
1920 * 1917 *
1921 * Notes: 1918 * Notes:
1922 * This routine assumes no locks are held on entry. 1919 * This routine assumes no locks are held on entry.
1923 **/ 1920 */
1924static enum scsi_eh_timer_return 1921static enum scsi_eh_timer_return
1925fc_timed_out(struct scsi_cmnd *scmd) 1922fc_timed_out(struct scsi_cmnd *scmd)
1926{ 1923{
@@ -2133,7 +2130,7 @@ EXPORT_SYMBOL(fc_release_transport);
2133 * 1 - work queued for execution 2130 * 1 - work queued for execution
2134 * 0 - work is already queued 2131 * 0 - work is already queued
2135 * -EINVAL - work queue doesn't exist 2132 * -EINVAL - work queue doesn't exist
2136 **/ 2133 */
2137static int 2134static int
2138fc_queue_work(struct Scsi_Host *shost, struct work_struct *work) 2135fc_queue_work(struct Scsi_Host *shost, struct work_struct *work)
2139{ 2136{
@@ -2152,7 +2149,7 @@ fc_queue_work(struct Scsi_Host *shost, struct work_struct *work)
2152/** 2149/**
2153 * fc_flush_work - Flush a fc_host's workqueue. 2150 * fc_flush_work - Flush a fc_host's workqueue.
2154 * @shost: Pointer to Scsi_Host bound to fc_host. 2151 * @shost: Pointer to Scsi_Host bound to fc_host.
2155 **/ 2152 */
2156static void 2153static void
2157fc_flush_work(struct Scsi_Host *shost) 2154fc_flush_work(struct Scsi_Host *shost)
2158{ 2155{
@@ -2175,7 +2172,7 @@ fc_flush_work(struct Scsi_Host *shost)
2175 * 2172 *
2176 * Return value: 2173 * Return value:
2177 * 1 on success / 0 already queued / < 0 for error 2174 * 1 on success / 0 already queued / < 0 for error
2178 **/ 2175 */
2179static int 2176static int
2180fc_queue_devloss_work(struct Scsi_Host *shost, struct delayed_work *work, 2177fc_queue_devloss_work(struct Scsi_Host *shost, struct delayed_work *work,
2181 unsigned long delay) 2178 unsigned long delay)
@@ -2195,7 +2192,7 @@ fc_queue_devloss_work(struct Scsi_Host *shost, struct delayed_work *work,
2195/** 2192/**
2196 * fc_flush_devloss - Flush a fc_host's devloss workqueue. 2193 * fc_flush_devloss - Flush a fc_host's devloss workqueue.
2197 * @shost: Pointer to Scsi_Host bound to fc_host. 2194 * @shost: Pointer to Scsi_Host bound to fc_host.
2198 **/ 2195 */
2199static void 2196static void
2200fc_flush_devloss(struct Scsi_Host *shost) 2197fc_flush_devloss(struct Scsi_Host *shost)
2201{ 2198{
@@ -2212,21 +2209,20 @@ fc_flush_devloss(struct Scsi_Host *shost)
2212 2209
2213 2210
2214/** 2211/**
2215 * fc_remove_host - called to terminate any fc_transport-related elements 2212 * fc_remove_host - called to terminate any fc_transport-related elements for a scsi host.
2216 * for a scsi host. 2213 * @shost: Which &Scsi_Host
2217 * @rport: remote port to be unblocked.
2218 * 2214 *
2219 * This routine is expected to be called immediately preceeding the 2215 * This routine is expected to be called immediately preceeding the
2220 * a driver's call to scsi_remove_host(). 2216 * a driver's call to scsi_remove_host().
2221 * 2217 *
2222 * WARNING: A driver utilizing the fc_transport, which fails to call 2218 * WARNING: A driver utilizing the fc_transport, which fails to call
2223 * this routine prior to scsi_remote_host(), will leave dangling 2219 * this routine prior to scsi_remove_host(), will leave dangling
2224 * objects in /sys/class/fc_remote_ports. Access to any of these 2220 * objects in /sys/class/fc_remote_ports. Access to any of these
2225 * objects can result in a system crash !!! 2221 * objects can result in a system crash !!!
2226 * 2222 *
2227 * Notes: 2223 * Notes:
2228 * This routine assumes no locks are held on entry. 2224 * This routine assumes no locks are held on entry.
2229 **/ 2225 */
2230void 2226void
2231fc_remove_host(struct Scsi_Host *shost) 2227fc_remove_host(struct Scsi_Host *shost)
2232{ 2228{
@@ -2281,10 +2277,10 @@ EXPORT_SYMBOL(fc_remove_host);
2281 2277
2282/** 2278/**
2283 * fc_starget_delete - called to delete the scsi decendents of an rport 2279 * fc_starget_delete - called to delete the scsi decendents of an rport
2284 * (target and all sdevs)
2285 *
2286 * @work: remote port to be operated on. 2280 * @work: remote port to be operated on.
2287 **/ 2281 *
2282 * Deletes target and all sdevs.
2283 */
2288static void 2284static void
2289fc_starget_delete(struct work_struct *work) 2285fc_starget_delete(struct work_struct *work)
2290{ 2286{
@@ -2303,9 +2299,8 @@ fc_starget_delete(struct work_struct *work)
2303 2299
2304/** 2300/**
2305 * fc_rport_final_delete - finish rport termination and delete it. 2301 * fc_rport_final_delete - finish rport termination and delete it.
2306 *
2307 * @work: remote port to be deleted. 2302 * @work: remote port to be deleted.
2308 **/ 2303 */
2309static void 2304static void
2310fc_rport_final_delete(struct work_struct *work) 2305fc_rport_final_delete(struct work_struct *work)
2311{ 2306{
@@ -2375,7 +2370,7 @@ fc_rport_final_delete(struct work_struct *work)
2375 * 2370 *
2376 * Notes: 2371 * Notes:
2377 * This routine assumes no locks are held on entry. 2372 * This routine assumes no locks are held on entry.
2378 **/ 2373 */
2379static struct fc_rport * 2374static struct fc_rport *
2380fc_rport_create(struct Scsi_Host *shost, int channel, 2375fc_rport_create(struct Scsi_Host *shost, int channel,
2381 struct fc_rport_identifiers *ids) 2376 struct fc_rport_identifiers *ids)
@@ -2462,8 +2457,7 @@ delete_rport:
2462} 2457}
2463 2458
2464/** 2459/**
2465 * fc_remote_port_add - notifies the fc transport of the existence 2460 * fc_remote_port_add - notify fc transport of the existence of a remote FC port.
2466 * of a remote FC port.
2467 * @shost: scsi host the remote port is connected to. 2461 * @shost: scsi host the remote port is connected to.
2468 * @channel: Channel on shost port connected to. 2462 * @channel: Channel on shost port connected to.
2469 * @ids: The world wide names, fc address, and FC4 port 2463 * @ids: The world wide names, fc address, and FC4 port
@@ -2499,7 +2493,7 @@ delete_rport:
2499 * 2493 *
2500 * Notes: 2494 * Notes:
2501 * This routine assumes no locks are held on entry. 2495 * This routine assumes no locks are held on entry.
2502 **/ 2496 */
2503struct fc_rport * 2497struct fc_rport *
2504fc_remote_port_add(struct Scsi_Host *shost, int channel, 2498fc_remote_port_add(struct Scsi_Host *shost, int channel,
2505 struct fc_rport_identifiers *ids) 2499 struct fc_rport_identifiers *ids)
@@ -2683,19 +2677,18 @@ EXPORT_SYMBOL(fc_remote_port_add);
2683 2677
2684 2678
2685/** 2679/**
2686 * fc_remote_port_delete - notifies the fc transport that a remote 2680 * fc_remote_port_delete - notifies the fc transport that a remote port is no longer in existence.
2687 * port is no longer in existence.
2688 * @rport: The remote port that no longer exists 2681 * @rport: The remote port that no longer exists
2689 * 2682 *
2690 * The LLDD calls this routine to notify the transport that a remote 2683 * The LLDD calls this routine to notify the transport that a remote
2691 * port is no longer part of the topology. Note: Although a port 2684 * port is no longer part of the topology. Note: Although a port
2692 * may no longer be part of the topology, it may persist in the remote 2685 * may no longer be part of the topology, it may persist in the remote
2693 * ports displayed by the fc_host. We do this under 2 conditions: 2686 * ports displayed by the fc_host. We do this under 2 conditions:
2694 * - If the port was a scsi target, we delay its deletion by "blocking" it. 2687 * 1) If the port was a scsi target, we delay its deletion by "blocking" it.
2695 * This allows the port to temporarily disappear, then reappear without 2688 * This allows the port to temporarily disappear, then reappear without
2696 * disrupting the SCSI device tree attached to it. During the "blocked" 2689 * disrupting the SCSI device tree attached to it. During the "blocked"
2697 * period the port will still exist. 2690 * period the port will still exist.
2698 * - If the port was a scsi target and disappears for longer than we 2691 * 2) If the port was a scsi target and disappears for longer than we
2699 * expect, we'll delete the port and the tear down the SCSI device tree 2692 * expect, we'll delete the port and the tear down the SCSI device tree
2700 * attached to it. However, we want to semi-persist the target id assigned 2693 * attached to it. However, we want to semi-persist the target id assigned
2701 * to that port if it eventually does exist. The port structure will 2694 * to that port if it eventually does exist. The port structure will
@@ -2709,7 +2702,8 @@ EXPORT_SYMBOL(fc_remote_port_add);
2709 * temporary blocked state. From the LLDD's perspective, the rport no 2702 * temporary blocked state. From the LLDD's perspective, the rport no
2710 * longer exists. From the SCSI midlayer's perspective, the SCSI target 2703 * longer exists. From the SCSI midlayer's perspective, the SCSI target
2711 * exists, but all sdevs on it are blocked from further I/O. The following 2704 * exists, but all sdevs on it are blocked from further I/O. The following
2712 * is then expected: 2705 * is then expected.
2706 *
2713 * If the remote port does not return (signaled by a LLDD call to 2707 * If the remote port does not return (signaled by a LLDD call to
2714 * fc_remote_port_add()) within the dev_loss_tmo timeout, then the 2708 * fc_remote_port_add()) within the dev_loss_tmo timeout, then the
2715 * scsi target is removed - killing all outstanding i/o and removing the 2709 * scsi target is removed - killing all outstanding i/o and removing the
@@ -2731,7 +2725,7 @@ EXPORT_SYMBOL(fc_remote_port_add);
2731 * 2725 *
2732 * Notes: 2726 * Notes:
2733 * This routine assumes no locks are held on entry. 2727 * This routine assumes no locks are held on entry.
2734 **/ 2728 */
2735void 2729void
2736fc_remote_port_delete(struct fc_rport *rport) 2730fc_remote_port_delete(struct fc_rport *rport)
2737{ 2731{
@@ -2792,12 +2786,12 @@ fc_remote_port_delete(struct fc_rport *rport)
2792EXPORT_SYMBOL(fc_remote_port_delete); 2786EXPORT_SYMBOL(fc_remote_port_delete);
2793 2787
2794/** 2788/**
2795 * fc_remote_port_rolechg - notifies the fc transport that the roles 2789 * fc_remote_port_rolechg - notifies the fc transport that the roles on a remote may have changed.
2796 * on a remote may have changed.
2797 * @rport: The remote port that changed. 2790 * @rport: The remote port that changed.
2791 * @roles: New roles for this port.
2798 * 2792 *
2799 * The LLDD calls this routine to notify the transport that the roles 2793 * Description: The LLDD calls this routine to notify the transport that the
2800 * on a remote port may have changed. The largest effect of this is 2794 * roles on a remote port may have changed. The largest effect of this is
2801 * if a port now becomes a FCP Target, it must be allocated a 2795 * if a port now becomes a FCP Target, it must be allocated a
2802 * scsi target id. If the port is no longer a FCP target, any 2796 * scsi target id. If the port is no longer a FCP target, any
2803 * scsi target id value assigned to it will persist in case the 2797 * scsi target id value assigned to it will persist in case the
@@ -2810,7 +2804,7 @@ EXPORT_SYMBOL(fc_remote_port_delete);
2810 * 2804 *
2811 * Notes: 2805 * Notes:
2812 * This routine assumes no locks are held on entry. 2806 * This routine assumes no locks are held on entry.
2813 **/ 2807 */
2814void 2808void
2815fc_remote_port_rolechg(struct fc_rport *rport, u32 roles) 2809fc_remote_port_rolechg(struct fc_rport *rport, u32 roles)
2816{ 2810{
@@ -2875,12 +2869,12 @@ fc_remote_port_rolechg(struct fc_rport *rport, u32 roles)
2875EXPORT_SYMBOL(fc_remote_port_rolechg); 2869EXPORT_SYMBOL(fc_remote_port_rolechg);
2876 2870
2877/** 2871/**
2878 * fc_timeout_deleted_rport - Timeout handler for a deleted remote port, 2872 * fc_timeout_deleted_rport - Timeout handler for a deleted remote port.
2879 * which we blocked, and has now failed to return
2880 * in the allotted time.
2881 *
2882 * @work: rport target that failed to reappear in the allotted time. 2873 * @work: rport target that failed to reappear in the allotted time.
2883 **/ 2874 *
2875 * Description: An attempt to delete a remote port blocks, and if it fails
2876 * to return in the allotted time this gets called.
2877 */
2884static void 2878static void
2885fc_timeout_deleted_rport(struct work_struct *work) 2879fc_timeout_deleted_rport(struct work_struct *work)
2886{ 2880{
@@ -2984,14 +2978,12 @@ fc_timeout_deleted_rport(struct work_struct *work)
2984} 2978}
2985 2979
2986/** 2980/**
2987 * fc_timeout_fail_rport_io - Timeout handler for a fast io failing on a 2981 * fc_timeout_fail_rport_io - Timeout handler for a fast io failing on a disconnected SCSI target.
2988 * disconnected SCSI target.
2989 *
2990 * @work: rport to terminate io on. 2982 * @work: rport to terminate io on.
2991 * 2983 *
2992 * Notes: Only requests the failure of the io, not that all are flushed 2984 * Notes: Only requests the failure of the io, not that all are flushed
2993 * prior to returning. 2985 * prior to returning.
2994 **/ 2986 */
2995static void 2987static void
2996fc_timeout_fail_rport_io(struct work_struct *work) 2988fc_timeout_fail_rport_io(struct work_struct *work)
2997{ 2989{
@@ -3008,9 +3000,8 @@ fc_timeout_fail_rport_io(struct work_struct *work)
3008 3000
3009/** 3001/**
3010 * fc_scsi_scan_rport - called to perform a scsi scan on a remote port. 3002 * fc_scsi_scan_rport - called to perform a scsi scan on a remote port.
3011 *
3012 * @work: remote port to be scanned. 3003 * @work: remote port to be scanned.
3013 **/ 3004 */
3014static void 3005static void
3015fc_scsi_scan_rport(struct work_struct *work) 3006fc_scsi_scan_rport(struct work_struct *work)
3016{ 3007{
@@ -3047,7 +3038,7 @@ fc_scsi_scan_rport(struct work_struct *work)
3047 * 3038 *
3048 * Notes: 3039 * Notes:
3049 * This routine assumes no locks are held on entry. 3040 * This routine assumes no locks are held on entry.
3050 **/ 3041 */
3051static int 3042static int
3052fc_vport_create(struct Scsi_Host *shost, int channel, struct device *pdev, 3043fc_vport_create(struct Scsi_Host *shost, int channel, struct device *pdev,
3053 struct fc_vport_identifiers *ids, struct fc_vport **ret_vport) 3044 struct fc_vport_identifiers *ids, struct fc_vport **ret_vport)
@@ -3172,7 +3163,7 @@ delete_vport:
3172 * 3163 *
3173 * Notes: 3164 * Notes:
3174 * This routine assumes no locks are held on entry. 3165 * This routine assumes no locks are held on entry.
3175 **/ 3166 */
3176int 3167int
3177fc_vport_terminate(struct fc_vport *vport) 3168fc_vport_terminate(struct fc_vport *vport)
3178{ 3169{
@@ -3232,9 +3223,8 @@ EXPORT_SYMBOL(fc_vport_terminate);
3232 3223
3233/** 3224/**
3234 * fc_vport_sched_delete - workq-based delete request for a vport 3225 * fc_vport_sched_delete - workq-based delete request for a vport
3235 *
3236 * @work: vport to be deleted. 3226 * @work: vport to be deleted.
3237 **/ 3227 */
3238static void 3228static void
3239fc_vport_sched_delete(struct work_struct *work) 3229fc_vport_sched_delete(struct work_struct *work)
3240{ 3230{
diff --git a/drivers/scsi/scsi_transport_iscsi.c b/drivers/scsi/scsi_transport_iscsi.c
index 5428d15f23c6..cb48b80c0865 100644
--- a/drivers/scsi/scsi_transport_iscsi.c
+++ b/drivers/scsi/scsi_transport_iscsi.c
@@ -328,9 +328,10 @@ EXPORT_SYMBOL_GPL(iscsi_add_session);
328 * iscsi_create_session - create iscsi class session 328 * iscsi_create_session - create iscsi class session
329 * @shost: scsi host 329 * @shost: scsi host
330 * @transport: iscsi transport 330 * @transport: iscsi transport
331 * @target_id: which target
331 * 332 *
332 * This can be called from a LLD or iscsi_transport. 333 * This can be called from a LLD or iscsi_transport.
333 **/ 334 */
334struct iscsi_cls_session * 335struct iscsi_cls_session *
335iscsi_create_session(struct Scsi_Host *shost, 336iscsi_create_session(struct Scsi_Host *shost,
336 struct iscsi_transport *transport, 337 struct iscsi_transport *transport,
@@ -382,7 +383,7 @@ EXPORT_SYMBOL_GPL(iscsi_free_session);
382 * 383 *
383 * Can be called by a LLD or iscsi_transport. There must not be 384 * Can be called by a LLD or iscsi_transport. There must not be
384 * any running connections. 385 * any running connections.
385 **/ 386 */
386int iscsi_destroy_session(struct iscsi_cls_session *session) 387int iscsi_destroy_session(struct iscsi_cls_session *session)
387{ 388{
388 iscsi_remove_session(session); 389 iscsi_remove_session(session);
@@ -418,7 +419,7 @@ static int iscsi_is_conn_dev(const struct device *dev)
418 * for software iscsi we could be trying to preallocate a connection struct 419 * for software iscsi we could be trying to preallocate a connection struct
419 * in which case there could be two connection structs and cid would be 420 * in which case there could be two connection structs and cid would be
420 * non-zero. 421 * non-zero.
421 **/ 422 */
422struct iscsi_cls_conn * 423struct iscsi_cls_conn *
423iscsi_create_conn(struct iscsi_cls_session *session, uint32_t cid) 424iscsi_create_conn(struct iscsi_cls_session *session, uint32_t cid)
424{ 425{
@@ -465,10 +466,10 @@ EXPORT_SYMBOL_GPL(iscsi_create_conn);
465 466
466/** 467/**
467 * iscsi_destroy_conn - destroy iscsi class connection 468 * iscsi_destroy_conn - destroy iscsi class connection
468 * @session: iscsi cls session 469 * @conn: iscsi cls session
469 * 470 *
470 * This can be called from a LLD or iscsi_transport. 471 * This can be called from an LLD or iscsi_transport.
471 **/ 472 */
472int iscsi_destroy_conn(struct iscsi_cls_conn *conn) 473int iscsi_destroy_conn(struct iscsi_cls_conn *conn)
473{ 474{
474 transport_unregister_device(&conn->dev); 475 transport_unregister_device(&conn->dev);
@@ -690,7 +691,7 @@ iscsi_if_get_stats(struct iscsi_transport *transport, struct nlmsghdr *nlh)
690 * 691 *
691 * This is called by HW iscsi LLDs to notify userpsace that its HW has 692 * This is called by HW iscsi LLDs to notify userpsace that its HW has
692 * removed a session. 693 * removed a session.
693 **/ 694 */
694int iscsi_if_destroy_session_done(struct iscsi_cls_conn *conn) 695int iscsi_if_destroy_session_done(struct iscsi_cls_conn *conn)
695{ 696{
696 struct iscsi_internal *priv; 697 struct iscsi_internal *priv;
@@ -751,7 +752,7 @@ EXPORT_SYMBOL_GPL(iscsi_if_destroy_session_done);
751 * 752 *
752 * This is called by HW iscsi LLDs to notify userpsace that its HW has 753 * This is called by HW iscsi LLDs to notify userpsace that its HW has
753 * created a session or a existing session is back in the logged in state. 754 * created a session or a existing session is back in the logged in state.
754 **/ 755 */
755int iscsi_if_create_session_done(struct iscsi_cls_conn *conn) 756int iscsi_if_create_session_done(struct iscsi_cls_conn *conn)
756{ 757{
757 struct iscsi_internal *priv; 758 struct iscsi_internal *priv;
diff --git a/drivers/scsi/scsi_transport_sas.c b/drivers/scsi/scsi_transport_sas.c
index 3120f4b3a11a..87e786daa713 100644
--- a/drivers/scsi/scsi_transport_sas.c
+++ b/drivers/scsi/scsi_transport_sas.c
@@ -323,7 +323,7 @@ static int do_sas_phy_delete(struct device *dev, void *data)
323} 323}
324 324
325/** 325/**
326 * sas_remove_children -- tear down a devices SAS data structures 326 * sas_remove_children - tear down a devices SAS data structures
327 * @dev: device belonging to the sas object 327 * @dev: device belonging to the sas object
328 * 328 *
329 * Removes all SAS PHYs and remote PHYs for a given object 329 * Removes all SAS PHYs and remote PHYs for a given object
@@ -336,7 +336,7 @@ void sas_remove_children(struct device *dev)
336EXPORT_SYMBOL(sas_remove_children); 336EXPORT_SYMBOL(sas_remove_children);
337 337
338/** 338/**
339 * sas_remove_host -- tear down a Scsi_Host's SAS data structures 339 * sas_remove_host - tear down a Scsi_Host's SAS data structures
340 * @shost: Scsi Host that is torn down 340 * @shost: Scsi Host that is torn down
341 * 341 *
342 * Removes all SAS PHYs and remote PHYs for a given Scsi_Host. 342 * Removes all SAS PHYs and remote PHYs for a given Scsi_Host.
@@ -577,7 +577,7 @@ static void sas_phy_release(struct device *dev)
577} 577}
578 578
579/** 579/**
580 * sas_phy_alloc -- allocates and initialize a SAS PHY structure 580 * sas_phy_alloc - allocates and initialize a SAS PHY structure
581 * @parent: Parent device 581 * @parent: Parent device
582 * @number: Phy index 582 * @number: Phy index
583 * 583 *
@@ -618,7 +618,7 @@ struct sas_phy *sas_phy_alloc(struct device *parent, int number)
618EXPORT_SYMBOL(sas_phy_alloc); 618EXPORT_SYMBOL(sas_phy_alloc);
619 619
620/** 620/**
621 * sas_phy_add -- add a SAS PHY to the device hierarchy 621 * sas_phy_add - add a SAS PHY to the device hierarchy
622 * @phy: The PHY to be added 622 * @phy: The PHY to be added
623 * 623 *
624 * Publishes a SAS PHY to the rest of the system. 624 * Publishes a SAS PHY to the rest of the system.
@@ -638,7 +638,7 @@ int sas_phy_add(struct sas_phy *phy)
638EXPORT_SYMBOL(sas_phy_add); 638EXPORT_SYMBOL(sas_phy_add);
639 639
640/** 640/**
641 * sas_phy_free -- free a SAS PHY 641 * sas_phy_free - free a SAS PHY
642 * @phy: SAS PHY to free 642 * @phy: SAS PHY to free
643 * 643 *
644 * Frees the specified SAS PHY. 644 * Frees the specified SAS PHY.
@@ -655,7 +655,7 @@ void sas_phy_free(struct sas_phy *phy)
655EXPORT_SYMBOL(sas_phy_free); 655EXPORT_SYMBOL(sas_phy_free);
656 656
657/** 657/**
658 * sas_phy_delete -- remove SAS PHY 658 * sas_phy_delete - remove SAS PHY
659 * @phy: SAS PHY to remove 659 * @phy: SAS PHY to remove
660 * 660 *
661 * Removes the specified SAS PHY. If the SAS PHY has an 661 * Removes the specified SAS PHY. If the SAS PHY has an
@@ -677,7 +677,7 @@ sas_phy_delete(struct sas_phy *phy)
677EXPORT_SYMBOL(sas_phy_delete); 677EXPORT_SYMBOL(sas_phy_delete);
678 678
679/** 679/**
680 * scsi_is_sas_phy -- check if a struct device represents a SAS PHY 680 * scsi_is_sas_phy - check if a struct device represents a SAS PHY
681 * @dev: device to check 681 * @dev: device to check
682 * 682 *
683 * Returns: 683 * Returns:
@@ -843,7 +843,6 @@ EXPORT_SYMBOL(sas_port_alloc_num);
843 843
844/** 844/**
845 * sas_port_add - add a SAS port to the device hierarchy 845 * sas_port_add - add a SAS port to the device hierarchy
846 *
847 * @port: port to be added 846 * @port: port to be added
848 * 847 *
849 * publishes a port to the rest of the system 848 * publishes a port to the rest of the system
@@ -868,7 +867,7 @@ int sas_port_add(struct sas_port *port)
868EXPORT_SYMBOL(sas_port_add); 867EXPORT_SYMBOL(sas_port_add);
869 868
870/** 869/**
871 * sas_port_free -- free a SAS PORT 870 * sas_port_free - free a SAS PORT
872 * @port: SAS PORT to free 871 * @port: SAS PORT to free
873 * 872 *
874 * Frees the specified SAS PORT. 873 * Frees the specified SAS PORT.
@@ -885,7 +884,7 @@ void sas_port_free(struct sas_port *port)
885EXPORT_SYMBOL(sas_port_free); 884EXPORT_SYMBOL(sas_port_free);
886 885
887/** 886/**
888 * sas_port_delete -- remove SAS PORT 887 * sas_port_delete - remove SAS PORT
889 * @port: SAS PORT to remove 888 * @port: SAS PORT to remove
890 * 889 *
891 * Removes the specified SAS PORT. If the SAS PORT has an 890 * Removes the specified SAS PORT. If the SAS PORT has an
@@ -924,7 +923,7 @@ void sas_port_delete(struct sas_port *port)
924EXPORT_SYMBOL(sas_port_delete); 923EXPORT_SYMBOL(sas_port_delete);
925 924
926/** 925/**
927 * scsi_is_sas_port -- check if a struct device represents a SAS port 926 * scsi_is_sas_port - check if a struct device represents a SAS port
928 * @dev: device to check 927 * @dev: device to check
929 * 928 *
930 * Returns: 929 * Returns:
@@ -1309,6 +1308,7 @@ static void sas_rphy_initialize(struct sas_rphy *rphy)
1309 1308
1310/** 1309/**
1311 * sas_end_device_alloc - allocate an rphy for an end device 1310 * sas_end_device_alloc - allocate an rphy for an end device
1311 * @parent: which port
1312 * 1312 *
1313 * Allocates an SAS remote PHY structure, connected to @parent. 1313 * Allocates an SAS remote PHY structure, connected to @parent.
1314 * 1314 *
@@ -1345,6 +1345,8 @@ EXPORT_SYMBOL(sas_end_device_alloc);
1345 1345
1346/** 1346/**
1347 * sas_expander_alloc - allocate an rphy for an end device 1347 * sas_expander_alloc - allocate an rphy for an end device
1348 * @parent: which port
1349 * @type: SAS_EDGE_EXPANDER_DEVICE or SAS_FANOUT_EXPANDER_DEVICE
1348 * 1350 *
1349 * Allocates an SAS remote PHY structure, connected to @parent. 1351 * Allocates an SAS remote PHY structure, connected to @parent.
1350 * 1352 *
@@ -1383,7 +1385,7 @@ struct sas_rphy *sas_expander_alloc(struct sas_port *parent,
1383EXPORT_SYMBOL(sas_expander_alloc); 1385EXPORT_SYMBOL(sas_expander_alloc);
1384 1386
1385/** 1387/**
1386 * sas_rphy_add -- add a SAS remote PHY to the device hierarchy 1388 * sas_rphy_add - add a SAS remote PHY to the device hierarchy
1387 * @rphy: The remote PHY to be added 1389 * @rphy: The remote PHY to be added
1388 * 1390 *
1389 * Publishes a SAS remote PHY to the rest of the system. 1391 * Publishes a SAS remote PHY to the rest of the system.
@@ -1430,8 +1432,8 @@ int sas_rphy_add(struct sas_rphy *rphy)
1430EXPORT_SYMBOL(sas_rphy_add); 1432EXPORT_SYMBOL(sas_rphy_add);
1431 1433
1432/** 1434/**
1433 * sas_rphy_free -- free a SAS remote PHY 1435 * sas_rphy_free - free a SAS remote PHY
1434 * @rphy SAS remote PHY to free 1436 * @rphy: SAS remote PHY to free
1435 * 1437 *
1436 * Frees the specified SAS remote PHY. 1438 * Frees the specified SAS remote PHY.
1437 * 1439 *
@@ -1459,7 +1461,7 @@ void sas_rphy_free(struct sas_rphy *rphy)
1459EXPORT_SYMBOL(sas_rphy_free); 1461EXPORT_SYMBOL(sas_rphy_free);
1460 1462
1461/** 1463/**
1462 * sas_rphy_delete -- remove and free SAS remote PHY 1464 * sas_rphy_delete - remove and free SAS remote PHY
1463 * @rphy: SAS remote PHY to remove and free 1465 * @rphy: SAS remote PHY to remove and free
1464 * 1466 *
1465 * Removes the specified SAS remote PHY and frees it. 1467 * Removes the specified SAS remote PHY and frees it.
@@ -1473,7 +1475,7 @@ sas_rphy_delete(struct sas_rphy *rphy)
1473EXPORT_SYMBOL(sas_rphy_delete); 1475EXPORT_SYMBOL(sas_rphy_delete);
1474 1476
1475/** 1477/**
1476 * sas_rphy_remove -- remove SAS remote PHY 1478 * sas_rphy_remove - remove SAS remote PHY
1477 * @rphy: SAS remote phy to remove 1479 * @rphy: SAS remote phy to remove
1478 * 1480 *
1479 * Removes the specified SAS remote PHY. 1481 * Removes the specified SAS remote PHY.
@@ -1504,7 +1506,7 @@ sas_rphy_remove(struct sas_rphy *rphy)
1504EXPORT_SYMBOL(sas_rphy_remove); 1506EXPORT_SYMBOL(sas_rphy_remove);
1505 1507
1506/** 1508/**
1507 * scsi_is_sas_rphy -- check if a struct device represents a SAS remote PHY 1509 * scsi_is_sas_rphy - check if a struct device represents a SAS remote PHY
1508 * @dev: device to check 1510 * @dev: device to check
1509 * 1511 *
1510 * Returns: 1512 * Returns:
@@ -1604,7 +1606,7 @@ static int sas_user_scan(struct Scsi_Host *shost, uint channel,
1604 SETUP_TEMPLATE(expander_attrs, expander_##field, S_IRUGO, 1) 1606 SETUP_TEMPLATE(expander_attrs, expander_##field, S_IRUGO, 1)
1605 1607
1606/** 1608/**
1607 * sas_attach_transport -- instantiate SAS transport template 1609 * sas_attach_transport - instantiate SAS transport template
1608 * @ft: SAS transport class function template 1610 * @ft: SAS transport class function template
1609 */ 1611 */
1610struct scsi_transport_template * 1612struct scsi_transport_template *
@@ -1715,7 +1717,7 @@ sas_attach_transport(struct sas_function_template *ft)
1715EXPORT_SYMBOL(sas_attach_transport); 1717EXPORT_SYMBOL(sas_attach_transport);
1716 1718
1717/** 1719/**
1718 * sas_release_transport -- release SAS transport template instance 1720 * sas_release_transport - release SAS transport template instance
1719 * @t: transport template instance 1721 * @t: transport template instance
1720 */ 1722 */
1721void sas_release_transport(struct scsi_transport_template *t) 1723void sas_release_transport(struct scsi_transport_template *t)
diff --git a/drivers/scsi/scsi_transport_srp.c b/drivers/scsi/scsi_transport_srp.c
index 65c584db33bd..739e327bba09 100644
--- a/drivers/scsi/scsi_transport_srp.c
+++ b/drivers/scsi/scsi_transport_srp.c
@@ -242,8 +242,8 @@ struct srp_rport *srp_rport_add(struct Scsi_Host *shost,
242EXPORT_SYMBOL_GPL(srp_rport_add); 242EXPORT_SYMBOL_GPL(srp_rport_add);
243 243
244/** 244/**
245 * srp_rport_del -- remove a SRP remote port 245 * srp_rport_del - remove a SRP remote port
246 * @port: SRP remote port to remove 246 * @rport: SRP remote port to remove
247 * 247 *
248 * Removes the specified SRP remote port. 248 * Removes the specified SRP remote port.
249 */ 249 */
@@ -271,7 +271,7 @@ static int do_srp_rport_del(struct device *dev, void *data)
271} 271}
272 272
273/** 273/**
274 * srp_remove_host -- tear down a Scsi_Host's SRP data structures 274 * srp_remove_host - tear down a Scsi_Host's SRP data structures
275 * @shost: Scsi Host that is torn down 275 * @shost: Scsi Host that is torn down
276 * 276 *
277 * Removes all SRP remote ports for a given Scsi_Host. 277 * Removes all SRP remote ports for a given Scsi_Host.
@@ -297,7 +297,7 @@ static int srp_it_nexus_response(struct Scsi_Host *shost, u64 nexus, int result)
297} 297}
298 298
299/** 299/**
300 * srp_attach_transport -- instantiate SRP transport template 300 * srp_attach_transport - instantiate SRP transport template
301 * @ft: SRP transport class function template 301 * @ft: SRP transport class function template
302 */ 302 */
303struct scsi_transport_template * 303struct scsi_transport_template *
@@ -337,7 +337,7 @@ srp_attach_transport(struct srp_function_template *ft)
337EXPORT_SYMBOL_GPL(srp_attach_transport); 337EXPORT_SYMBOL_GPL(srp_attach_transport);
338 338
339/** 339/**
340 * srp_release_transport -- release SRP transport template instance 340 * srp_release_transport - release SRP transport template instance
341 * @t: transport template instance 341 * @t: transport template instance
342 */ 342 */
343void srp_release_transport(struct scsi_transport_template *t) 343void srp_release_transport(struct scsi_transport_template *t)
diff --git a/drivers/scsi/scsicam.c b/drivers/scsi/scsicam.c
index cd68a66c7bb3..3f21bc65e8c6 100644
--- a/drivers/scsi/scsicam.c
+++ b/drivers/scsi/scsicam.c
@@ -24,6 +24,14 @@
24static int setsize(unsigned long capacity, unsigned int *cyls, unsigned int *hds, 24static int setsize(unsigned long capacity, unsigned int *cyls, unsigned int *hds,
25 unsigned int *secs); 25 unsigned int *secs);
26 26
27/**
28 * scsi_bios_ptable - Read PC partition table out of first sector of device.
29 * @dev: from this device
30 *
31 * Description: Reads the first sector from the device and returns %0x42 bytes
32 * starting at offset %0x1be.
33 * Returns: partition table in kmalloc(GFP_KERNEL) memory, or NULL on error.
34 */
27unsigned char *scsi_bios_ptable(struct block_device *dev) 35unsigned char *scsi_bios_ptable(struct block_device *dev)
28{ 36{
29 unsigned char *res = kmalloc(66, GFP_KERNEL); 37 unsigned char *res = kmalloc(66, GFP_KERNEL);
@@ -43,15 +51,17 @@ unsigned char *scsi_bios_ptable(struct block_device *dev)
43} 51}
44EXPORT_SYMBOL(scsi_bios_ptable); 52EXPORT_SYMBOL(scsi_bios_ptable);
45 53
46/* 54/**
47 * Function : int scsicam_bios_param (struct block_device *bdev, ector_t capacity, int *ip) 55 * scsicam_bios_param - Determine geometry of a disk in cylinders/heads/sectors.
56 * @bdev: which device
57 * @capacity: size of the disk in sectors
58 * @ip: return value: ip[0]=heads, ip[1]=sectors, ip[2]=cylinders
48 * 59 *
49 * Purpose : to determine the BIOS mapping used for a drive in a 60 * Description : determine the BIOS mapping/geometry used for a drive in a
50 * SCSI-CAM system, storing the results in ip as required 61 * SCSI-CAM system, storing the results in ip as required
51 * by the HDIO_GETGEO ioctl(). 62 * by the HDIO_GETGEO ioctl().
52 * 63 *
53 * Returns : -1 on failure, 0 on success. 64 * Returns : -1 on failure, 0 on success.
54 *
55 */ 65 */
56 66
57int scsicam_bios_param(struct block_device *bdev, sector_t capacity, int *ip) 67int scsicam_bios_param(struct block_device *bdev, sector_t capacity, int *ip)
@@ -98,15 +108,18 @@ int scsicam_bios_param(struct block_device *bdev, sector_t capacity, int *ip)
98} 108}
99EXPORT_SYMBOL(scsicam_bios_param); 109EXPORT_SYMBOL(scsicam_bios_param);
100 110
101/* 111/**
102 * Function : static int scsi_partsize(unsigned char *buf, unsigned long 112 * scsi_partsize - Parse cylinders/heads/sectors from PC partition table
103 * capacity,unsigned int *cyls, unsigned int *hds, unsigned int *secs); 113 * @buf: partition table, see scsi_bios_ptable()
114 * @capacity: size of the disk in sectors
115 * @cyls: put cylinders here
116 * @hds: put heads here
117 * @secs: put sectors here
104 * 118 *
105 * Purpose : to determine the BIOS mapping used to create the partition 119 * Description: determine the BIOS mapping/geometry used to create the partition
106 * table, storing the results in *cyls, *hds, and *secs 120 * table, storing the results in *cyls, *hds, and *secs
107 * 121 *
108 * Returns : -1 on failure, 0 on success. 122 * Returns: -1 on failure, 0 on success.
109 *
110 */ 123 */
111 124
112int scsi_partsize(unsigned char *buf, unsigned long capacity, 125int scsi_partsize(unsigned char *buf, unsigned long capacity,
@@ -194,7 +207,7 @@ EXPORT_SYMBOL(scsi_partsize);
194 * 207 *
195 * WORKING X3T9.2 208 * WORKING X3T9.2
196 * DRAFT 792D 209 * DRAFT 792D
197 * 210 * see http://www.t10.org/ftp/t10/drafts/cam/cam-r12b.pdf
198 * 211 *
199 * Revision 6 212 * Revision 6
200 * 10-MAR-94 213 * 10-MAR-94