Files
linux/include
Tejun Heo a2a7a662f8 [PATCH] libata: implement ata_exec_internal()
This patch implements ata_exec_internal() function which performs
libata internal command execution.  Previously, this was done by each
user by manually initializing a qc, issueing it, waiting for its
completion and handling errors.  In addition to obvious code
factoring, using ata_exec_internal() fixes the following bugs.

* qc not freed on issue failure
* ap->qactive clearing could race with the next internal command
* race between timeout handling and irq
* ignoring error condition not represented in tf->status

Also, qc & hardware are not accessed anymore once it's completed,
making internal commands more conformant with general semantics.
ata_exec_internal() also makes it easy to issue internal commands from
multiple threads if that becomes necessary.

This patch only implements ata_exec_internal().  A following patch
will convert all users.

Signed-off-by: Tejun Heo <htejun@gmail.com>

--

Jeff, all patches have been regenerated against upstream branch as of
today.  (575ab52a21)

Also, I took out a debug printk from ata_exec_internal (don't know how
that one got left there).  Other than that, all patches are identical
to the previous posting.

Thanks. :-)
Signed-off-by: Jeff Garzik <jgarzik@pobox.com>
2005-12-13 01:34:45 -05:00
..
2005-11-13 18:14:16 -08:00
2005-11-13 18:14:16 -08:00
2005-11-14 19:56:02 -08:00
2005-11-13 18:14:16 -08:00
2005-11-13 18:14:16 -08:00
2005-11-13 18:14:16 -08:00
2005-11-13 18:14:16 -08:00
2005-11-13 18:14:16 -08:00
2005-11-13 18:14:16 -08:00
2005-11-13 18:14:16 -08:00
2005-12-05 13:42:06 -08:00
2005-10-30 17:37:32 -08:00
2005-11-07 14:35:14 +01:00