linux/drivers/scsi
Stefan Richter d2886ea368 scsi: sd: optionally set power condition in START STOP UNIT
Adds a new scsi_device flag, start_stop_pwr_cond:  If enabled, the sd
driver will not send plain START STOP UNIT commands but ones with the
power condition field set to 3 (standby) or 1 (active) respectively.

Some FireWire disk firmwares do not stop the motor if power condition is
zero.  Or worse, they become unresponsive after a START STOP UNIT with
power condition = 0 and start = 0.

http://lkml.org/lkml/2008/4/29/704

This patch only adds the necessary code to sd_mod but doesn't activate
it.  Follow-up patches to the FireWire drivers will add detection of
affected devices and enable the code for them.

I did not add power condition values to scsi_error.c::scsi_eh_try_stu()
for now.  The three firmwares which suffer from above mentioned problems
do not need START STOP UNIT in the error handler, and they are not
adversely affected by START STOP UNIT with power condition = 0 and start
= 1 (like scsi_eh_try_stu() sends it if scsi_device.allow_restart is
enabled).

Signed-off-by: Stefan Richter <stefanr@s5r6.in-berlin.de>
Tested-by: Tino Keitel <tino.keitel@gmx.de>
2008-07-14 13:00:17 +02:00
..
aacraid [SCSI] aacraid: Add Power Management support 2008-05-02 13:06:44 -05:00
aic7xxx scsi: fix integer as NULL pointer warnings 2008-04-28 17:31:13 -07:00
aic7xxx_old
aic94xx [SCSI] aic94xx: fix section mismatch 2008-05-02 13:26:46 -05:00
arcmsr SCSI: convert struct class_device to struct device 2008-04-19 19:10:33 -07:00
arm [SCSI] Remove random noop unchecked_isa_dma users 2008-04-07 12:15:40 -05:00
dpt [SCSI] dpt_i2o: Add PROC_IA64 define 2008-06-15 11:12:20 -05:00
ibmvscsi [SCSI] ibmvscsi: Non SCSI error status fixup 2008-05-27 11:10:57 -05:00
libsas Merge git://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi-misc-2.6 2008-04-18 11:25:31 -07:00
lpfc [SCSI] qla2xxx, lfpc: Rename 'state' attribute to 'link_state' 2008-04-22 15:16:30 -05:00
megaraid [SCSI] megaraid_sas: fix suspend/resume sections 2008-05-02 13:07:56 -05:00
pcmcia SCSI: convert struct class_device to struct device 2008-04-19 19:10:33 -07:00
qla2xxx [SCSI] qla2xxx: Update version number to 8.02.01-k4. 2008-05-30 12:21:12 -05:00
qla4xxx [SCSI] qla4xxx: fix scsi command completion, lun reset and target reset code 2008-04-07 12:19:00 -05:00
sym53c8xx_2 scsi: fix integer as NULL pointer warnings 2008-04-28 17:31:13 -07:00
.gitignore [SCSI] 53c7xx: fix removal fallout 2008-01-11 18:22:30 -06:00
3w-9xxx.c scsi: fix integer as NULL pointer warning 2008-05-23 08:11:07 -07:00
3w-9xxx.h [SCSI] 3w-9xxx: add support for 9690SA 2007-07-21 08:57:40 -05:00
3w-xxxx.c SCSI: convert struct class_device to struct device 2008-04-19 19:10:33 -07:00
3w-xxxx.h
53c700_d.h_shipped
53c700.c [SCSI] Let scsi_cmnd->cmnd use request->cmd buffer 2008-05-02 10:18:22 -05:00
53c700.h [SCSI] 53c700: m68k support for the 53c700 SCSI core 2007-06-17 16:15:56 -05:00
53c700.scr
a100u2w.c [SCSI] Let scsi_cmnd->cmnd use request->cmd buffer 2008-05-02 10:18:22 -05:00
a100u2w.h [SCSI] a100u2w: Convert into Linux style 2007-06-17 16:09:29 -05:00
a2091.c [SCSI] wd33c93: fix up cut and paste error 2008-04-07 12:19:07 -05:00
a2091.h
a3000.c [SCSI] WD33C93: let platform stub override no_sync/fast/dma_mode 2008-04-07 12:19:01 -05:00
a3000.h
a4000t.c [SCSI] kmalloc + memset conversion to kzalloc 2007-10-12 14:41:00 -04:00
advansys.c [SCSI] advansys: Fix bug in AdvLoadMicrocode 2008-03-07 10:05:43 -06:00
aha152x.c scsi: fix integer as NULL pointer warning 2008-05-23 08:11:07 -07:00
aha152x.h [SCSI] aha152x: fix debug mode symbol conflict 2007-08-04 09:11:06 -05:00
aha1542.c [SCSI] aha1542: minor irq handler cleanups 2008-04-27 12:19:55 -05:00
aha1542.h
aha1740.c [SCSI] remove use_sg_chaining 2008-01-30 13:14:02 -06:00
aha1740.h
aic7xxx_old.c Remove pointless casts from void pointers 2008-02-06 10:41:01 -08:00
atari_dma_emul.c
atari_NCR5380.c [SCSI] atari_NCR5380, sun3_NCR5380: operator precedence fix 2008-01-11 18:28:57 -06:00
atari_scsi.c [SCSI] NCR5380: Fix bugs and canonicalize irq handler usage 2007-11-25 12:19:26 +02:00
atari_scsi.h m68k: Atari SCSI driver compile fixes 2007-05-04 17:59:05 -07:00
atp870u.c scsi: fix integer as NULL pointer warning 2008-05-23 08:11:07 -07:00
atp870u.h
BusLogic.c [SCSI] BusLogic: make FlashPoint support x86-32 only 2008-04-07 12:15:44 -05:00
BusLogic.h [SCSI] BusLogic: make FlashPoint support x86-32 only 2008-04-07 12:15:44 -05:00
bvme6000_scsi.c [SCSI] kmalloc + memset conversion to kzalloc 2007-10-12 14:41:00 -04:00
ch.c SCSI: fix race in device_create 2008-05-20 13:31:56 -07:00
constants.c [SCSI] add support for variable length extended commands 2008-05-02 11:33:25 -05:00
dc395x.c [SCSI] Remove random noop unchecked_isa_dma users 2008-04-07 12:15:40 -05:00
dc395x.h
dmx3191d.c
dpt_i2o.c drivers/scsi/dpt_i2o.c: fix build on alpha 2008-05-08 10:46:56 -07:00
dpti.h drivers/scsi/dpt_i2o.c: fix build on alpha 2008-05-08 10:46:56 -07:00
dtc.c [SCSI] NCR5380: Fix bugs and canonicalize irq handler usage 2007-11-25 12:19:26 +02:00
dtc.h
eata_generic.h
eata_pio.c [SCSI] Remove random noop unchecked_isa_dma users 2008-04-07 12:15:40 -05:00
eata_pio.h
eata.c [SCSI] aha152x, eata, u14-34f: minor irq handler cleanups 2008-04-25 09:52:30 -05:00
esp_scsi.c [SCSI] esp: tidy up target reference counting 2008-06-25 12:36:13 -05:00
esp_scsi.h [SCSI] esp: tidy up target reference counting 2008-06-25 12:36:13 -05:00
fd_mcs.c [SCSI] fd_mcs: convert to accessors and !use_sg cleanup 2008-01-11 18:22:35 -06:00
fdomain.c scsi: fix integer as NULL pointer warnings 2008-04-28 17:31:13 -07:00
fdomain.h
FlashPoint.c [SCSI] FlashPoint: fix off-by-one errors 2008-04-27 12:19:55 -05:00
g_NCR5380_mmio.c
g_NCR5380.c [SCSI] NCR5380: Fix bugs and canonicalize irq handler usage 2007-11-25 12:19:26 +02:00
g_NCR5380.h
gdth_ioctl.h
gdth_proc.c [SCSI] gdth: don't call pci_free_consistent under spinlock 2008-02-18 09:02:25 -06:00
gdth_proc.h [SCSI] gdth: clean up host private data 2007-10-12 14:55:46 -04:00
gdth.c [SCSI] gdth: fix Error: Driver 'gdth' is already registered, aborting... 2008-05-08 10:01:53 -05:00
gdth.h [SCSI] gdth: PCI probe cleanups, prep for PCI hotplug API conversion 2008-04-07 12:15:36 -05:00
gvp11.c [SCSI] wd33c93: fix up cut and paste error 2008-04-07 12:19:07 -05:00
gvp11.h
hosts.c [SCSI] scsi_host regression: fix scsi host leak 2008-06-15 11:09:43 -05:00
hptiop.c scsi: fix integer as NULL pointer warning 2008-05-23 08:11:07 -07:00
hptiop.h [SCSI] hptiop: add more adapter models and other fixes 2008-01-11 18:28:06 -06:00
ibmmca.c [SCSI] remove use_sg_chaining 2008-01-30 13:14:02 -06:00
ide-scsi.c ide: add ide_pad_transfer() helper 2008-04-28 23:44:41 +02:00
imm.c [SCSI] imm: convert to accessors and !use_sg cleanup 2008-01-11 18:22:41 -06:00
imm.h
in2000.c [SCSI] in2000: convert to accessors and !use_sg cleanup 2008-01-11 18:22:36 -06:00
in2000.h
initio.c [SCSI] Let scsi_cmnd->cmnd use request->cmd buffer 2008-05-02 10:18:22 -05:00
initio.h [SCSI] initio: Convert into a real Linux driver and update to modern style 2007-05-22 11:08:56 -05:00
ipr.c [SCSI] ipr: Fix HDIO_GET_IDENTITY oops for SATA devices 2008-07-11 13:45:48 -05:00
ipr.h [SCSI] ipr: Use PCI-E reset API for new ipr adapter 2007-05-08 11:54:40 -05:00
ips.c [SCSI] ips: remove spurious cpu_to_leX on outX statements 2008-04-07 12:19:11 -05:00
ips.h [SCSI] ips: trim trailing whitespace 2008-01-11 18:27:59 -06:00
iscsi_tcp.c [SCSI] iscsi: bidi support for iscsi_tcp 2008-04-18 11:53:24 -05:00
iscsi_tcp.h [SCSI] iscsi_tcp: enable sg chaining 2008-01-11 18:28:48 -06:00
jazz_esp.c [SCSI] jazz_esp, sgiwd93, sni_53c710, sun3x_esp: fix platform driver hotplug/coldplug 2008-04-27 12:33:04 -05:00
Kconfig CONFIG_SCSI_MAC_ESP needs CONFIG_SCSI_SPI_ATTRS 2008-05-05 12:38:50 -07:00
lasi700.c some kmalloc/memset ->kzalloc (tree wide) 2007-07-19 10:04:50 -07:00
libiscsi.c [SCSI] libiscsi regression in 2.6.25: fix setting of recv timer 2008-05-08 20:38:57 -05:00
libsrp.c [SCSI] implement scsi_data_buffer 2008-01-30 13:03:40 -06:00
mac53c94.c [SCSI] remove use_sg_chaining 2008-01-30 13:14:02 -06:00
mac53c94.h
mac_esp.c MODULE_LICENSE expects "GPL v2", not "GPLv2" 2008-05-21 16:56:00 -07:00
mac_scsi.c [SCSI] Remove random noop unchecked_isa_dma users 2008-04-07 12:15:40 -05:00
mac_scsi.h
Makefile [SCSI] m68k: new mac_esp scsi driver 2008-04-27 12:19:57 -05:00
megaraid.c proc: remove proc_root from drivers 2008-04-29 08:06:18 -07:00
megaraid.h [SCSI] megaraid: fix warnings when CONFIG_PROC_FS=n 2007-05-08 11:15:08 -05:00
mesh.c PM: Introduce PM_EVENT_HIBERNATE callback state 2008-02-23 10:40:04 -08:00
mesh.h
mvme16x_scsi.c [SCSI] kmalloc + memset conversion to kzalloc 2007-10-12 14:41:00 -04:00
mvme147.c [SCSI] wd33c93: fix up cut and paste error 2008-04-07 12:19:07 -05:00
mvme147.h
mvsas.c drivers/scsi/mvsas.c: fix printk warnings 2008-05-01 08:04:03 -07:00
ncr53c8xx.c drivers/scsi/ncr53c8xx.c: fix warning 2008-05-01 08:04:02 -07:00
ncr53c8xx.h [SCSI] ncr53c8xx: Call scsi_host_put in release 2007-10-12 14:51:18 -04:00
NCR53c406a.c [SCSI] remove use_sg_chaining 2008-01-30 13:14:02 -06:00
NCR5380.c [SCSI] NCR5380: fix section mismatch 2008-01-23 13:44:31 -06:00
NCR5380.h [SCSI] NCR5380: Use scsi_eh API for REQUEST_SENSE invocation 2007-10-12 14:55:07 -04:00
NCR_D700.c [SCSI] kmalloc + memset conversion to kzalloc 2007-10-12 14:41:00 -04:00
NCR_D700.h
NCR_Q720.c some kmalloc/memset ->kzalloc (tree wide) 2007-07-19 10:04:50 -07:00
NCR_Q720.h
nsp32_debug.c
nsp32_io.h
nsp32.c [SCSI] remove use_sg_chaining 2008-01-30 13:14:02 -06:00
nsp32.h define global BIT macro 2007-10-19 11:53:42 -07:00
osst_detect.h
osst_options.h
osst.c SCSI: fix race in device_create 2008-05-20 13:31:56 -07:00
osst.h [SCSI] osst: Use mutex instead of semaphore 2007-10-12 14:50:55 -04:00
pas16.c [SCSI] NCR5380: Fix bugs and canonicalize irq handler usage 2007-11-25 12:19:26 +02:00
pas16.h
ppa.c [SCSI] ppa: convert to accessors and !use_sg cleanup 2008-01-11 18:22:41 -06:00
ppa.h
ps3rom.c [SCSI] ps3rom: use scsi_build_sense_buffer 2008-04-07 12:19:02 -05:00
ql1040_fw.h
ql1280_fw.h
ql12160_fw.h
qla1280.c scsi: fix integer as NULL pointer warning 2008-05-23 08:11:07 -07:00
qla1280.h [SCSI] qla1280: eliminate wasted space in request and response ring 2007-10-23 12:35:35 -04:00
qlogicfas408.c [SG] Update drivers to use sg helpers 2007-10-22 21:19:53 +02:00
qlogicfas408.h
qlogicfas.c [SCSI] remove use_sg_chaining 2008-01-30 13:14:02 -06:00
qlogicpti_asm.c
qlogicpti.c [SCSI] qlogicpt: section fixes 2008-02-23 09:07:32 -06:00
qlogicpti.h [SCSI] qlogicpti: Add a slave_configure method 2007-10-12 14:52:38 -04:00
raid_class.c SCSI: convert struct class_device to struct device 2008-04-19 19:10:33 -07:00
script_asm.pl
scsi_debug.c block: make queue flags non-atomic 2008-04-29 14:48:33 +02:00
scsi_devinfo.c proc: switch /proc/scsi/device_info to seq_file interface 2008-04-29 08:06:19 -07:00
scsi_error.c Merge git://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi-misc-2.6 2008-05-02 13:52:35 -07:00
scsi_ioctl.c [SCSI] sd,sr: add early detection of medium not present 2008-01-11 18:22:50 -06:00
scsi_lib_dma.c [SCSI] don't build scsi_dma_{map,unmap} for !HAS_DMA 2007-07-14 19:28:10 -05:00
scsi_lib.c [SCSI] erase invalid data returned by device 2008-07-06 11:33:08 -05:00
scsi_logging.h
scsi_module.c
scsi_netlink.c [NETNS]: Consolidate kernel netlink socket destruction. 2008-01-28 15:08:07 -08:00
scsi_priv.h [SCSI] use default attributes for scsi_host 2008-04-22 15:16:31 -05:00
scsi_proc.c scsi: use non-racy method for proc entries creation 2008-04-29 08:06:21 -07:00
scsi_sas_internal.h SCSI: convert struct class_device to struct device 2008-04-19 19:10:33 -07:00
scsi_scan.c Remove duplicated unlikely() in IS_ERR() 2008-04-29 08:06:25 -07:00
scsi_sysctl.c [SCSI] small cleanups 2007-07-18 11:16:32 -05:00
scsi_sysfs.c [SCSI] fix intermittent oops in scsi_bus_uevent 2008-05-23 16:17:06 -05:00
scsi_tgt_if.c [SCSI] tgt: convert to use the data buffer accessors 2008-01-11 18:22:30 -06:00
scsi_tgt_lib.c [SCSI] Let scsi_cmnd->cmnd use request->cmd buffer 2008-05-02 10:18:22 -05:00
scsi_tgt_priv.h [SCSI] tgt: add I_T nexus support 2007-10-12 14:37:50 -04:00
scsi_transport_api.h
scsi_transport_fc_internal.h [SCSI] fc_transport: add target driver support 2007-10-12 14:46:58 -04:00
scsi_transport_fc.c [SCSI] scsi_transport_fc: fc_user_scan correction 2008-04-27 12:19:56 -05:00
scsi_transport_iscsi.c SCSI: convert struct class_device to struct device 2008-04-19 19:10:33 -07:00
scsi_transport_sas.c block: make queue flags non-atomic 2008-04-29 14:48:33 +02:00
scsi_transport_spi.c [SCSI] scsi_transport_spi: include sysfs.h 2008-04-27 12:19:55 -05:00
scsi_transport_srp_internal.h [SCSI] scsi_transport_srp: remove tgt dependencies 2007-10-12 14:38:09 -04:00
scsi_transport_srp.c SCSI: convert struct class_device to struct device 2008-04-19 19:10:33 -07:00
scsi_typedefs.h
scsi_wait_scan.c
scsi.c [SCSI] add support for variable length extended commands 2008-05-02 11:33:25 -05:00
scsi.h
scsicam.c [SCSI] Add Documentation and integrate into docbook build 2008-01-11 18:22:40 -06:00
sd.c scsi: sd: optionally set power condition in START STOP UNIT 2008-07-14 13:00:17 +02:00
ses.c [SCSI] ses: Fix timeout 2008-06-24 12:02:27 -05:00
sg.c SCSI: fix race in device_create 2008-05-20 13:31:56 -07:00
sgiwd93.c [SCSI] jazz_esp, sgiwd93, sni_53c710, sun3x_esp: fix platform driver hotplug/coldplug 2008-04-27 12:33:04 -05:00
sim710.c Merge master.kernel.org:/pub/scm/linux/kernel/git/jejb/scsi-misc-2.6 2007-07-22 11:36:49 -07:00
sni_53c710.c [SCSI] jazz_esp, sgiwd93, sni_53c710, sun3x_esp: fix platform driver hotplug/coldplug 2008-04-27 12:33:04 -05:00
sr_ioctl.c [SCSI] sr: fix test unit ready responses 2008-02-07 18:02:44 -06:00
sr_vendor.c
sr.c [SCSI] sr: fix corrupt CD data after media change and delay 2008-06-10 10:31:23 -05:00
sr.h [SCSI] sr: fix test unit ready responses 2008-02-07 18:02:44 -06:00
st_options.h [SCSI] st: add option to use SILI in variable block reads 2008-04-07 12:15:39 -05:00
st.c SCSI: fix race in device_create 2008-05-20 13:31:56 -07:00
st.h [SCSI] st: add option to use SILI in variable block reads 2008-04-07 12:15:39 -05:00
stex.c [SCSI] stex: use scsi_build_sense_buffer 2008-04-07 12:19:02 -05:00
sun3_NCR5380.c [SCSI] atari_NCR5380, sun3_NCR5380: operator precedence fix 2008-01-11 18:28:57 -06:00
sun3_scsi_vme.c [SCSI] sun3_scsi_vme: add MODULE_LICENSE 2008-04-16 09:28:11 -05:00
sun3_scsi.c [SCSI] NCR5380: Fix bugs and canonicalize irq handler usage 2007-11-25 12:19:26 +02:00
sun3_scsi.h
sun3x_esp.c [SCSI] jazz_esp, sgiwd93, sni_53c710, sun3x_esp: fix platform driver hotplug/coldplug 2008-04-27 12:33:04 -05:00
sun_esp.c [SCSI] esp: use shost_priv 2007-05-31 17:30:04 -04:00
sym53c416.c [SCSI] sym53c416: fix module parameters 2008-02-12 15:24:58 -06:00
sym53c416.h
t128.c [SCSI] NCR5380: Fix bugs and canonicalize irq handler usage 2007-11-25 12:19:26 +02:00
t128.h
tmscsim.c [SCSI] replace sizeof sense_buffer with SCSI_SENSE_BUFFERSIZE 2008-01-23 11:29:27 -06:00
tmscsim.h [SCSI] tmscsim: Further clean-up of the driver 2007-07-14 18:56:33 -05:00
u14-34f.c [SCSI] u14-34f: Fix 32bit only problem 2008-05-02 13:18:06 -05:00
ultrastor.c scsi: fix integer as NULL pointer warnings 2008-04-28 17:31:13 -07:00
ultrastor.h
wd33c93.c [SCSI] WD33C93: let platform stub override no_sync/fast/dma_mode 2008-04-07 12:19:01 -05:00
wd33c93.h Spelling fix: explicitly 2007-10-19 23:22:55 +02:00
wd7000.c [SCSI] remove use_sg_chaining 2008-01-30 13:14:02 -06:00
zalon.c
zorro7xx.c m68k: zorro7xx needs <asm/amigahw.h> 2007-11-29 09:24:52 -08:00