diff mbox

READ LOG DMA EXT failed, trying unqueued

Message ID 20150519120017.GA390@swordfish
State Not Applicable
Delegated to: David Miller
Headers show

Commit Message

Sergey Senozhatsky May 19, 2015, noon UTC
On (05/19/15 20:33), Sergey Senozhatsky wrote:
> my laptop doesn't boot anymore, spinning in "READ LOG DMA EXT failed, trying unqueued".
> any reason it loops forever?
> 

perhaps something like this?

8<-----8<-----

From 826eb3644e7d4b1f66a898c63865f217fb82f1f9 Mon Sep 17 00:00:00 2001
From: Sergey Senozhatsky <sergey.senozhatsky@gmail.com>
Date: Tue, 19 May 2015 20:54:18 +0900
Subject: [PATCH] ata: do not retry ata_read_log_page() forever

Do not spin on failing ata_exec_internal() forever, make a one shot
ATA_HORKAGE_NO_NCQ_LOG retry.

Signed-off-by: Sergey Senozhatsky <sergey.senozhatsky@gmail.com>

---
 drivers/ata/libata-eh.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
diff mbox

Patch

diff --git a/drivers/ata/libata-eh.c b/drivers/ata/libata-eh.c
index f093174..20f1549 100644
--- a/drivers/ata/libata-eh.c
+++ b/drivers/ata/libata-eh.c
@@ -1531,7 +1531,7 @@  retry:
 	err_mask = ata_exec_internal(dev, &tf, NULL, DMA_FROM_DEVICE,
 				     buf, sectors * ATA_SECT_SIZE, 0);
 
-	if (err_mask && dma) {
+	if (err_mask && dma && !(dev->horkage & ATA_HORKAGE_NO_NCQ_LOG)) {
 		dev->horkage |= ATA_HORKAGE_NO_NCQ_LOG;
 		ata_dev_warn(dev, "READ LOG DMA EXT failed, trying unqueued\n");
 		goto retry;