linux/drivers/ide
Linus Torvalds 6c3c3158a8 IDE: Make taskfile interface more robust wrt unexpected end-of-command
Now that we handle all the special commands using REQ_TYPE_ATA_TASKFILE
rather than using the old REQ_TYPE_ATA_CMD model, we need to also
emulate the lack of full taskfile data that comes with the old command
model (ie when commands are generated with the HDIO_DRIVE_CMD ioctl
rather than using the HDIO_DRIVE_TASK[FILE] ioctls).

In particular, this means that we should handle command completion the
more relaxed way that the old drive_cmd_intr() code did.  It allows
commands to finish early even if they don't use up all the data that we
thought we had for them.

This fixes a regression seen by Anders Eriksson where some SMART
commands sent by smartd would cause a boot-time system hang on his
machine because the IDE command handling code didn't realize that the
command had completed.

Tested-by: Anders Eriksson <aeriksson@fastmail.fm>
Cc: Jens Axboe <jens.axboe@oracle.com>
Cc: Ingo Molnar <mingo@elte.hu>
Acked-by: Bartlomiej Zolnierkiewicz <bzolnier@gmail.com>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
2008-03-18 21:26:24 -07:00
..
arm bast-ide: build fix 2008-02-11 00:32:14 +01:00
cris ide: remove ide_setup_ports() 2008-02-06 02:57:50 +01:00
h8300 ide: add struct ide_port_info instances to legacy host drivers 2008-02-02 19:56:31 +01:00
legacy qd65xx: remove commented out code 2008-02-26 21:50:36 +01:00
mips ide: add IDE_HFLAG_NO_{IO32_BIT,UNMASK_IRQS} host flags 2008-02-02 19:56:40 +01:00
pci ide: skip probing port if "hdx=noprobe" was used for both devices on it 2008-02-26 21:50:34 +01:00
ppc PM: Introduce PM_EVENT_HIBERNATE callback state 2008-02-23 10:40:04 -08:00
ide-acpi.c drivers/ide/ide-acpi.c: fix uninitialized var warning 2008-02-06 02:57:49 +01:00
ide-cd_ioctl.c ide-cd: mark REQ_TYPE_ATA_PC write requests with REQ_RW flag 2008-03-07 21:53:49 +01:00
ide-cd_verbose.c ide-cd: move VERBOSE_IDE_CD_ERRORS code to ide-cd_verbose.c 2008-02-01 23:09:23 +01:00
ide-cd.c ide-cd: fix CD/DVD burning 2008-02-26 21:50:35 +01:00
ide-cd.h ide: delete filenames/versions from comments 2008-02-01 23:09:33 +01:00
ide-disk.c ide-disk: add missing printk() KERN_* levels 2008-02-26 21:50:36 +01:00
ide-dma.c ide: fix enabling DMA on it821x in "smart" mode 2008-03-07 21:53:49 +01:00
ide-floppy.c ide: add ide_read_error() inline helper 2008-02-06 02:57:51 +01:00
ide-generic.c falconide: locking bugfix 2008-02-19 01:41:25 +01:00
ide-io.c ide-disk: fix flush requests (take 2) 2008-02-11 00:32:14 +01:00
ide-iops.c ide: insert BUG_ON() into __ide_set_handler() (take 2) 2008-02-11 00:32:12 +01:00
ide-lib.c ide: remove stale comment from ide-lib.c 2008-02-11 00:32:15 +01:00
ide-pnp.c ide: fix ide_unregister() usage in host drivers 2008-02-02 19:56:39 +01:00
ide-probe.c ide: skip probing port if "hdx=noprobe" was used for both devices on it 2008-02-26 21:50:34 +01:00
ide-proc.c Palmchip BK3710 IDE driver 2008-02-06 02:57:48 +01:00
ide-scan-pci.c ide: small ide-scan-pci.c cleanup 2008-02-01 23:09:16 +01:00
ide-tape.c ide-tape: schedule driver for removal after 6 months 2008-02-26 21:50:36 +01:00
ide-taskfile.c IDE: Make taskfile interface more robust wrt unexpected end-of-command 2008-03-18 21:26:24 -07:00
ide-timing.h Spelling fixes: lenght->length 2008-02-03 15:42:53 +02:00
ide.c ide: update references to Documentation/ide/ide.txt (v2) 2008-03-07 21:53:50 +01:00
Kconfig ide: update references to Documentation/ide/ide.txt (v2) 2008-03-07 21:53:50 +01:00
Makefile ide-cd: move code handling cdrom.c IOCTLs to ide-cd_ioctl.c 2008-02-01 23:09:25 +01:00
setup-pci.c ide: add struct ide_port_info instances to legacy host drivers 2008-02-02 19:56:31 +01:00