diff options
author | Tejun Heo <htejun@gmail.com> | 2005-08-22 04:12:45 -0400 |
---|---|---|
committer | Jeff Garzik <jgarzik@pobox.com> | 2005-08-23 01:05:55 -0400 |
commit | 40e8c82c74b9be793601e098fd1313bc2632c5dc (patch) | |
tree | b3c89b2aaa5d477e8db5acc9bf4ee6f31acf3db8 /drivers/scsi/sata_sil.c | |
parent | c1389503710ef4b4e5d21bea284afde19e9619cf (diff) |
[PATCH] libata: implement ata_poll_qc_complete and use it in polling functions
[PATCH libata-dev-2.6:upstream] implement ata_poll_qc_complete and use it in polling functions
Previously, libata polling functions turned irq back on and completed
qc commands without holding host lock. This creates a race condition
between the polling task and interrupts from other ports on the same
host set or spurious interrupt from itself.
This patch implements ata_poll_qc_complete which enables irq and
completes qc atomically and convert all polling functions.
Note: atapi_packet_task() didn't use to turn irq back on or clear
ATA_FLAG_NOINTR on error exits. This patch makes it use
ata_poll_qc_complete which does both.
Note: With this change, ALL invocations of ata_qc_complete() are now
done under host_set lock.
Signed-off-by: Tejun Heo <htejun@gmail.com>
Signed-off-by: Jeff Garzik <jgarzik@pobox.com>
Diffstat (limited to 'drivers/scsi/sata_sil.c')
0 files changed, 0 insertions, 0 deletions