[PATCH] libata-dev: irq-pio minor fix 2
authorAlbert Lee <albertcc@tw.ibm.com>
Mon, 3 Apr 2006 10:31:44 +0000 (18:31 +0800)
committerJeff Garzik <jeff@garzik.org>
Tue, 4 Apr 2006 12:42:26 +0000 (08:42 -0400)
irq-pio minor fix 2:
- Use qc as data for ata_pio_task().

Signed-off-by: Albert Lee <albertcc@tw.ibm.com>
Signed-off-by: Jeff Garzik <jeff@garzik.org>
drivers/scsi/libata-core.c

index d270b23a03b8d8a2909015c764cc864ce11cb08e..57b3240ee867f294496ce88dd020325439f1b0bf 100644 (file)
@@ -4097,9 +4097,6 @@ static void ata_pio_task(void *_data)
 fsm_start:
        WARN_ON(ap->hsm_task_state == HSM_ST_IDLE);
 
-       qc = ata_qc_from_tag(ap, ap->active_tag);
-       WARN_ON(qc == NULL);
-
        /*
         * This is purely heuristic.  This is a fast path.
         * Sometimes when we enter, BSY will be cleared in
@@ -4112,7 +4109,7 @@ fsm_start:
                msleep(2);
                status = ata_busy_wait(ap, ATA_BUSY, 10);
                if (status & ATA_BUSY) {
-                       ata_port_queue_task(ap, ata_pio_task, ap, ATA_SHORT_PAUSE);
+                       ata_port_queue_task(ap, ata_pio_task, qc, ATA_SHORT_PAUSE);
                        return;
                }
        }
@@ -4347,7 +4344,7 @@ unsigned int ata_qc_issue_prot(struct ata_queued_cmd *qc)
                ap->hsm_task_state = HSM_ST_LAST;
 
                if (qc->tf.flags & ATA_TFLAG_POLLING)
-                       ata_port_queue_task(ap, ata_pio_task, ap, 0);
+                       ata_port_queue_task(ap, ata_pio_task, qc, 0);
 
                break;
 
@@ -4369,7 +4366,7 @@ unsigned int ata_qc_issue_prot(struct ata_queued_cmd *qc)
                if (qc->tf.flags & ATA_TFLAG_WRITE) {
                        /* PIO data out protocol */
                        ap->hsm_task_state = HSM_ST_FIRST;
-                       ata_port_queue_task(ap, ata_pio_task, ap, 0);
+                       ata_port_queue_task(ap, ata_pio_task, qc, 0);
 
                        /* always send first data block using
                         * the ata_pio_task() codepath.
@@ -4379,7 +4376,7 @@ unsigned int ata_qc_issue_prot(struct ata_queued_cmd *qc)
                        ap->hsm_task_state = HSM_ST;
 
                        if (qc->tf.flags & ATA_TFLAG_POLLING)
-                               ata_port_queue_task(ap, ata_pio_task, ap, 0);
+                               ata_port_queue_task(ap, ata_pio_task, qc, 0);
 
                        /* if polling, ata_pio_task() handles the rest.
                         * otherwise, interrupt handler takes over from here.
@@ -4400,7 +4397,7 @@ unsigned int ata_qc_issue_prot(struct ata_queued_cmd *qc)
                /* send cdb by polling if no cdb interrupt */
                if ((!(qc->dev->flags & ATA_DFLAG_CDB_INTR)) ||
                    (qc->tf.flags & ATA_TFLAG_POLLING))
-                       ata_port_queue_task(ap, ata_pio_task, ap, 0);
+                       ata_port_queue_task(ap, ata_pio_task, qc, 0);
                break;
 
        case ATA_PROT_ATAPI_DMA:
@@ -4412,7 +4409,7 @@ unsigned int ata_qc_issue_prot(struct ata_queued_cmd *qc)
 
                /* send cdb by polling if no cdb interrupt */
                if (!(qc->dev->flags & ATA_DFLAG_CDB_INTR))
-                       ata_port_queue_task(ap, ata_pio_task, ap, 0);
+                       ata_port_queue_task(ap, ata_pio_task, qc, 0);
                break;
 
        default: