/* RETURNS: ATA_DEFER_* if deferring is needed, 0 otherwise.  */
int sata_pmp_qc_defer_cmd_switch(struct ata_queued_cmd *qc)
/* RETURNS: ATA_DEFER_* if deferring is needed, 0 otherwise.  */
int sata_pmp_qc_defer_cmd_switch(struct ata_queued_cmd *qc)
{
	struct ata_link *link = qc->dev->link;
	struct ata_port *ap = link->ap;
	if (ap->excl_link == NULL || ap->excl_link == link) {
		if (ap->nr_active_links == 0 || ata_link_active(link)) {
			qc->flags |= ATA_QCFLAG_CLEAR_EXCL;
			return ata_std_qc_defer(qc);
		}
		ap->excl_link = link;
	}
	return ATA_DEFER_PORT;
}