]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
ata: libata-eh: Improve reset error messages
authorDamien Le Moal <dlemoal@kernel.org>
Tue, 29 Aug 2023 02:25:47 +0000 (11:25 +0900)
committerDamien Le Moal <dlemoal@kernel.org>
Tue, 3 Oct 2023 00:39:50 +0000 (09:39 +0900)
Some drives are really slow to spinup on resume, resulting is a very
slow response to COMRESET and to error messages such as:

ata1: COMRESET failed (errno=-16)
ata1: link is slow to respond, please be patient (ready=0)
ata1: SATA link up 6.0 Gbps (SStatus 133 SControl 300)
ata1.00: configured for UDMA/133

Given that the slowness of the response is indicated with the message
"link is slow to respond..." and that resets are retried until the
device is detected as online after up to 1min (ata_eh_reset_timeouts),
there is no point in printing the "COMRESET failed" error message. Let's
not scare the user with non fatal errors and only warn about reset
failures in ata_eh_reset() when all reset retries have been exhausted.

Signed-off-by: Damien Le Moal <dlemoal@kernel.org>
Reviewed-by: Hannes Reinecke <hare@suse.de>
Tested-by: Chia-Lin Kao (AceLan) <acelan.kao@canonical.com>
Tested-by: Geert Uytterhoeven <geert+renesas@glider.be>
Reviewed-by: Martin K. Petersen <martin.petersen@oracle.com>
drivers/ata/libata-eh.c
drivers/ata/libata-sata.c

index 5686353e442cf41fb27174112617ae51f97fdfee..67387d602735ac617c20dd57df0bce37ca92e6ef 100644 (file)
@@ -2909,6 +2909,8 @@ int ata_eh_reset(struct ata_link *link, int classify,
                 */
                if (ata_is_host_link(link))
                        ata_eh_thaw_port(ap);
+               ata_link_warn(link, "%s failed\n",
+                             reset == hardreset ? "hardreset" : "softreset");
                goto out;
        }
 
index 83a9497e48e14b808b5318f43a30a64e03a484a9..b6656c287175c7653324758ccb5422dc36168e3d 100644 (file)
@@ -621,7 +621,6 @@ int sata_link_hardreset(struct ata_link *link, const unsigned int *timing,
                /* online is set iff link is online && reset succeeded */
                if (online)
                        *online = false;
-               ata_link_err(link, "COMRESET failed (errno=%d)\n", rc);
        }
        return rc;
 }