linux/include/scsi
Martin K. Petersen 5db44863b6 [SCSI] sd: Implement support for WRITE SAME
Implement support for WRITE SAME(10) and WRITE SAME(16) in the SCSI disk
driver.

 - We set the default maximum to 0xFFFF because there are several
   devices out there that only support two-byte block counts even with
   WRITE SAME(16). We only enable transfers bigger than 0xFFFF if the
   device explicitly reports MAXIMUM WRITE SAME LENGTH in the BLOCK
   LIMITS VPD.

 - max_write_same_blocks can be overriden per-device basis in sysfs.

 - The UNMAP discovery heuristics remain unchanged but the discard
   limits are tweaked to match the "real" WRITE SAME commands.

 - In the error handling logic we now distinguish between WRITE SAME
   with and without UNMAP set.

The discovery process heuristics are:

 - If the device reports a SCSI level of SPC-3 or greater we'll issue
   READ SUPPORTED OPERATION CODES to find out whether WRITE SAME(16) is
   supported. If that's the case we will use it.

 - If the device supports the block limits VPD and reports a MAXIMUM
   WRITE SAME LENGTH bigger than 0xFFFF we will use WRITE SAME(16).

 - Otherwise we will use WRITE SAME(10) unless the target LBA is beyond
   0xFFFFFFFF or the block count exceeds 0xFFFF.

 - no_write_same is set for ATA, FireWire and USB.

Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
Reviewed-by: Mike Snitzer <snitzer@redhat.com>
Reviewed-by: Jeff Garzik <jgarzik@redhat.com>
Signed-off-by: James Bottomley <JBottomley@Parallels.com>
2012-11-13 22:45:42 -08:00
..
fc [SCSI] libfc: fix lun reset failure bugs in fc_fcp_resp handling of FCP_RSP_INFO 2012-10-07 11:52:55 +01:00
fc_encode.h
fc_frame.h
fcoe_sysfs.h [SCSI] libfcoe: Add fcoe_sysfs 2012-05-23 09:40:09 +01:00
iscsi_if.h [SCSI] qla4xxx: Removed packed attr from struct iscsi_chap_rec 2012-03-27 08:26:35 +01:00
iscsi_proto.h [SCSI] be2iscsi: Get Initiator Name for the iSCSI_Host 2012-04-25 09:29:35 +01:00
Kbuild
libfc.h [SCSI] libfc: update fcp and exch stats 2012-07-20 08:31:48 +01:00
libfcoe.h [SCSI] fcoe: Fix write errors on NPIV ports 2012-10-07 11:49:34 +01:00
libiscsi_tcp.h
libiscsi.h
libsas.h [SCSI] libsas: suspend / resume support 2012-08-24 13:10:23 +04:00
libsrp.h
osd_attributes.h UAPI: (Scripted) Convert #include "..." to #include <path/...> in kernel system headers 2012-10-02 18:01:25 +01:00
osd_initiator.h UAPI: (Scripted) Convert #include "..." to #include <path/...> in kernel system headers 2012-10-02 18:01:25 +01:00
osd_ore.h BUG: headers with BUG/BUG_ON etc. need linux/bug.h 2012-03-04 17:54:34 -05:00
osd_protocol.h
osd_sec.h UAPI: (Scripted) Convert #include "..." to #include <path/...> in kernel system headers 2012-10-02 18:01:25 +01:00
osd_sense.h
osd_types.h
sas_ata.h [SCSI] libsas: suspend / resume support 2012-08-24 13:10:23 +04:00
sas.h isci: kill sci_phy_protocol and sci_request_protocol 2012-05-17 12:27:11 -07:00
scsi_bsg_fc.h [SCSI] fc-transport: Remove unnecessary include 2012-09-24 12:11:03 +04:00
scsi_bsg_iscsi.h
scsi_cmnd.h [SCSI] Shorten the path length of scsi_cmd_to_driver() 2012-10-09 12:04:42 +01:00
scsi_dbg.h
scsi_device.h [SCSI] sd: Implement support for WRITE SAME 2012-11-13 22:45:42 -08:00
scsi_devinfo.h [SCSI] Disable DIF on Hitachi Ultrastar 15K300 2012-09-24 12:11:00 +04:00
scsi_dh.h [SCSI] scsi_dh: add scsi_dh_attached_handler_name 2012-07-20 08:58:42 +01:00
scsi_driver.h
scsi_eh.h
scsi_host.h [SCSI] sd: Ensure we correctly disable devices with unknown protection type 2012-09-24 13:01:24 +04:00
scsi_ioctl.h
scsi_netlink_fc.h
scsi_netlink.h scsi_netlink: Remove dead and buggy code 2012-09-13 16:26:39 -04:00
scsi_tcq.h
scsi_tgt_if.h
scsi_tgt.h
scsi_transport_fc.h [SCSI] fc: add some more FC specific stats to fc_host 2012-07-20 08:31:47 +01:00
scsi_transport_iscsi.h [SCSI] iscsi_transport: Add support to display CHAP list and delete CHAP entry 2012-02-29 16:55:59 -06:00
scsi_transport_sas.h [SCSI] libsas: fix sas_find_local_phy(), take phy references 2012-02-29 13:01:06 -06:00
scsi_transport_spi.h
scsi_transport_srp.h
scsi_transport.h BUG: headers with BUG/BUG_ON etc. need linux/bug.h 2012-03-04 17:54:34 -05:00
scsi.h Merge branch 'master' [vanilla Linus master] into libata-dev.git/upstream 2012-07-25 15:58:48 -04:00
scsicam.h
sg.h
srp.h