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

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

[PATCH] libata-dev: Make the the in_wq check as an inline function



Make the the in_wq check easier to read as an inline function.

Signed-off-by: default avatarAlbert Lee <albertcc@tw.ibm.com>
Signed-off-by: default avatarJeff Garzik <jeff@garzik.org>
parent c2bbc551
Loading
Loading
Loading
Loading
+28 −6
Original line number Diff line number Diff line
@@ -3535,6 +3535,33 @@ static void atapi_pio_bytes(struct ata_queued_cmd *qc)
	ap->hsm_task_state = HSM_ST_ERR;
}

/**
 *	ata_hsm_ok_in_wq - Check if the qc can be handled in the workqueue.
 *	@ap: the target ata_port
 *	@qc: qc on going
 *
 *	RETURNS:
 *	1 if ok in workqueue, 0 otherwise.
 */

static inline int ata_hsm_ok_in_wq(struct ata_port *ap, struct ata_queued_cmd *qc)
{
	if (qc->tf.flags & ATA_TFLAG_POLLING)
		return 1;

	if (ap->hsm_task_state == HSM_ST_FIRST) {
		if (qc->tf.protocol == ATA_PROT_PIO &&
		    (qc->tf.flags & ATA_TFLAG_WRITE))
		    return 1;

		if (is_atapi_taskfile(&qc->tf) &&
		    !(qc->dev->flags & ATA_DFLAG_CDB_INTR))
			return 1;
	}

	return 0;
}

/**
 *	ata_hsm_move - move the HSM to the next state.
 *	@ap: the target ata_port
@@ -3558,12 +3585,7 @@ static int ata_hsm_move(struct ata_port *ap, struct ata_queued_cmd *qc,
	 * like DMA polling into the workqueue. Notice that
	 * in_wq is not equivalent to (qc->tf.flags & ATA_TFLAG_POLLING).
	 */
	WARN_ON(in_wq != ((qc->tf.flags & ATA_TFLAG_POLLING) ||
			  (ap->hsm_task_state == HSM_ST_FIRST &&
			   ((qc->tf.protocol == ATA_PROT_PIO &&
			     (qc->tf.flags & ATA_TFLAG_WRITE)) ||
			    (is_atapi_taskfile(&qc->tf) &&
			     !(qc->dev->flags & ATA_DFLAG_CDB_INTR))))));
	WARN_ON(in_wq != ata_hsm_ok_in_wq(ap, qc));

	/* check error */
	if (unlikely(status & (ATA_ERR | ATA_DF))) {