Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 7282aa4b authored by Albert Lee's avatar Albert Lee Committed by Jeff Garzik
Browse files

[libata irq-pio] reorganize ata_pio_sector() and __atapi_pio_bytes()



   - move some code out of the kmap_atomic() / kunmap_atomic() zone
   - remove the redundant "do_write = (qc->tf.flags & ATA_TFLAG_WRITE);"

Signed-off-by: default avatarAlbert Lee <albertcc@tw.ibm.com>
parent f58f8be7
Loading
Loading
Loading
Loading
+16 −17
Original line number Diff line number Diff line
@@ -2763,22 +2763,21 @@ static void ata_pio_sector(struct ata_queued_cmd *qc)
	local_irq_save(flags);
	buf = kmap_atomic(page, KM_IRQ0) + offset;

	qc->cursect++;
	qc->cursg_ofs++;

	if ((qc->cursg_ofs * ATA_SECT_SIZE) == (&sg[qc->cursg])->length) {
		qc->cursg++;
		qc->cursg_ofs = 0;
	}

	DPRINTK("data %s\n", qc->tf.flags & ATA_TFLAG_WRITE ? "write" : "read");

	/* do the actual data transfer */
	do_write = (qc->tf.flags & ATA_TFLAG_WRITE);
	ata_data_xfer(ap, buf, ATA_SECT_SIZE, do_write);

	kunmap_atomic(buf - offset, KM_IRQ0);
	local_irq_restore(flags);

	qc->cursect++;
	qc->cursg_ofs++;

	if ((qc->cursg_ofs * ATA_SECT_SIZE) == (&sg[qc->cursg])->length) {
		qc->cursg++;
		qc->cursg_ofs = 0;
	}
}

/**
@@ -2956,6 +2955,14 @@ static void __atapi_pio_bytes(struct ata_queued_cmd *qc, unsigned int bytes)
	local_irq_save(flags);
	buf = kmap_atomic(page, KM_IRQ0) + offset;

	DPRINTK("data %s\n", qc->tf.flags & ATA_TFLAG_WRITE ? "write" : "read");

	/* do the actual data transfer */
	ata_data_xfer(ap, buf, count, do_write);

	kunmap_atomic(buf - offset, KM_IRQ0);
	local_irq_restore(flags);

	bytes -= count;
	qc->curbytes += count;
	qc->cursg_ofs += count;
@@ -2965,14 +2972,6 @@ static void __atapi_pio_bytes(struct ata_queued_cmd *qc, unsigned int bytes)
		qc->cursg_ofs = 0;
	}

	DPRINTK("data %s\n", qc->tf.flags & ATA_TFLAG_WRITE ? "write" : "read");

	/* do the actual data transfer */
	ata_data_xfer(ap, buf, count, do_write);

	kunmap_atomic(buf - offset, KM_IRQ0);
	local_irq_restore(flags);

	if (bytes)
		goto next_sg;
}