From e55ba06b41d4858564df57bd751d9e21c83e3fc6 Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Thu, 9 Apr 2009 03:35:03 +0200 Subject: deal with ATA/USB truncation --- atasmart.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/atasmart.c b/atasmart.c index 8e4d522..0a2e1bc 100644 --- a/atasmart.c +++ b/atasmart.c @@ -660,10 +660,12 @@ int sk_disk_smart_status(SkDisk *d, SkBool *good) { if ((ret = disk_command(d, SK_ATA_COMMAND_SMART, SK_DIRECTION_NONE, cmd, NULL, 0)) < 0) return ret; - if (cmd[3] == htons(0x00C2U) && + /* SAT/USB bridges truncate packets, so we only check for 4F, + * not for 2C on those */ + if ((d->type == SK_DISK_TYPE_ATA_PASSTHROUGH_12 || cmd[3] == htons(0x00C2U)) && cmd[4] == htons(0x4F00U)) *good = TRUE; - else if (cmd[3] == htons(0x002CU) && + else if ((d->type == SK_DISK_TYPE_ATA_PASSTHROUGH_12 || cmd[3] == htons(0x002CU)) && cmd[4] == htons(0xF400U)) *good = FALSE; else { -- cgit