1
linux/drivers/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
..
aacraid sections: fix section conflicts in drivers/scsi 2012-10-06 03:04:44 +09:00
aic7xxx scsi: fix various printk and comment typos 2012-09-01 08:24:35 -07:00
aic7xxx_old
aic94xx sections: fix section conflicts in drivers/scsi 2012-10-06 03:04:44 +09:00
arcmsr workqueue: deprecate flush[_delayed]_work_sync() 2012-08-20 14:51:24 -07:00
arm Merge branch 'testing/driver-warnings' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc into fixes 2012-10-19 15:40:18 -07:00
be2iscsi [SCSI] be2iscsi: Bump the driver version. 2012-09-14 17:59:28 +01:00
bfa [SCSI] bfa: Update the driver version to 3.1.2.1 2012-10-07 11:29:16 +01:00
bnx2fc SCSI for-linus on 20121002 2012-10-02 19:01:32 -07:00
bnx2i [SCSI] bnx2i: Fixed NULL ptr deference for 1G bnx2 Linux iSCSI offload 2012-09-17 13:40:32 +01:00
cxgbi SCSI misc on 20120724 2012-07-24 18:11:22 -07:00
device_handler [SCSI] scsi_dh_alua: Enable STPG for unavailable ports 2012-09-24 12:21:56 +04:00
dpt
fcoe [SCSI] fcoe: Fix write errors on NPIV ports 2012-10-07 11:49:34 +01:00
fnic
ibmvscsi [SCSI] ibmvscsi: Fix host config length field overflow 2012-09-24 12:11:09 +04:00
isci [SCSI] isci: copy fis 0x34 response into proper buffer 2012-11-13 13:45:14 +00:00
libfc [SCSI] libfc: fix lun reset failure bugs in fc_fcp_resp handling of FCP_RSP_INFO 2012-10-07 11:52:55 +01:00
libsas [SCSI] libsas, ipr: cleanup ata_host flags initialization via ata_host_init 2012-08-24 13:10:24 +04:00
lpfc [SCSI] lpfc 8.3.35: Update lpfc version for 8.3.35 driver release 2012-10-08 12:16:11 +01:00
megaraid [SCSI] megaraid_sas: Version, Changelog, Copyright update 2012-10-09 11:21:48 +01:00
mpt2sas SCSI for-linus on 20121002 2012-10-02 19:01:32 -07:00
mvsas [SCSI] mvsas: Fix oops when ata commond timeout. 2012-09-14 14:48:32 +01:00
osd
pcmcia
pm8001 [SCSI] libsas: trim sas_task of slow path infrastructure 2012-07-20 08:58:54 +01:00
qla2xxx qla2xxx: Update target lookup session tables when a target session changes 2012-10-26 12:29:46 -07:00
qla4xxx SCSI for-linus on 20121002 2012-10-02 19:01:32 -07:00
sym53c8xx_2 scsi: make pci error handlers const 2012-09-07 16:35:00 -06:00
ufs [SCSI] ufs: fix incorrect return value about SUCCESS and FAILED 2012-07-20 08:59:02 +01:00
.gitignore
3w-9xxx.c
3w-9xxx.h
3w-sas.c
3w-sas.h
3w-xxxx.c
3w-xxxx.h
53c700_d.h_shipped
53c700.c
53c700.h
53c700.scr
a100u2w.c
a100u2w.h
a2091.c
a2091.h
a3000.c
a3000.h
a4000t.c
advansys.c
aha152x.c scsi: aha152x: Fix sparse warning and make printing pointer address more portable. 2012-07-20 10:19:25 +02:00
aha152x.h
aha1542.c treewide: Put a space between #include and FILE 2012-06-28 11:44:36 +02:00
aha1542.h
aha1740.c
aha1740.h
aic7xxx_old.c
atari_NCR5380.c
atari_scsi.c scsi/atari: Make more functions static 2012-04-22 20:16:49 +02:00
atari_scsi.h scsi/atari: Make more functions static 2012-04-22 20:16:49 +02:00
atp870u.c drivers/scsi/atp870u.c: fix bad use of udelay 2012-10-06 03:04:37 +09:00
atp870u.h
BusLogic.c
BusLogic.h
bvme6000_scsi.c
ch.c
constants.c [SCSI] add DID_TARGET_FAILURE and DID_NEXUS_FAILURE to hostbyte_table in constants.c 2012-09-14 11:58:53 +01:00
dc395x.c
dc395x.h
dmx3191d.c
dpt_i2o.c
dpti.h
dtc.c
dtc.h
eata_generic.h
eata_pio.c
eata_pio.h
eata.c
esp_scsi.c scsi: Use vsprintf extention %pf with builtin_return_address 2012-04-05 17:09:40 -07:00
esp_scsi.h
fdomain.c
fdomain.h
FlashPoint.c
g_NCR5380_mmio.c
g_NCR5380.c
g_NCR5380.h
gdth_ioctl.h
gdth_proc.c
gdth_proc.h
gdth.c
gdth.h gdt: remove unnecessary #defines 2012-09-01 08:43:34 -07:00
gvp11.c
gvp11.h
hosts.c [SCSI] Fix device removal NULL pointer dereference 2012-07-20 08:58:40 +01:00
hpsa_cmd.h [SCSI] hpsa: dial down lockup detection during firmware flash 2012-05-10 09:19:39 +01:00
hpsa.c SCSI for-linus on 20121002 2012-10-02 19:01:32 -07:00
hpsa.h [SCSI] hpsa: dial down lockup detection during firmware flash 2012-05-10 09:19:39 +01:00
hptiop.c [SCSI] hptiop: fix RR312x in hosts with >12GB 2012-07-20 08:58:30 +01:00
hptiop.h [SCSI] hptiop: fix RR312x in hosts with >12GB 2012-07-20 08:58:30 +01:00
imm.c
imm.h
in2000.c
in2000.h
initio.c
initio.h
ipr.c Merge branch 'next' of git://git.kernel.org/pub/scm/linux/kernel/git/benh/powerpc 2012-10-06 03:16:12 +09:00
ipr.h [SCSI] ipr: Driver version 2.5.4 2012-08-24 13:10:28 +04:00
ips.c
ips.h
iscsi_boot_sysfs.c
iscsi_tcp.c [SCSI] iscsi_tcp: increase max_lun to ~0, don't care 2012-09-24 12:10:55 +04:00
iscsi_tcp.h
jazz_esp.c
Kconfig [SCSI] aha152x: Allow use on 64bit systems 2012-07-20 08:59:04 +01:00
lasi700.c
libiscsi_tcp.c
libiscsi.c
libsrp.c
mac53c94.c
mac53c94.h
mac_esp.c
mac_scsi.c
mac_scsi.h
Makefile [SCSI] Remove scsi_wait_scan module 2012-07-20 08:58:13 +01:00
megaraid.c Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/trivial 2012-10-01 09:06:36 -07:00
megaraid.h megaraid: remove unnecessary #defines 2012-09-01 08:42:43 -07:00
mesh.c
mesh.h
mvme16x_scsi.c
mvme147.c
mvme147.h
mvumi.c [SCSI] mvumi: Add support for Marvell SAS/SATA RAID-on-Chip(ROC) 88RC9580 2012-10-07 11:34:36 +01:00
mvumi.h [SCSI] mvumi: Add support for Marvell SAS/SATA RAID-on-Chip(ROC) 88RC9580 2012-10-07 11:34:36 +01:00
ncr53c8xx.c
ncr53c8xx.h
NCR53c406a.c
NCR5380.c
NCR5380.h
NCR_D700.c
NCR_D700.h
NCR_Q720.c
NCR_Q720.h
nsp32_debug.c
nsp32_io.h
nsp32.c
nsp32.h
osst_detect.h
osst_options.h
osst.c
osst.h
pas16.c
pas16.h
pmcraid.c workqueue: deprecate flush[_delayed]_work_sync() 2012-08-20 14:51:24 -07:00
pmcraid.h
ppa.c
ppa.h
ps3rom.c
qla1280.c qla1280: Remove redundant NULL check before release_firmware() call 2012-04-30 13:25:43 +02:00
qla1280.h
qlogicfas408.c
qlogicfas408.h
qlogicfas.c
qlogicpti.c qlogicpti: Fix build warning. 2012-10-28 13:26:37 -07:00
qlogicpti.h
raid_class.c
script_asm.pl
scsi_debug.c [SCSI] scsi_debug: Fix off-by-one bug when unmapping region 2012-10-09 12:23:11 +01:00
scsi_devinfo.c [SCSI] Disable DIF on Hitachi Ultrastar 15K300 2012-09-24 12:11:00 +04:00
scsi_error.c [SCSI] Shorten the path length of scsi_cmd_to_driver() 2012-10-09 12:04:42 +01:00
scsi_ioctl.c
scsi_lib_dma.c
scsi_lib.c [SCSI] sd: Implement support for WRITE SAME 2012-11-13 22:45:42 -08:00
scsi_logging.h
scsi_module.c
scsi_netlink.c scsi_netlink: Remove dead and buggy code 2012-09-13 16:26:39 -04:00
scsi_pm.c [SCSI] scsi_pm: set device runtime state before parent suspended 2012-07-20 08:58:55 +01:00
scsi_priv.h [SCSI] async: introduce 'async_domain' type 2012-07-20 09:05:54 +01:00
scsi_proc.c
scsi_sas_internal.h
scsi_scan.c Merge SCSI misc branch into isci-for-3.6 tag 2012-10-02 08:55:12 +01:00
scsi_sysctl.c
scsi_sysfs.c [SCSI] scsi_remove_target: fix softlockup regression on hot remove 2012-09-24 12:17:49 +04:00
scsi_tgt_if.c
scsi_tgt_lib.c
scsi_tgt_priv.h
scsi_trace.c
scsi_transport_api.h
scsi_transport_fc_internal.h
scsi_transport_fc.c Merge branch 'for-3.6/core' of git://git.kernel.dk/linux-block 2012-08-01 09:02:41 -07:00
scsi_transport_iscsi.c netlink: Rename pid to portid to avoid confusion 2012-09-10 15:30:41 -04:00
scsi_transport_sas.c
scsi_transport_spi.c [SCSI] scsi_transport_spi: fix for unbalanced reference counting 2012-05-10 09:06:12 +01:00
scsi_transport_srp_internal.h
scsi_transport_srp.c
scsi_typedefs.h
scsi.c [SCSI] Add a report opcode helper 2012-11-13 21:11:31 -08:00
scsi.h
scsicam.c
sd_dif.c [SCSI] sd: Avoid remapping bad reference tags 2012-09-24 12:10:59 +04:00
sd.c [SCSI] sd: Implement support for WRITE SAME 2012-11-13 22:45:42 -08:00
sd.h [SCSI] sd: Implement support for WRITE SAME 2012-11-13 22:45:42 -08:00
ses.c
sg.c mm: kill vma flag VM_RESERVED and mm->reserved_vm counter 2012-10-09 16:22:19 +09:00
sgiwd93.c
sim710.c scsi: delete the MCA specific drivers and driver code 2012-05-17 19:03:54 -04:00
sni_53c710.c
sr_ioctl.c
sr_vendor.c
sr.c
sr.h
st_options.h
st.c [SCSI] st: remove st_mutex 2012-09-24 13:07:02 +04:00
st.h [SCSI] st: raise device limit 2012-09-14 17:59:29 +01:00
stex.c
storvsc_drv.c [SCSI] storvsc: Account for in-transit packets in the RESET path 2012-10-09 12:28:58 +01:00
sun3_NCR5380.c
sun3_scsi_vme.c
sun3_scsi.c
sun3_scsi.h
sun3x_esp.c
sun_esp.c
sym53c416.c
sym53c416.h
t128.c
t128.h
tmscsim.c
tmscsim.h
u14-34f.c
ultrastor.c
ultrastor.h
virtio_scsi.c [SCSI] virtio-scsi: support online resizing of disks 2012-10-09 11:24:47 +01:00
vmw_pvscsi.c scsi: fix various printk and comment typos 2012-09-01 08:24:35 -07:00
vmw_pvscsi.h
wd33c93.c
wd33c93.h
wd7000.c
zalon.c
zorro7xx.c