linux/drivers/scsi
Ivan Mironov 44759979a4 scsi: sd: Fix cache_type_store()
Changing of caching mode via /sys/devices/.../scsi_disk/.../cache_type may
fail if device responds to MODE SENSE command with DPOFUA flag set, and
then checks this flag to be not set on MODE SELECT command.

In this scenario, when trying to change cache_type, write always fails:

	# echo "none" >cache_type
	bash: echo: write error: Invalid argument

And following appears in dmesg:

	[13007.865745] sd 1:0:1:0: [sda] Sense Key : Illegal Request [current]
	[13007.865753] sd 1:0:1:0: [sda] Add. Sense: Invalid field in parameter list

From SBC-4 r15, 6.5.1 "Mode pages overview", description of DEVICE-SPECIFIC
PARAMETER field in the mode parameter header:
	...
	The write protect (WP) bit for mode data sent with a MODE SELECT
	command shall be ignored by the device server.
	...
	The DPOFUA bit is reserved for mode data sent with a MODE SELECT
	command.
	...

The remaining bits in the DEVICE-SPECIFIC PARAMETER byte are also reserved
and shall be set to zero.

[mkp: shuffled commentary to commit description]

Cc: stable@vger.kernel.org
Signed-off-by: Ivan Mironov <mironov.ivan@gmail.com>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
2019-01-08 21:57:25 -05:00
..
aacraid scsi: flip the default on use_clustering 2018-12-18 23:13:12 -05:00
aic7xxx scsi: flip the default on use_clustering 2018-12-18 23:13:12 -05:00
aic94xx scsi: flip the default on use_clustering 2018-12-18 23:13:12 -05:00
arcmsr scsi: flip the default on use_clustering 2018-12-18 23:13:12 -05:00
arm scsi: remove the use_clustering flag 2018-12-18 23:19:21 -05:00
be2iscsi scsi: introduce a max_segment_size host_template parameters 2018-12-18 23:13:12 -05:00
bfa scsi: bfa: clean up a couple of indentation issues 2018-12-19 21:54:58 -05:00
bnx2fc SCSI misc on 20181224 2018-12-28 14:48:06 -08:00
bnx2i SCSI misc on 20181224 2018-12-28 14:48:06 -08:00
csiostor SCSI misc on 20181224 2018-12-28 14:48:06 -08:00
cxgbi SCSI misc on 20181224 2018-12-28 14:48:06 -08:00
cxlflash SCSI misc on 20181224 2018-12-28 14:48:06 -08:00
device_handler scsi: return blk_status_t from device handler ->prep_fn 2018-11-09 19:17:14 -07:00
dpt
esas2r scsi: flip the default on use_clustering 2018-12-18 23:13:12 -05:00
fcoe scsi: fcoe: remove set but not used variable 'port' 2018-12-20 19:46:20 -05:00
fnic SCSI misc on 20181224 2018-12-28 14:48:06 -08:00
hisi_sas SCSI misc on 20181224 2018-12-28 14:48:06 -08:00
ibmvscsi scsi: flip the default on use_clustering 2018-12-18 23:13:12 -05:00
ibmvscsi_tgt scsi: target: replace fabric_ops.name with fabric_alias 2018-11-28 18:50:59 -05:00
isci scsi: isci: request: mark expected switch fall-through 2018-12-20 20:03:56 -05:00
libfc scsi: libfc: fc_rport: Mark expected switch fall-through 2018-11-28 21:47:30 -05:00
libsas SCSI misc on 20181224 2018-12-28 14:48:06 -08:00
lpfc SCSI misc on 20181224 2018-12-28 14:48:06 -08:00
megaraid scsi: megaraid: fix out-of-bound array accesses 2018-12-20 19:49:23 -05:00
mpt3sas scsi: mpt3sas: mpt3sas_scsih: Mark expected switch fall-through 2018-12-20 19:48:07 -05:00
mvsas scsi: flip the default on use_clustering 2018-12-18 23:13:12 -05:00
osd block: remove __blk_put_request() 2018-11-07 13:42:32 -07:00
pcmcia scsi: remove the use_clustering flag 2018-12-18 23:19:21 -05:00
pm8001 scsi: flip the default on use_clustering 2018-12-18 23:13:12 -05:00
qedf scsi: flip the default on use_clustering 2018-12-18 23:13:12 -05:00
qedi SCSI misc on 20181224 2018-12-28 14:48:06 -08:00
qla2xxx SCSI misc on 20181224 2018-12-28 14:48:06 -08:00
qla4xxx scsi: flip the default on use_clustering 2018-12-18 23:13:12 -05:00
smartpqi SCSI misc on 20181224 2018-12-28 14:48:06 -08:00
snic scsi: flip the default on use_clustering 2018-12-18 23:13:12 -05:00
sym53c8xx_2 scsi: flip the default on use_clustering 2018-12-18 23:13:12 -05:00
ufs SCSI misc on 20181224 2018-12-28 14:48:06 -08:00
.gitignore
3w-9xxx.c scsi: flip the default on use_clustering 2018-12-18 23:13:12 -05:00
3w-9xxx.h
3w-sas.c scsi: flip the default on use_clustering 2018-12-18 23:13:12 -05:00
3w-sas.h
3w-xxxx.c scsi: 3w-xxxx: fix indentation issue, add missing tab 2018-12-19 21:54:07 -05:00
3w-xxxx.h scsi: 3w-xxx: fully convert to the generic DMA API 2018-10-17 21:58:51 -04:00
53c700_d.h_shipped
53c700.c scsi: flip the default on use_clustering 2018-12-18 23:13:12 -05:00
53c700.h scsi: 53c700: Fix spelling of 'NEGOTIATION' 2018-08-30 07:27:22 -04:00
53c700.scr
a100u2w.c scsi: flip the default on use_clustering 2018-12-18 23:13:12 -05:00
a100u2w.h
a2091.c scsi: remove the use_clustering flag 2018-12-18 23:19:21 -05:00
a2091.h
a3000.c scsi: flip the default on use_clustering 2018-12-18 23:13:12 -05:00
a3000.h
a4000t.c
advansys.c scsi: remove the use_clustering flag 2018-12-18 23:19:21 -05:00
aha152x.c scsi: remove the use_clustering flag 2018-12-18 23:19:21 -05:00
aha152x.h
aha1542.c scsi: flip the default on use_clustering 2018-12-18 23:13:12 -05:00
aha1542.h
aha1740.c scsi: flip the default on use_clustering 2018-12-18 23:13:12 -05:00
aha1740.h scsi: core: remove Scsi_Cmnd typedef 2018-06-19 22:02:25 -04:00
am53c974.c scsi: esp_scsi: move dma mapping into the core code 2018-10-15 23:00:38 -04:00
atari_scsi.c scsi: remove the use_clustering flag 2018-12-18 23:19:21 -05:00
atp870u.c scsi: flip the default on use_clustering 2018-12-18 23:13:12 -05:00
atp870u.h
BusLogic.c scsi: flip the default on use_clustering 2018-12-18 23:13:12 -05:00
BusLogic.h
bvme6000_scsi.c
ch.c scsi: core: check for equality of result byte values 2018-06-26 12:27:06 -04:00
constants.c
dc395x.c scsi: remove the use_clustering flag 2018-12-18 23:19:21 -05:00
dc395x.h
dmx3191d.c scsi: remove the use_clustering flag 2018-12-18 23:19:21 -05:00
dpt_i2o.c scsi: flip the default on use_clustering 2018-12-18 23:13:12 -05:00
dpti.h scsi: dpt_i2o: stop using scsi_unregister 2018-03-15 00:25:37 -04:00
esp_scsi.c scsi: flip the default on use_clustering 2018-12-18 23:13:12 -05:00
esp_scsi.h scsi: esp_scsi: De-duplicate PIO routines 2018-10-17 21:38:20 -04:00
FlashPoint.c scsi: FlashPoint: Remove unnecessary parentheses 2018-09-25 20:45:53 -04:00
g_NCR5380.c scsi: remove the use_clustering flag 2018-12-18 23:19:21 -05:00
gdth_ioctl.h
gdth_proc.c scsi: core: remove Scsi_Cmnd typedef 2018-06-19 22:02:25 -04:00
gdth_proc.h
gdth.c scsi: flip the default on use_clustering 2018-12-18 23:13:12 -05:00
gdth.h scsi: core: remove Scsi_Cmnd typedef 2018-06-19 22:02:25 -04:00
gvp11.c scsi: remove the use_clustering flag 2018-12-18 23:19:21 -05:00
gvp11.h
hosts.c SCSI misc on 20181224 2018-12-28 14:48:06 -08:00
hpsa_cmd.h
hpsa.c scsi: flip the default on use_clustering 2018-12-18 23:13:12 -05:00
hpsa.h scsi: hpsa: correct enclosure sas address 2018-07-10 22:25:03 -04:00
hptiop.c scsi: flip the default on use_clustering 2018-12-18 23:13:12 -05:00
hptiop.h
imm.c scsi: flip the default on use_clustering 2018-12-18 23:13:12 -05:00
imm.h
initio.c scsi: flip the default on use_clustering 2018-12-18 23:13:12 -05:00
initio.h
ipr.c scsi: flip the default on use_clustering 2018-12-18 23:13:12 -05:00
ipr.h scsi: ipr: System hung while dlpar adding primary ipr adapter back 2018-09-21 12:35:39 -04:00
ips.c scsi: remove the use_clustering flag 2018-12-18 23:19:21 -05:00
ips.h scsi: ips: properly handle 64-bit DMA 2018-11-06 21:31:28 -05:00
iscsi_boot_sysfs.c
iscsi_tcp.c scsi: iscsi: Capture iscsi debug messages using tracepoints 2018-12-20 20:03:55 -05:00
iscsi_tcp.h
jazz_esp.c scsi: esp_scsi: move dma mapping into the core code 2018-10-15 23:00:38 -04:00
Kconfig Linux 4.20-rc3 2018-11-18 15:46:03 -07:00
lasi700.c
libiscsi_tcp.c scsi: iscsi: Capture iscsi debug messages using tracepoints 2018-12-20 20:03:55 -05:00
libiscsi.c SCSI misc on 20181224 2018-12-28 14:48:06 -08:00
mac53c94.c scsi: mac53c94: remove DISABLE_CLUSTERING 2018-12-18 23:13:12 -05:00
mac53c94.h
mac_esp.c scsi: remove the use_clustering flag 2018-12-18 23:19:21 -05:00
mac_scsi.c scsi: remove the use_clustering flag 2018-12-18 23:19:21 -05:00
Makefile scsi: myrs: Add Mylex RAID controller (SCSI interface) 2018-10-17 21:07:54 -04:00
megaraid.c scsi: flip the default on use_clustering 2018-12-18 23:13:12 -05:00
megaraid.h scsi: core: remove Scsi_Cmnd typedef 2018-06-19 22:02:25 -04:00
mesh.c scsi: mesh: remove DISABLE_CLUSTERING 2018-12-18 23:13:12 -05:00
mesh.h
mvme16x_scsi.c
mvme147.c scsi: flip the default on use_clustering 2018-12-18 23:13:12 -05:00
mvme147.h
mvumi.c scsi: remove the use_clustering flag 2018-12-18 23:19:21 -05:00
mvumi.h
myrb.c SCSI misc on 20181224 2018-12-28 14:48:06 -08:00
myrb.h scsi: myrb: Add Mylex RAID controller (block interface) 2018-10-17 21:06:49 -04:00
myrs.c scsi: myrs: remove the dma_boundary_limit 2018-12-19 21:43:30 -05:00
myrs.h scsi: myrs: Add Mylex RAID controller (SCSI interface) 2018-10-17 21:07:54 -04:00
ncr53c8xx.c scsi: flip the default on use_clustering 2018-12-18 23:13:12 -05:00
ncr53c8xx.h
NCR5380.c scsi: NCR5380: Return false instead of NULL 2018-11-05 22:47:38 -05:00
NCR5380.h scsi: NCR5380: Have NCR5380_select() return a bool 2018-09-28 02:17:51 -04:00
nsp32_debug.c scsi: core: remove Scsi_Cmnd typedef 2018-06-19 22:02:25 -04:00
nsp32_io.h
nsp32.c scsi: remove the use_clustering flag 2018-12-18 23:19:21 -05:00
nsp32.h
osst_detect.h
osst_options.h
osst.c block: remove __blk_put_request() 2018-11-07 13:42:32 -07:00
osst.h
pmcraid.c Remove 'type' argument from access_ok() function 2019-01-03 18:57:57 -08:00
pmcraid.h scsi: pmcraid: Use sgl_alloc_order() and sgl_free_order() 2018-02-13 21:49:15 -05:00
ppa.c scsi: flip the default on use_clustering 2018-12-18 23:13:12 -05:00
ppa.h
ps3rom.c scsi: flip the default on use_clustering 2018-12-18 23:13:12 -05:00
qla1280.c scsi: flip the default on use_clustering 2018-12-18 23:13:12 -05:00
qla1280.h
qlogicfas408.c
qlogicfas408.h
qlogicfas.c scsi: remove the use_clustering flag 2018-12-18 23:19:21 -05:00
qlogicpti.c scsi: flip the default on use_clustering 2018-12-18 23:13:12 -05:00
qlogicpti.h
raid_class.c scsi: raid_attrs: fix unused variable warning 2018-08-30 07:21:04 -04:00
script_asm.pl
scsi_common.c
scsi_debug.c SCSI misc on 20181224 2018-12-28 14:48:06 -08:00
scsi_debugfs.c scsi: devinfo: use const_ilog2 for array indices 2018-04-20 19:14:28 -04:00
scsi_debugfs.h
scsi_devinfo.c scsi: devinfo: BLIST_RETRY_ASC_C1 for Fujitsu ETERNUS 2018-04-20 19:14:36 -04:00
scsi_dh.c scsi: scsi_dh: replace too broad "TP9" string with the exact models 2018-04-18 19:34:08 -04:00
scsi_error.c scsi: Do not rely on blk-mq for double completions 2018-11-26 10:34:26 -07:00
scsi_ioctl.c Remove 'type' argument from access_ok() function 2019-01-03 18:57:57 -08:00
scsi_lib_dma.c
scsi_lib.c SCSI misc on 20181224 2018-12-28 14:48:06 -08:00
scsi_logging.c
scsi_logging.h
scsi_netlink.c
scsi_pm.c block: Move power management code into a new source file 2018-09-26 15:11:28 -06:00
scsi_priv.h scsi: kill off the legacy IO path 2018-11-07 13:42:32 -07:00
scsi_proc.c
scsi_sas_internal.h
scsi_scan.c scsi: kill off the legacy IO path 2018-11-07 13:42:32 -07:00
scsi_sysctl.c
scsi_sysfs.c scsi: kill off the legacy IO path 2018-11-07 13:42:32 -07:00
scsi_trace.c
scsi_transport_api.h
scsi_transport_fc.c bsg: convert to use blk-mq 2018-11-07 13:42:32 -07:00
scsi_transport_iscsi.c SCSI misc on 20181224 2018-12-28 14:48:06 -08:00
scsi_transport_sas.c bsg: provide bsg_remove_queue() helper 2018-11-07 13:42:32 -07:00
scsi_transport_spi.c scsi: core: check for equality of result byte values 2018-06-26 12:27:06 -04:00
scsi_transport_srp.c for-4.18/block-20180603 2018-06-04 07:58:06 -07:00
scsi.c scsi: kill off the legacy IO path 2018-11-07 13:42:32 -07:00
scsi.h scsi: core: remove Scsi_Cmnd typedef 2018-06-19 22:02:25 -04:00
scsicam.c
sd_dif.c block: move dif_prepare/dif_complete functions to block layer 2018-07-30 08:27:02 -06:00
sd_zbc.c scsi: return blk_status_t from scsi_init_io and ->init_command 2018-11-09 19:17:14 -07:00
sd.c scsi: sd: Fix cache_type_store() 2019-01-08 21:57:25 -05:00
sd.h scsi: return blk_status_t from scsi_init_io and ->init_command 2018-11-09 19:17:14 -07:00
sense_codes.h
ses.c treewide: kzalloc() -> kcalloc() 2018-06-12 16:19:22 -07:00
sg.c Remove 'type' argument from access_ok() function 2019-01-03 18:57:57 -08:00
sgiwd93.c scsi: remove the use_clustering flag 2018-12-18 23:19:21 -05:00
sim710.c
sni_53c710.c
sr_ioctl.c block: Switch struct packet_command to use struct scsi_sense_hdr 2018-08-02 15:22:13 -06:00
sr_vendor.c
sr.c scsi: return blk_status_t from scsi_init_io and ->init_command 2018-11-09 19:17:14 -07:00
sr.h
st_options.h
st.c block: remove __blk_put_request() 2018-11-07 13:42:32 -07:00
st.h
stex.c scsi: remove the use_clustering flag 2018-12-18 23:19:21 -05:00
storvsc_drv.c SCSI misc on 20181224 2018-12-28 14:48:06 -08:00
sun3_scsi_vme.c
sun3_scsi.c scsi: remove the use_clustering flag 2018-12-18 23:19:21 -05:00
sun3x_esp.c scsi: esp_scsi: move dma mapping into the core code 2018-10-15 23:00:38 -04:00
sun_esp.c scsi: sun_esp: Use of_node_name_eq for node name comparisons 2018-12-07 21:56:06 -05:00
virtio_scsi.c SCSI misc on 20181224 2018-12-28 14:48:06 -08:00
vmw_pvscsi.c SCSI misc on 20181224 2018-12-28 14:48:06 -08:00
vmw_pvscsi.h
wd33c93.c
wd33c93.h
wd719x.c scsi: flip the default on use_clustering 2018-12-18 23:13:12 -05:00
wd719x.h scsi: wd719x: use per-command private data 2018-11-15 14:27:08 -05:00
xen-scsifront.c scsi: xen-scsifront: remove DISABLE_CLUSTERING 2018-12-18 23:13:12 -05:00
zalon.c
zorro7xx.c
zorro_esp.c scsi: esp_scsi: De-duplicate PIO routines 2018-10-17 21:38:20 -04:00