[libata] fix PIO completion race
authorJeff Garzik <jgarzik@pobox.com>
Fri, 16 Sep 2005 10:01:48 +0000 (06:01 -0400)
committerJeff Garzik <jgarzik@pobox.com>
Fri, 16 Sep 2005 10:01:48 +0000 (06:01 -0400)
Make sure we that completion is the final action we take; prior to this
change, another CPU may have changed ap->pio_task_state before we tested
it a final time.

Spotted by, and original patch by Albert Lee @ IBM.

Also includes a minor optimization:  eliminate a ton of unnecessary
queue_work() calls, simply by jumping to the beginning of the FSM
function ata_pio_task().


No differences found