diff --git a/drivers/ata/libata-core.c b/drivers/ata/libata-core.c
index 40caad1d8b439c457256a44719536985577f3953..4dc67c7704291295f10edda7f485972d1c670574 100644
--- a/drivers/ata/libata-core.c
+++ b/drivers/ata/libata-core.c
@@ -1600,7 +1600,7 @@ unsigned ata_exec_internal_sg(struct ata_device *dev,
 
 	qc = __ata_qc_from_tag(ap, tag);
 
-	qc->tag = tag;
+	qc->tag = qc->hw_tag = tag;
 	qc->scsicmd = NULL;
 	qc->ap = ap;
 	qc->dev = dev;
@@ -5125,7 +5125,7 @@ struct ata_queued_cmd *ata_qc_new_init(struct ata_device *dev, int tag)
 	}
 
 	qc = __ata_qc_from_tag(ap, tag);
-	qc->tag = tag;
+	qc->tag = qc->hw_tag = tag;
 	qc->scsicmd = NULL;
 	qc->ap = ap;
 	qc->dev = dev;
diff --git a/include/linux/libata.h b/include/linux/libata.h
index 1795fecdea171f5034b8df58eeeff95634955c98..07a8d54ba7af7e435a79cb77b7034715c475dc68 100644
--- a/include/linux/libata.h
+++ b/include/linux/libata.h
@@ -637,7 +637,8 @@ struct ata_queued_cmd {
 	u8			cdb[ATAPI_CDB_LEN];
 
 	unsigned long		flags;		/* ATA_QCFLAG_xxx */
-	unsigned int		tag;
+	unsigned int		tag;		/* libata core tag */
+	unsigned int		hw_tag;		/* driver tag */
 	unsigned int		n_elem;
 	unsigned int		orig_n_elem;