diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2011-03-17 20:54:40 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2011-03-17 20:54:40 -0400 |
commit | c55d267de274d308927b60c3e740c1a826832317 (patch) | |
tree | 21b53a8c725d9f9650f60d94b349459d5b8dae10 /Documentation/scsi/scsi_mid_low_api.txt | |
parent | 61ef46fd45c3c62dc7c880a45dd2aa841b9af8fb (diff) | |
parent | bc898c97f7ba24def788d9f80786cf028a197122 (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.txt | 14 |
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 | ||
1354 | It is recommended that a LLD set 'resid' on data transfers from a SCSI | ||
1355 | target device (e.g. READs). It is especially important that 'resid' is set | ||
1356 | when 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 | ||
1358 | data has been received then the safest approach is to indicate no bytes have | ||
1359 | been received. For example: to indicate that no valid data has been received | ||
1360 | a LLD might use these helpers: | ||
1361 | scsi_set_resid(SCpnt, scsi_bufflen(SCpnt)); | ||
1362 | where 'SCpnt' is a pointer to a scsi_cmnd object. To indicate only three 512 | ||
1363 | bytes blocks has been received 'resid' could be set like this: | ||
1364 | scsi_set_resid(SCpnt, scsi_bufflen(SCpnt) - (3 * 512)); | ||
1365 | |||
1354 | The scsi_cmnd structure is defined in include/scsi/scsi_cmnd.h | 1366 | The scsi_cmnd structure is defined in include/scsi/scsi_cmnd.h |
1355 | 1367 | ||
1356 | 1368 | ||