linux/drivers/scsi
James Bottomley 39c60a0948 [SCSI] sd: fix array cache flushing bug causing performance problems
Some arrays synchronize their full non volatile cache when the sd driver sends
a SYNCHRONIZE CACHE command.  Unfortunately, they can have Terrabytes of this
and we send a SYNCHRONIZE CACHE for every barrier if an array reports it has a
writeback cache.  This leads to massive slowdowns on journalled filesystems.

The fix is to allow userspace to turn off the writeback cache setting as a
temporary measure (i.e. without doing the MODE SELECT to write it back to the
device), so even though the device reported it has a writeback cache, the
user, knowing that the cache is non volatile and all they care about is
filesystem correctness, can turn that bit off in the kernel and avoid the
performance ruinous (and safety irrelevant) SYNCHRONIZE CACHE commands.

The way you do this is add a 'temporary' prefix when performing the usual
cache setting operations, so

echo temporary write through > /sys/class/scsi_disk/<disk>/cache_type

Reported-by: Ric Wheeler <rwheeler@redhat.com>
Cc: <stable@vger.kernel.org>
Signed-off-by: James Bottomley <JBottomley@Parallels.com>
2013-05-02 16:15:54 -07:00
..
aacraid [SCSI] aacraid: Dual firmware image support 2013-04-10 11:55:52 -07:00
aic7xxx scsi: fix various printk and comment typos 2012-09-01 08:24:35 -07:00
aic7xxx_old Fix common misspellings 2011-03-31 11:26:23 -03:00
aic94xx Drivers: scsi: remove __dev* attributes. 2013-01-03 15:57:01 -08:00
arcmsr workqueue: deprecate flush[_delayed]_work_sync() 2012-08-20 14:51:24 -07:00
arm drivers/scsi/arm: remove depends on CONFIG_EXPERIMENTAL 2013-01-21 14:52:45 -08:00
be2iscsi [SCSI] be2iscsi: Bump the driver version to 10.0.467.0 2013-05-02 08:22:19 -07:00
bfa SCSI misc on 20130222 2013-02-28 12:43:43 -08:00
bnx2fc [SCSI] bnx2fc: Bumped version to 1.0.14 2013-05-02 07:32:26 -07:00
bnx2i treewide: Fix typo in printk and comments 2013-04-24 16:43:00 +02:00
csiostor [SCSI] csiostor: off by one error 2013-05-02 07:37:10 -07:00
cxgbi [SCSI] cxgb4i: Remove the scsi host device when removing device 2013-01-30 11:58:06 +11:00
device_handler [SCSI] scsi_dh_alua: Add module parameter to allow failover to non preferred path without STPG 2013-04-11 16:00:31 -07:00
dpt atomic: use <linux/atomic.h> 2011-07-26 16:49:47 -07:00
fcoe Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-next 2013-05-01 14:08:52 -07:00
fnic [SCSI] fnic: Incremented driver version 2013-05-02 07:32:24 -07:00
ibmvscsi [SCSI] ibmvfc: Driver version 1.0.11 2013-05-02 11:58:18 -07:00
isci [SCSI] isci: add CONFIG_PM_SLEEP to suspend/resume functions 2013-04-11 16:01:53 -07:00
libfc libfc, fcoe, bnx2fc: Split fc_disc_init into fc_disc_{init, config} 2013-03-25 16:03:03 -07:00
libsas [SCSI] libsas: fix handling vacant phy in sas_set_ex_phy() 2013-04-06 11:36:54 +01:00
lpfc [SCSI] lpfc 8.3.39: Update lpfc version for 8.3.39 driver release 2013-05-02 13:15:37 -07:00
megaraid [SCSI] megaraid_sas: release lock on error path 2013-05-02 12:08:46 -07:00
mpt2sas [SCSI] mpt2sas: Add support for OEM specific controller 2013-02-24 08:48:15 +00:00
mpt3sas treewide: Fix typos in printk 2013-03-20 16:26:32 +01:00
mvsas [SCSI] mvsas: Use PCI_VENDOR_ID_MARVELL_EXT for 0x1b4b 2013-04-15 14:30:44 -06:00
osd treewide: Fix typos in kernel messages 2013-03-31 17:50:31 +02:00
pcmcia module_param: make bool parameters really bool (drivers & misc) 2012-01-13 09:32:20 +10:30
pm8001 [SCSI] pm80xx: fix for memory region free 2013-02-22 15:44:40 +00:00
qla2xxx [SCSI] qla2xxx: qla2x00_sp_compl can be static. 2013-05-02 15:54:33 -07:00
qla4xxx [SCSI] qla4xxx: Update driver version to 5.03.00-k9 2013-05-02 12:28:59 -07:00
sym53c8xx_2 Drivers: scsi: remove __dev* attributes. 2013-01-03 15:57:01 -08:00
ufs [SCSI] ufs: Separate PCI code into glue driver 2013-02-25 16:56:32 +00:00
.gitignore
3w-9xxx.c new helper: file_inode(file) 2013-02-22 23:31:31 -05:00
3w-9xxx.h Fix common misspellings 2011-03-31 11:26:23 -03:00
3w-sas.c new helper: file_inode(file) 2013-02-22 23:31:31 -05:00
3w-sas.h
3w-xxxx.c new helper: file_inode(file) 2013-02-22 23:31:31 -05:00
3w-xxxx.h Fix common misspellings 2011-03-31 11:26:23 -03:00
53c700.c Remove all #inclusions of asm/system.h 2012-03-28 18:30:03 +01:00
53c700.h
53c700.scr Fix common misspellings 2011-03-31 11:26:23 -03:00
53c700_d.h_shipped Fix common misspellings 2011-03-31 11:26:23 -03:00
BusLogic.c Drivers: scsi: remove __dev* attributes. 2013-01-03 15:57:01 -08:00
BusLogic.h SCSI host lock push-down 2010-11-16 13:33:23 -08:00
FlashPoint.c Fix common misspellings 2011-03-31 11:26:23 -03:00
Kconfig Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/trivial 2013-02-21 17:40:58 -08:00
Makefile [SCSI] mpt3sas: add new driver supporting 12GB SAS 2012-12-01 10:09:17 +00:00
NCR53c406a.c SCSI host lock push-down 2010-11-16 13:33:23 -08:00
NCR5380.c Drivers: scsi: remove __dev* attributes. 2013-01-03 15:57:01 -08:00
NCR5380.h SCSI host lock push-down 2010-11-16 13:33:23 -08:00
NCR_D700.c Drivers: scsi: remove __dev* attributes. 2013-01-03 15:57:01 -08:00
NCR_D700.h
NCR_Q720.c Drivers: scsi: remove __dev* attributes. 2013-01-03 15:57:01 -08:00
NCR_Q720.h
a100u2w.c Drivers: scsi: remove __dev* attributes. 2013-01-03 15:57:01 -08:00
a100u2w.h
a2091.c Drivers: scsi: remove __dev* attributes. 2013-01-03 15:57:01 -08:00
a2091.h
a3000.c scsi: Fix up files implicitly depending on module.h inclusion 2011-10-31 19:31:24 -04:00
a3000.h
a4000t.c
advansys.c Drivers: scsi: remove __dev* attributes. 2013-01-03 15:57:01 -08:00
aha152x.c Drivers: scsi: remove __dev* attributes. 2013-01-03 15:57:01 -08:00
aha152x.h
aha1542.c treewide: Put a space between #include and FILE 2012-06-28 11:44:36 +02:00
aha1542.h SCSI host lock push-down 2010-11-16 13:33:23 -08:00
aha1740.c Drivers: scsi: remove __dev* attributes. 2013-01-03 15:57:01 -08:00
aha1740.h
aic7xxx_old.c Fix common misspellings 2011-03-31 11:26:23 -03:00
atari_NCR5380.c [SCSI] atari_NCR5380: Provide a dummy NCR5380_exit() 2011-06-29 15:11:21 -05:00
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: remove __dev* attributes. 2013-01-03 15:57:01 -08:00
atp870u.h
bvme6000_scsi.c Drivers: scsi: remove __dev* attributes. 2013-01-03 15:57:01 -08:00
ch.c scsi: convert to idr_alloc() 2013-02-27 19:10:18 -08:00
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 [SCSI] dc395x: uninitialized variable in device_alloc() 2013-02-24 09:29:34 +00:00
dc395x.h Fix common misspellings 2011-03-31 11:26:23 -03:00
dmx3191d.c Drivers: scsi: remove __dev* attributes. 2013-01-03 15:57:01 -08:00
dpt_i2o.c new helper: file_inode(file) 2013-02-22 23:31:31 -05:00
dpti.h SCSI host lock push-down 2010-11-16 13:33:23 -08:00
dtc.c Remove all #inclusions of asm/system.h 2012-03-28 18:30:03 +01:00
dtc.h SCSI host lock push-down 2010-11-16 13:33:23 -08:00
eata.c [SCSI] remove cmd->serial_number litter 2011-05-01 10:22:40 -05:00
eata_generic.h
eata_pio.c [SCSI] remove cmd->serial_number litter 2011-05-01 10:22:40 -05:00
eata_pio.h
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 Drivers: scsi: remove __dev* attributes. 2013-01-03 15:57:01 -08:00
fdomain.h
g_NCR5380.c Drivers: scsi: remove __dev* attributes. 2013-01-03 15:57:01 -08:00
g_NCR5380.h SCSI host lock push-down 2010-11-16 13:33:23 -08:00
g_NCR5380_mmio.c
gdth.c [SCSI] gdth: Remove buggy ROM handling 2013-01-29 13:55:06 +11:00
gdth.h gdt: remove unnecessary #defines 2012-09-01 08:43:34 -07:00
gdth_ioctl.h
gdth_proc.c [SCSI] gdth: Add missing call to gdth_ioctl_free 2010-12-31 09:50:09 -06:00
gdth_proc.h
gvp11.c Drivers: scsi: remove __dev* attributes. 2013-01-03 15:57:01 -08:00
gvp11.h
hosts.c driver-core: constify data for class_find_device() 2013-02-06 12:18:56 -08:00
hpsa.c [SCSI] hpsa: check for dma_mapping_error in hpsa_passthru ioctls 2013-02-24 09:36:58 +00:00
hpsa.h [SCSI] hpsa: dial down lockup detection during firmware flash 2012-05-10 09:19:39 +01:00
hpsa_cmd.h [SCSI] hpsa: dial down lockup detection during firmware flash 2012-05-10 09:19:39 +01:00
hptiop.c Drivers: scsi: remove __dev* attributes. 2013-01-03 15:57:01 -08:00
hptiop.h [SCSI] hptiop: Support HighPoint RR4520/RR4522 HBA 2012-11-27 08:59:43 +04:00
imm.c Fix common misspellings 2011-03-31 11:26:23 -03:00
imm.h
in2000.c Remove all #inclusions of asm/system.h 2012-03-28 18:30:03 +01:00
in2000.h SCSI host lock push-down 2010-11-16 13:33:23 -08:00
initio.c Drivers: scsi: remove __dev* attributes. 2013-01-03 15:57:01 -08:00
initio.h Fix common misspellings 2011-03-31 11:26:23 -03:00
ipr.c [SCSI] ipr: SATA DVD probing failed with 64bit adapter 2013-05-02 15:35:15 -07:00
ipr.h [SCSI] ipr: SATA DVD probing failed with 64bit adapter 2013-05-02 15:35:15 -07:00
ips.c Drivers: scsi: remove __dev* attributes. 2013-01-03 15:57:01 -08:00
ips.h Fix common misspellings 2011-03-31 11:26:23 -03:00
iscsi_boot_sysfs.c switch ->is_visible() to returning umode_t 2012-01-03 22:54:55 -05:00
iscsi_tcp.c [SCSI] iscsi_tcp: support PF_MEMALLOC/__GFP_MEMALLOC 2013-04-11 16:55:04 -07:00
iscsi_tcp.h [SCSI] iscsi_tcp: use iscsi_conn_get_addr_param libiscsi function 2011-02-24 12:41:10 -05:00
jazz_esp.c Drivers: scsi: remove __dev* attributes. 2013-01-03 15:57:01 -08:00
lasi700.c Drivers: scsi: remove __dev* attributes. 2013-01-03 15:57:01 -08:00
libiscsi.c [SCSI] libiscsi: avoid unnecessary multiple NULL assignments 2013-04-11 16:54:01 -07:00
libiscsi_tcp.c SCSI updates on 20120319 2012-03-22 12:55:29 -07:00
libsrp.c scsi: Fix up files implicitly depending on module.h inclusion 2011-10-31 19:31:24 -04:00
mac53c94.c Remove all #inclusions of asm/system.h 2012-03-28 18:30:03 +01:00
mac53c94.h
mac_esp.c Drivers: scsi: remove __dev* attributes. 2013-01-03 15:57:01 -08:00
mac_scsi.c Remove all #inclusions of asm/system.h 2012-03-28 18:30:03 +01:00
mac_scsi.h
megaraid.c Drivers: scsi: remove __dev* attributes. 2013-01-03 15:57:01 -08:00
megaraid.h megaraid: remove unnecessary #defines 2012-09-01 08:42:43 -07:00
mesh.c Remove all #inclusions of asm/system.h 2012-03-28 18:30:03 +01:00
mesh.h
mvme16x_scsi.c Drivers: scsi: remove __dev* attributes. 2013-01-03 15:57:01 -08:00
mvme147.c
mvme147.h
mvumi.c [SCSI] mvumi: Use PCI_VENDOR_ID_MARVELL_EXT for 0x1b4b 2013-04-15 14:30:44 -06:00
mvumi.h [SCSI] mvumi: Use PCI_VENDOR_ID_MARVELL_EXT for 0x1b4b 2013-04-15 14:30:44 -06:00
ncr53c8xx.c Remove all #inclusions of asm/system.h 2012-03-28 18:30:03 +01:00
ncr53c8xx.h
nsp32.c Drivers: scsi: remove __dev* attributes. 2013-01-03 15:57:01 -08:00
nsp32.h Fix common misspellings 2011-03-31 11:26:23 -03:00
nsp32_debug.c treewide: fix a few typos in comments 2011-05-10 10:16:21 +02:00
nsp32_io.h
osst.c Remove all #inclusions of asm/system.h 2012-03-28 18:30:03 +01:00
osst.h Fix common misspellings 2011-03-31 11:26:23 -03:00
osst_detect.h
osst_options.h
pas16.c Remove all #inclusions of asm/system.h 2012-03-28 18:30:03 +01:00
pas16.h SCSI host lock push-down 2010-11-16 13:33:23 -08:00
pmcraid.c Drivers: scsi: remove __dev* attributes. 2013-01-03 15:57:01 -08:00
pmcraid.h scsi: Fix typo in pmcraid.h 2012-02-21 11:40:37 +01:00
ppa.c SCSI host lock push-down 2010-11-16 13:33:23 -08:00
ppa.h
ps3rom.c Drivers: scsi: remove __dev* attributes. 2013-01-03 15:57:01 -08:00
qla1280.c Drivers: scsi: remove __dev* attributes. 2013-01-03 15:57:01 -08:00
qla1280.h
qlogicfas.c Drivers: scsi: remove __dev* attributes. 2013-01-03 15:57:01 -08:00
qlogicfas408.c SCSI host lock push-down 2010-11-16 13:33:23 -08:00
qlogicfas408.h SCSI host lock push-down 2010-11-16 13:33:23 -08:00
qlogicpti.c Drivers: scsi: remove __dev* attributes. 2013-01-03 15:57:01 -08:00
qlogicpti.h
raid_class.c
script_asm.pl
scsi.c [SCSI] Add a report opcode helper 2012-11-13 21:11:31 -08:00
scsi.h
scsi_debug.c [SCSI] scsi_debug: fix logical block provisioning support 2013-05-02 15:45:56 -07: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.c ACPI / glue: Add .match() callback to struct acpi_bus_type 2013-03-04 14:23:40 +01:00
scsi_lib_dma.c scsi: Add export.h for EXPORT_SYMBOL/THIS_MODULE as required 2011-10-31 19:31:23 -04:00
scsi_logging.h
scsi_module.c
scsi_netlink.c scsi: replace obsolete NLMSG_* with type safe nlmsg_* 2013-03-28 14:27:24 -04:00
scsi_pm.c [SCSI] scsi_pm: use callbacks from dev_pm_ops for scsi devices 2012-11-30 09:26:48 +00:00
scsi_priv.h [SCSI] async: introduce 'async_domain' type 2012-07-20 09:05:54 +01:00
scsi_proc.c scsi: fix scsi_proc new kernel-doc warning 2011-05-28 23:12:11 -07:00
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] prevent stack buffer overflow in host_reset 2012-11-30 09:08:16 +00:00
scsi_tgt_if.c scsi: Add export.h for EXPORT_SYMBOL/THIS_MODULE as required 2011-10-31 19:31:23 -04:00
scsi_tgt_lib.c [SCSI] esp, scsi_tgt_lib, fcoe: use list_move() instead of list_del()/list_add() combination 2011-05-01 10:20:10 -05:00
scsi_tgt_priv.h
scsi_trace.c [SCSI] scsi_trace: Decode UNMAP bit in WRITE SAME(10) 2011-05-24 12:38:36 -04:00
scsi_transport_api.h
scsi_transport_fc.c scsi: replace obsolete NLMSG_* with type safe nlmsg_* 2013-03-28 14:27:24 -04:00
scsi_transport_fc_internal.h
scsi_transport_iscsi.c [SCSI] scsi_transport_iscsi: fix error return code in iscsi_transport_init() 2013-05-02 15:31:50 -07:00
scsi_transport_sas.c [SCSI] scsi_transport_sas: add 12GB definitions for mpt3sas 2012-12-01 10:08:41 +00:00
scsi_transport_spi.c [SCSI] scsi_transport_spi: fix for unbalanced reference counting 2012-05-10 09:06:12 +01:00
scsi_transport_srp.c IB/srp: Allow SRP disconnect through sysfs 2012-11-30 17:40:33 -08:00
scsi_transport_srp_internal.h
scsi_typedefs.h
scsicam.c fs: move code out of buffer.c 2012-01-03 22:54:07 -05:00
sd.c [SCSI] sd: fix array cache flushing bug causing performance problems 2013-05-02 16:15:54 -07:00
sd.h [SCSI] sd: fix array cache flushing bug causing performance problems 2013-05-02 16:15:54 -07:00
sd_dif.c [SCSI] sd_dif: problem with verify of type 1 protection information (PI) 2013-05-02 15:37:03 -07:00
ses.c [SCSI] ses: requesting a fault indication 2011-06-29 12:14:25 -05:00
sg.c scsi: convert to idr_alloc() 2013-02-27 19:10:18 -08:00
sgiwd93.c Drivers: scsi: remove __dev* attributes. 2013-01-03 15:57:01 -08:00
sim710.c Drivers: scsi: remove __dev* attributes. 2013-01-03 15:57:01 -08:00
sni_53c710.c Drivers: scsi: remove __dev* attributes. 2013-01-03 15:57:01 -08:00
sr.c [libata] scsi: no poll when ODD is powered off 2013-01-25 15:36:43 -05:00
sr.h [SCSI] sr: check_events() ignore GET_EVENT when TUR says otherwise 2011-07-21 14:15:58 -07:00
sr_ioctl.c scsi: Fix up files implicitly depending on module.h inclusion 2011-10-31 19:31:24 -04:00
sr_vendor.c
st.c [SCSI] st: Take additional queue ref in st_probe 2013-04-06 11:14:20 +01:00
st.h [SCSI] st: raise device limit 2012-09-14 17:59:29 +01:00
st_options.h
stex.c Drivers: scsi: remove __dev* attributes. 2013-01-03 15:57:01 -08:00
storvsc_drv.c SCSI for-linus on 20130301 2013-03-02 11:42:16 -08:00
sun3_NCR5380.c [SCSI] sun3: Remove commented out merge_contiguous_buffers 2011-06-29 15:15:05 -05:00
sun3_scsi.c Remove all #inclusions of asm/system.h 2012-03-28 18:30:03 +01:00
sun3_scsi.h SCSI host lock push-down 2010-11-16 13:33:23 -08:00
sun3_scsi_vme.c Remove all #inclusions of asm/system.h 2012-03-28 18:30:03 +01:00
sun3x_esp.c Drivers: scsi: remove __dev* attributes. 2013-01-03 15:57:01 -08:00
sun_esp.c Drivers: scsi: remove __dev* attributes. 2013-01-03 15:57:01 -08:00
sym53c416.c Drivers: scsi: remove __dev* attributes. 2013-01-03 15:57:01 -08:00
sym53c416.h SCSI host lock push-down 2010-11-16 13:33:23 -08:00
t128.c Remove all #inclusions of asm/system.h 2012-03-28 18:30:03 +01:00
t128.h SCSI host lock push-down 2010-11-16 13:33:23 -08:00
tmscsim.c Drivers: scsi: remove __dev* attributes. 2013-01-03 15:57:01 -08:00
tmscsim.h
u14-34f.c Remove all #inclusions of asm/system.h 2012-03-28 18:30:03 +01:00
ultrastor.c Remove all #inclusions of asm/system.h 2012-03-28 18:30:03 +01:00
ultrastor.h SCSI host lock push-down 2010-11-16 13:33:23 -08:00
virtio_scsi.c Drivers: scsi: remove __dev* attributes. 2013-01-03 15:57:01 -08:00
vmw_pvscsi.c Drivers: scsi: remove __dev* attributes. 2013-01-03 15:57:01 -08:00
vmw_pvscsi.h [SCSI] vmw_pvscsi: Try setting host->max_id as suggested by the device. 2012-03-27 08:26:36 +01:00
wd33c93.c Merge branch 'trivial' of git://git.kernel.org/pub/scm/linux/kernel/git/mmarek/kbuild-2.6 2011-05-26 13:19:00 -07:00
wd33c93.h SCSI host lock push-down 2010-11-16 13:33:23 -08:00
wd7000.c Remove all #inclusions of asm/system.h 2012-03-28 18:30:03 +01:00
zalon.c Drivers: scsi: remove __dev* attributes. 2013-01-03 15:57:01 -08:00
zorro7xx.c Drivers: scsi: remove __dev* attributes. 2013-01-03 15:57:01 -08:00