From owner-freebsd-bugs@FreeBSD.ORG Wed Feb 15 00:50:06 2006 Return-Path: X-Original-To: freebsd-bugs@hub.freebsd.org Delivered-To: freebsd-bugs@hub.freebsd.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id 77CFD16A420 for ; Wed, 15 Feb 2006 00:50:06 +0000 (GMT) (envelope-from gnats@FreeBSD.org) Received: from freefall.freebsd.org (freefall.freebsd.org [216.136.204.21]) by mx1.FreeBSD.org (Postfix) with ESMTP id F07BA43D48 for ; Wed, 15 Feb 2006 00:50:05 +0000 (GMT) (envelope-from gnats@FreeBSD.org) Received: from freefall.freebsd.org (gnats@localhost [127.0.0.1]) by freefall.freebsd.org (8.13.4/8.13.4) with ESMTP id k1F0o5AX073595 for ; Wed, 15 Feb 2006 00:50:05 GMT (envelope-from gnats@freefall.freebsd.org) Received: (from gnats@localhost) by freefall.freebsd.org (8.13.4/8.13.4/Submit) id k1F0o5Oi073594; Wed, 15 Feb 2006 00:50:05 GMT (envelope-from gnats) Resent-Date: Wed, 15 Feb 2006 00:50:05 GMT Resent-Message-Id: <200602150050.k1F0o5Oi073594@freefall.freebsd.org> Resent-From: FreeBSD-gnats-submit@FreeBSD.org (GNATS Filer) Resent-To: freebsd-bugs@FreeBSD.org Resent-Reply-To: FreeBSD-gnats-submit@FreeBSD.org, Garry Belka Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id 3991B16A420 for ; Wed, 15 Feb 2006 00:41:34 +0000 (GMT) (envelope-from garry@NetworkPhysics.COM) Received: from NetworkPhysics.COM (fw.networkphysics.com [205.158.104.176]) by mx1.FreeBSD.org (Postfix) with ESMTP id E869D43D46 for ; Wed, 15 Feb 2006 00:41:33 +0000 (GMT) (envelope-from garry@NetworkPhysics.COM) Received: from focus5.fractal.networkphysics.com (focus5.fractal.networkphysics.com [10.10.0.112]) by NetworkPhysics.COM (8.12.10/8.12.10) with ESMTP id k1F0fXPY055238 for ; Tue, 14 Feb 2006 16:41:33 -0800 (PST) (envelope-from garry@NetworkPhysics.COM) Received: (from garry@localhost) by focus5.fractal.networkphysics.com (8.13.1/8.12.10/Submit) id k1F0fXwC023235; Tue, 14 Feb 2006 16:41:33 -0800 (PST) (envelope-from garry) Message-Id: <200602150041.k1F0fXwC023235@focus5.fractal.networkphysics.com> Date: Tue, 14 Feb 2006 16:41:33 -0800 (PST) From: Garry Belka To: FreeBSD-gnats-submit@FreeBSD.org X-Send-Pr-Version: 3.113 Cc: Subject: kern/93368: ATA_SMART command is missing X-BeenThere: freebsd-bugs@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list Reply-To: Garry Belka List-Id: Bug reports List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 15 Feb 2006 00:50:06 -0000 >Number: 93368 >Category: kern >Synopsis: ATA_SMART command is missing >Confidential: no >Severity: non-critical >Priority: low >Responsible: freebsd-bugs >State: open >Quarter: >Keywords: >Date-Required: >Class: sw-bug >Submitter-Id: current-users >Arrival-Date: Wed Feb 15 00:50:05 GMT 2006 >Closed-Date: >Last-Modified: >Originator: Garry Belka >Release: FreeBSD 5.4-RELEASE i386 >Organization: Network Physics >Environment: System: FreeBSD tempo.fractal.networkphysics.com 5.4-RELEASE FreeBSD i386 >Description: ATA_SMART (0xb0) command is not defined. On error ATA driver prints "Unknown CMD" instead of "SMART". and, btw, there is a more serious bug lurking in ATA. In composite requests with dependency, a first stage read will be marked as done, even if it failed with error. Composite handling in ata_completed() will immediately restart the channel I/O. That will start a dependent write part of the composite, likely to result in data corruption unless the whole disk failed. >How-To-Repeat: run smartd on a failing disk >Fix: apply a trivial patch below. Index: sys/dev/ata/ata-queue.c =================================================================== RCS file: /u1/Repo/FreeBSD/sys/dev/ata/ata-queue.c,v retrieving revision 1.10 retrieving revision 1.11 diff -u -r1.10 -r1.11 --- sys/dev/ata/ata-queue.c 19 Jan 2006 19:09:32 -0000 1.10 +++ sys/dev/ata/ata-queue.c 15 Feb 2006 00:06:47 -0000 1.11 @@ -800,6 +800,7 @@ case 0xa0: return ("PACKET_CMD"); case 0xa1: return ("ATAPI_IDENTIFY"); case 0xa2: return ("SERVICE"); + case 0xb0: return ("SMART"); case 0xc0: return ("CFA ERASE"); case 0xc4: return ("READ_MUL"); case 0xc5: return ("WRITE_MUL"); Index: sys/sys/ata.h =================================================================== RCS file: /u1/Repo/FreeBSD/sys/sys/ata.h,v retrieving revision 1.5 retrieving revision 1.6 diff -u -r1.5 -r1.6 --- sys/sys/ata.h 5 Nov 2005 00:25:25 -0000 1.5 +++ sys/sys/ata.h 15 Feb 2006 00:06:47 -0000 1.6 @@ -240,6 +240,7 @@ #define ATA_PACKET_CMD 0xa0 /* packet command */ #define ATA_ATAPI_IDENTIFY 0xa1 /* get ATAPI params*/ #define ATA_SERVICE 0xa2 /* service command */ +#define ATA_SMART_CMD 0xb0 #define ATA_CFA_ERASE 0xc0 /* CFA erase */ #define ATA_READ_MUL 0xc4 /* read multi */ #define ATA_WRITE_MUL 0xc5 /* write multi */ >Release-Note: >Audit-Trail: >Unformatted: