linux/drivers
Darrick J. Wong 253b92ecbd libata: fix double-completion on error
A curious thing happens, however, when ata_qc_new_init fails to get
an ata_queued_cmd:

First, ata_qc_new_init handles the failure like this:
    cmd->result = (DID_OK << 16) | (QUEUE_FULL << 1);
    done(cmd);

Then, we return to ata_scsi_translate and do this:
    err_mem:
        cmd->result = (DID_ERROR << 16);
        done(cmd);

It appears to me that first we set a status code indicating that we're
ok but the device queue is full and finish the command,  but then
we blow away that status code and replace it with an error flag and
finish the command a second time!  That does not seem to be desirable
behavior since we merely want the I/O to wait until a command slot
frees up, not send errors up the block layer.

In the err_mem case, we should simply exit out of ata_scsi_translate
instead.

Signed-off-by: Darrick J. Wong <djwong@us.ibm.com>
Signed-off-by: Jeff Garzik <jeff@garzik.org>
2006-11-14 09:55:41 -05:00
..
acorn IRQ: Maintain regs pointer globally rather than passing to IRQ handlers 2006-10-05 15:10:12 +01:00
acpi [PATCH] acpi memory hotplug: remove strange add_memory fail message 2006-10-20 10:26:38 -07:00
amba
ata libata: fix double-completion on error 2006-11-14 09:55:41 -05:00
atm [ATM] horizon: read_bia() needs to be __devinit 2006-10-24 16:16:39 -07:00
base [PATCH] move SYS_HYPERVISOR inside the Generic Driver menu 2006-10-28 11:30:55 -07:00
block [PATCH] cciss: fix printk format warning 2006-10-28 11:30:53 -07:00
bluetooth [PATCH] lockdep: annotate DECLARE_WAIT_QUEUE_HEAD 2006-10-30 12:08:40 -08:00
cdrom [PATCH] cdrom: add endianness annotations 2006-10-10 16:15:33 -07:00
char [PATCH] IPMI: Fix more && typos 2006-11-13 07:40:42 -08:00
clocksource [PATCH] clocksource: acpi_pm: add another greylist chipset 2006-10-21 13:35:05 -07:00
connector
cpufreq [PATCH] cpufreq: make the transition_notifier chain use SRCU 2006-10-04 07:55:30 -07:00
crypto
dio
dma [PATCH] drivers/dma trivial annotations 2006-10-10 15:37:21 -07:00
edac [PATCH] edac_mc: fix error handling 2006-11-03 12:27:57 -08:00
eisa [PATCH] EISA: handle sysfs errors 2006-10-11 11:14:25 -07:00
fc4 [SCSI] fc4: Conversion to struct scsi_cmnd in fc4 2006-10-25 15:12:45 -07:00
firmware [PATCH] i386: Disable nmi watchdog on all ThinkPads 2006-10-21 18:37:02 +02:00
hwmon hwmon: Fix debug messages in w83781d 2006-10-18 13:03:09 -07:00
i2c [ARM] Fix i2c-pxa slave mode support 2006-10-28 22:30:17 +01:00
ide [PATCH] ide-cd: only set rq->errors SCSI style for block pc requests 2006-11-13 09:47:00 -08:00
ieee1394 [ETH1394]: Fix unaligned accesses. 2006-10-30 15:24:38 -08:00
infiniband Merge branch 'for-linus' of master.kernel.org:/pub/scm/linux/kernel/git/roland/infiniband 2006-11-13 09:52:04 -08:00
input sh: Cleanup board header directories. 2006-10-19 16:30:32 +09:00
isdn [PATCH] isdn/gigaset: convert warning message 2006-11-06 01:46:23 -08:00
leds [PATCH] drivers/led: handle sysfs errors 2006-10-17 08:18:46 -07:00
macintosh [POWERPC] Fix windfarm platform device usage 2006-10-10 13:56:13 +10:00
mca [PATCH] drivers/mca: handle sysfs errors 2006-10-11 11:14:25 -07:00
md [PATCH] md: do not freeze md threads for suspend 2006-11-08 18:29:24 -08:00
media [dvb saa7134] Fix missing 'break' for avermedia card case 2006-11-13 09:50:11 -08:00
message [PATCH] lockdep: annotate DECLARE_WAIT_QUEUE_HEAD 2006-10-30 12:08:40 -08:00
mfd IRQ: Maintain regs pointer globally rather than passing to IRQ handlers 2006-10-05 15:10:12 +01:00
misc [PATCH] Fix for LKDTM MEM_SWAPOUT crashpoint 2006-11-06 01:46:23 -08:00
mmc MMC: Do not set unsupported bits in OCR response 2006-11-09 07:23:54 +01:00
mtd [PATCH] silence 'make xmldocs' warning by adding missing description of 'raw' in nand_base.c:1485 2006-10-27 15:34:51 -07:00
net Merge branch 'upstream-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless-2.6 into upstream-fixes 2006-11-10 11:10:51 -05:00
nubus
oprofile
parisc Build fixes for struct pt_regs removal 2006-10-06 20:47:23 -06:00
parport [PATCH] sparc32 pt_regs fixes 2006-10-08 12:32:35 -07:00
pci [PATCH] pci: don't try to remove sysfs files before they are setup. 2006-11-13 07:40:42 -08:00
pcmcia Merge master.kernel.org:/home/rmk/linux-2.6-arm 2006-10-29 17:25:48 -08:00
pnp Fix DMA resource allocation in ACPIPnP 2006-10-18 11:36:11 -07:00
rapidio Fix several typos in drivers/ 2006-10-03 22:31:37 +02:00
rtc [PATCH] rtc: fix printk of 64-bit res on 32-bit platform 2006-10-17 08:18:47 -07:00
s390 [S390] cio: Make ccw_device_register() static. 2006-10-27 12:39:33 +02:00
sbus [SPARC]: Fix bus_id[] string overflow. 2006-10-27 01:03:31 -07:00
scsi [PATCH] SCSI core: always store >= 36 bytes of INQUIRY data 2006-11-13 07:40:43 -08:00
serial [POWERPC] CPM_UART: Fix non-console initialisation 2006-11-10 21:35:36 +11:00
sh
sn [PATCH] ioc4: Enable build on non-SN2 2006-10-17 08:18:42 -07:00
spi [PATCH] spi section fix 2006-11-03 12:27:58 -08:00
tc [MIPS] Fix DECserial build error by IRQ hander change 2006-10-08 02:38:28 +01:00
telephony [PATCH] drivers/telephony/ixj: fix an array overrun 2006-11-08 18:29:23 -08:00
usb USB: use MII hooks only if CONFIG_MII is enabled 2006-11-03 11:57:19 -08:00
video [PATCH] Patch for nvidia divide by zero error for 7600 pci-express card 2006-11-13 07:40:42 -08:00
w1 [PATCH] w1 kconfig fix 2006-10-17 08:18:44 -07:00
zorro
Kconfig [PATCH] ioc4: Enable build on non-SN2 2006-10-17 08:18:42 -07:00
Makefile