From owner-freebsd-scsi@FreeBSD.ORG Tue Jul 8 17:43:42 2014 Return-Path: Delivered-To: freebsd-scsi@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id A4A2BFD2 for ; Tue, 8 Jul 2014 17:43:42 +0000 (UTC) Received: from smtp.infotech.no (smtp.infotech.no [82.134.31.41]) by mx1.freebsd.org (Postfix) with ESMTP id 2A6212D4B for ; Tue, 8 Jul 2014 17:43:41 +0000 (UTC) Received: from localhost (localhost [127.0.0.1]) by smtp.infotech.no (Postfix) with ESMTP id 5AE942041C0; Tue, 8 Jul 2014 19:43:39 +0200 (CEST) X-Virus-Scanned: by amavisd-new-2.6.6 (20110518) (Debian) at infotech.no Received: from smtp.infotech.no ([127.0.0.1]) by localhost (smtp.infotech.no [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id zKMuVr9ZXv51; Tue, 8 Jul 2014 19:43:37 +0200 (CEST) Received: from [192.168.48.86] (unknown [199.127.109.253]) by smtp.infotech.no (Postfix) with ESMTPA id 5BF1020415F; Tue, 8 Jul 2014 19:43:35 +0200 (CEST) Message-ID: <53BC2DC5.60005@interlog.com> Date: Tue, 08 Jul 2014 13:43:33 -0400 From: Douglas Gilbert Reply-To: dgilbert@interlog.com User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:24.0) Gecko/20100101 Thunderbird/24.6.0 MIME-Version: 1.0 To: Martin Simmons , freebsd-scsi@FreeBSD.org Subject: Re: [Bug 191717] [iscsi] smartctl -H gives "ATA output registers missing" for a disk using the isci driver References: <53BB619B.4060908@interlog.com> <201407081145.s68Bjxn6006452@higson.cam.lispworks.com> In-Reply-To: <201407081145.s68Bjxn6006452@higson.cam.lispworks.com> Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Cc: Alex Samorukov , Christian Franke X-BeenThere: freebsd-scsi@freebsd.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: SCSI subsystem List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 08 Jul 2014 17:43:42 -0000 On 14-07-08 07:45 AM, Martin Simmons wrote: >>>>>> On Mon, 07 Jul 2014 23:12:27 -0400, Douglas Gilbert said: >> >> On 14-07-07 09:45 PM, bugzilla-noreply at freebsd.org wrote: >>> https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=191717 >>> >>> Mark Linimon changed: >>> >>> What |Removed |Added >>> ---------------------------------------------------------------------------- >>> Assignee|freebsd-bugs at FreeBSD.org |freebsd-scsi at FreeBSD.org >>> Summary|smartctl -H gives "ATA |[iscsi] smartctl -H gives >>> |output registers missing" |"ATA output registers >>> |for a disk using the isci |missing" for a disk using >>> |driver |the isci driver >>> >>> --- Comment #1 from Mark Linimon --- >>> Over to maintainers. >>> >> >> At the point of failure "whatever" produces this SCSI sense data: >> f0 00 01 00 50 40 00 00 00 c2 4f 00 00 1d 00 00 00 00 >> >> FreeBSD is wrong to print out 18 bytes because that is an 8 >> byte (deferred, fixed type) buffer because byte 7 (the >> additional length) is 0. Whatever produced that broken >> sense data is the probably culprit. >> >> It is trying to say there is "ATA pass-through information >> available" but fails to get its message across. > > Hi, > > I'm the original reporter. > > The sense data is smartctl's interpretation of the ccb union. > > In particular, the bytes are from ccb->csio.sense_data and it calculates 18 > from ccb->csio.sense_len - ccb->csio.sense_resid (32 - 14). I don't know if > that is correct or not. > > FWIW, here is the output from CentOS 6.3 on the same machine: > > REPORT-IOCTL: Device=/dev/sdc Command=SMART STATUS CHECK > Input: FR=0xda, SC=...., LL=...., LM=0x4f, LH=0xc2, DEV=...., CMD=0xb0 > [ata pass-through(16): 85 06 2c 00 da 00 00 00 00 00 4f 00 c2 00 b0 00 ] > scsi_status=0x2, host_status=0x0, driver_status=0x8 > info=0x1 duration=17 milliseconds resid=0 > >>> Sense buffer, len=22: > 00 72 00 00 00 00 00 00 0e 09 0c 00 00 00 00 00 00 > 10 00 4f 00 c2 40 50 > status=2: [desc] sense_key=0 asc=0 ascq=0 > Values from ATA Return Descriptor are: > 00 09 0c 00 00 00 00 00 00 00 4f 00 c2 40 50 > [Duration: 0.016s] > Output: ERR=0x00, SC=0x00, LL=0x00, LM=0x4f, LH=0xc2, DEV=0x40, STS=0x50 > REPORT-IOCTL: Device=/dev/sdc Command=SMART STATUS CHECK returned 0 > > It appears to have the same ata pass-through command but completely different > sense data. The SAT standard originally only defined "descriptor" sense data format for passing back ATA errors and warning. That is what is being done properly in the Centos 6.3 output that you have shown above. More recently someone at T10 objected that SAT ignored the D_SENSE flag which allows an application client to choose whether it wants "fixed" or "descriptor" sense data format. It looks like the FreeBSD case is trying to produce the equivalent "fixed" sense data, but it fails to format it properly. So in the FreeBSD case you are looking for the SAT Layer (SATL). It could be in the FreeBSD CAM mid-level, the driver code or firmware, or in a remote device like a USB bridge. However if it was in something like a USB bridge then you would expect FreeBSD and Linux to react the same way. So it looks like a FreeBSD bug. Doug Gilbert