-Index: linux-3.18-rc7/drivers/ata/libata-core.c
-===================================================================
---- linux-3.18-rc7.orig/drivers/ata/libata-core.c
-+++ linux-3.18-rc7/drivers/ata/libata-core.c
-@@ -1568,6 +1568,14 @@ unsigned ata_exec_internal_sg(struct ata
+--- a/drivers/ata/libata-core.c
++++ b/drivers/ata/libata-core.c
+@@ -1581,6 +1581,14 @@ unsigned ata_exec_internal_sg(struct ata
return AC_ERR_SYSTEM;
}
/* initialize internal qc */
/* XXX: Tag 0 is used for drivers with legacy EH as some
-@@ -4739,6 +4747,9 @@ static struct ata_queued_cmd *ata_qc_new
+@@ -4752,6 +4760,9 @@ static struct ata_queued_cmd *ata_qc_new
if (unlikely(ap->pflags & ATA_PFLAG_FROZEN))
return NULL;
+ return NULL;
+
for (i = 0, tag = ap->last_tag + 1; i < max_queue; i++, tag++) {
- tag = tag < max_queue ? tag : 0;
-
-@@ -4805,6 +4816,8 @@ void ata_qc_free(struct ata_queued_cmd *
+ if (ap->flags & ATA_FLAG_LOWTAG)
+ tag = i;
+@@ -4824,6 +4835,8 @@ void ata_qc_free(struct ata_queued_cmd *
if (likely(ata_tag_valid(tag))) {
qc->tag = ATA_TAG_POISON;
clear_bit(tag, &ap->qc_allocated);
}
}
-Index: linux-3.18-rc7/include/linux/libata.h
-===================================================================
---- linux-3.18-rc7.orig/include/linux/libata.h
-+++ linux-3.18-rc7/include/linux/libata.h
-@@ -884,6 +884,8 @@ struct ata_port_operations {
+--- a/include/linux/libata.h
++++ b/include/linux/libata.h
+@@ -891,6 +891,8 @@ struct ata_port_operations {
void (*qc_prep)(struct ata_queued_cmd *qc);
unsigned int (*qc_issue)(struct ata_queued_cmd *qc);
bool (*qc_fill_rtf)(struct ata_queued_cmd *qc);
/*
* Configuration and exception handling
-@@ -974,6 +976,9 @@ struct ata_port_operations {
+@@ -981,6 +983,9 @@ struct ata_port_operations {
void (*phy_reset)(struct ata_port *ap);
void (*eng_timeout)(struct ata_port *ap);