remarkable-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
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
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
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
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
53c700.c
53c700.h
53c700.scr
53c700_d.h_shipped
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
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
aha1740.c Drivers: scsi: remove __dev* attributes. 2013-01-03 15:57:01 -08:00
aha1740.h
aic7xxx_old.c
atari_NCR5380.c
atari_scsi.c
atari_scsi.h
atp870u.c Drivers: scsi: remove __dev* attributes. 2013-01-03 15:57:01 -08:00
atp870u.h
BusLogic.c Drivers: scsi: remove __dev* attributes. 2013-01-03 15:57:01 -08:00
BusLogic.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
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
dtc.c
dtc.h
eata.c
eata_generic.h
eata_pio.c
eata_pio.h
esp_scsi.c
esp_scsi.h
fdomain.c Drivers: scsi: remove __dev* attributes. 2013-01-03 15:57:01 -08:00
fdomain.h
FlashPoint.c
g_NCR5380.c Drivers: scsi: remove __dev* attributes. 2013-01-03 15:57:01 -08:00
g_NCR5380.h
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
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
imm.h
in2000.c
in2000.h
initio.c Drivers: scsi: remove __dev* attributes. 2013-01-03 15:57:01 -08:00
initio.h
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
iscsi_boot_sysfs.c
iscsi_tcp.c [SCSI] iscsi_tcp: support PF_MEMALLOC/__GFP_MEMALLOC 2013-04-11 16:55:04 -07:00
iscsi_tcp.h
jazz_esp.c Drivers: scsi: remove __dev* attributes. 2013-01-03 15:57:01 -08: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
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
libsrp.c
mac53c94.c
mac53c94.h
mac_esp.c Drivers: scsi: remove __dev* attributes. 2013-01-03 15:57:01 -08:00
mac_scsi.c
mac_scsi.h
Makefile [SCSI] mpt3sas: add new driver supporting 12GB SAS 2012-12-01 10:09:17 +00:00
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
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
ncr53c8xx.h
NCR53c406a.c
NCR5380.c Drivers: scsi: remove __dev* attributes. 2013-01-03 15:57:01 -08:00
NCR5380.h
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
nsp32.c Drivers: scsi: remove __dev* attributes. 2013-01-03 15:57:01 -08:00
nsp32.h
nsp32_debug.c
nsp32_io.h
osst.c
osst.h
osst_detect.h
osst_options.h
pas16.c
pas16.h
pmcraid.c Drivers: scsi: remove __dev* attributes. 2013-01-03 15:57:01 -08:00
pmcraid.h
ppa.c
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
qlogicfas408.h
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_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_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_tgt_lib.c
scsi_tgt_priv.h
scsi_trace.c
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
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
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
sr_ioctl.c
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
sun3_scsi.c
sun3_scsi.h
sun3_scsi_vme.c
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
t128.c
t128.h
tmscsim.c Drivers: scsi: remove __dev* attributes. 2013-01-03 15:57:01 -08:00
tmscsim.h
u14-34f.c
ultrastor.c
ultrastor.h
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
wd33c93.c
wd33c93.h
wd7000.c
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