On Thu, May 3, 2012 at 7:15 AM, Lin Ming <ming.m.lin@xxxxxxxxx> wrote:
> Commit d902747("[libata] Add ATA transport class") introduced
> ATA_EFLAG_OLD_ER to mark entries in the error ring as cleared.
>
> But ata_count_probe_trials_cb() didn't check this flag and it still
> counts the old error history. So wrong probe trials count is returned
> and it causes problem, for example, SATA link speed is slowed down from
> 3.0Gbps to 1.5Gbps.
>
> Fix it by checking ATA_EFLAG_OLD_ER in ata_count_probe_trials_cb().
>
> Cc: stable <stable@xxxxxxxxxxxxxxx> # 2.6.37+
> Signed-off-by: Lin Ming <ming.m.lin@xxxxxxxxx>
> ---
>
> v2: update logs, specify the summary of commit d902747
>
> drivers/ata/libata-eh.c | 3 ++-
> 1 files changed, 2 insertions(+), 1 deletions(-)
>
> diff --git a/drivers/ata/libata-eh.c b/drivers/ata/libata-eh.c
> index c61316e..d1fbd59 100644
> --- a/drivers/ata/libata-eh.c
> +++ b/drivers/ata/libata-eh.c
> @@ -3501,7 +3501,8 @@ static int ata_count_probe_trials_cb(struct ata_ering_entry *ent, void *void_arg
> u64 now = get_jiffies_64();
> int *trials = void_arg;
>
> - if (ent->timestamp < now - min(now, interval))
> + if ((ent->eflags & ATA_EFLAG_OLD_ER) ||
> + (ent->timestamp < now - min(now, interval)))
> return -1;
>
> (*trials)++;
> --
> 1.7.9
>
Acked-by: Gwendal Grignou <gwendal@xxxxxxxxxx>
--
To unsubscribe from this list: send the line "unsubscribe linux-ide" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
[Linux Filesystems]
[Linux SCSI]
[Linux RAID]
[Git]
[Kernel Newbies]
[Linux Newbie]
[Share Photos]
[Security]
[Netfilter]
[Bugtraq]
[Photo]
[Yosemite]
[Yosemite News]
[MIPS Linux]
[ARM Linux]
[Linux Security]
[Samba]
[Video 4 Linux]
[Device Mapper]
[Linux Resources]