aboutsummaryrefslogtreecommitdiffstats
path: root/Documentation/scsi/scsi_mid_low_api.txt
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@linux-foundation.org>2011-03-17 20:54:40 -0400
committerLinus Torvalds <torvalds@linux-foundation.org>2011-03-17 20:54:40 -0400
commitc55d267de274d308927b60c3e740c1a826832317 (patch)
tree21b53a8c725d9f9650f60d94b349459d5b8dae10 /Documentation/scsi/scsi_mid_low_api.txt
parent61ef46fd45c3c62dc7c880a45dd2aa841b9af8fb (diff)
parentbc898c97f7ba24def788d9f80786cf028a197122 (diff)
Merge git://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi-misc-2.6
* git://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi-misc-2.6: (170 commits) [SCSI] scsi_dh_rdac: Add MD36xxf into device list [SCSI] scsi_debug: add consecutive medium errors [SCSI] libsas: fix ata list corruption issue [SCSI] hpsa: export resettable host attribute [SCSI] hpsa: move device attributes to avoid forward declarations [SCSI] scsi_debug: Logical Block Provisioning (SBC3r26) [SCSI] sd: Logical Block Provisioning update [SCSI] Include protection operation in SCSI command trace [SCSI] hpsa: fix incorrect PCI IDs and add two new ones (2nd try) [SCSI] target: Fix volume size misreporting for volumes > 2TB [SCSI] bnx2fc: Broadcom FCoE offload driver [SCSI] fcoe: fix broken fcoe interface reset [SCSI] fcoe: precedence bug in fcoe_filter_frames() [SCSI] libfcoe: Remove stale fcoe-netdev entries [SCSI] libfcoe: Move FCOE_MTU definition from fcoe.h to libfcoe.h [SCSI] libfc: introduce __fc_fill_fc_hdr that accepts fc_hdr as an argument [SCSI] fcoe, libfc: initialize EM anchors list and then update npiv EMs [SCSI] Revert "[SCSI] libfc: fix exchange being deleted when the abort itself is timed out" [SCSI] libfc: Fixing a memory leak when destroying an interface [SCSI] megaraid_sas: Version and Changelog update ... Fix up trivial conflicts due to whitespace differences in drivers/scsi/libsas/{sas_ata.c,sas_scsi_host.c}
Diffstat (limited to 'Documentation/scsi/scsi_mid_low_api.txt')
-rw-r--r--Documentation/scsi/scsi_mid_low_api.txt14
1 files changed, 13 insertions, 1 deletions
diff --git a/Documentation/scsi/scsi_mid_low_api.txt b/Documentation/scsi/scsi_mid_low_api.txt
index df322c10346..5f17d29c59b 100644
--- a/Documentation/scsi/scsi_mid_low_api.txt
+++ b/Documentation/scsi/scsi_mid_low_api.txt
@@ -1343,7 +1343,7 @@ Members of interest:
1343 underruns (overruns should be rare). If possible an LLD 1343 underruns (overruns should be rare). If possible an LLD
1344 should set 'resid' prior to invoking 'done'. The most 1344 should set 'resid' prior to invoking 'done'. The most
1345 interesting case is data transfers from a SCSI target 1345 interesting case is data transfers from a SCSI target
1346 device device (i.e. READs) that underrun. 1346 device (e.g. READs) that underrun.
1347 underflow - LLD should place (DID_ERROR << 16) in 'result' if 1347 underflow - LLD should place (DID_ERROR << 16) in 'result' if
1348 actual number of bytes transferred is less than this 1348 actual number of bytes transferred is less than this
1349 figure. Not many LLDs implement this check and some that 1349 figure. Not many LLDs implement this check and some that
@@ -1351,6 +1351,18 @@ Members of interest:
1351 report a DID_ERROR. Better for an LLD to implement 1351 report a DID_ERROR. Better for an LLD to implement
1352 'resid'. 1352 'resid'.
1353 1353
1354It is recommended that a LLD set 'resid' on data transfers from a SCSI
1355target device (e.g. READs). It is especially important that 'resid' is set
1356when such data transfers have sense keys of MEDIUM ERROR and HARDWARE ERROR
1357(and possibly RECOVERED ERROR). In these cases if a LLD is in doubt how much
1358data has been received then the safest approach is to indicate no bytes have
1359been received. For example: to indicate that no valid data has been received
1360a LLD might use these helpers:
1361 scsi_set_resid(SCpnt, scsi_bufflen(SCpnt));
1362where 'SCpnt' is a pointer to a scsi_cmnd object. To indicate only three 512
1363bytes blocks has been received 'resid' could be set like this:
1364 scsi_set_resid(SCpnt, scsi_bufflen(SCpnt) - (3 * 512));
1365
1354The scsi_cmnd structure is defined in include/scsi/scsi_cmnd.h 1366The scsi_cmnd structure is defined in include/scsi/scsi_cmnd.h
1355 1367
1356 1368