linux-scsi.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Douglas Gilbert <dgilbert@interlog.com>
To: bugzilla-daemon@bugzilla.kernel.org
Cc: linux-scsi@vger.kernel.org
Subject: Re: [Bug 15185] New: Sending a 48bit ATA-Command with "CheckCondition" through SG_IO does not return correct 48bit sense descriptor
Date: Mon, 01 Feb 2010 13:25:05 -0500	[thread overview]
Message-ID: <4B671C81.9010709@interlog.com> (raw)
In-Reply-To: <4B67195A.9060806@interlog.com>

Douglas Gilbert wrote:
> bugzilla-daemon@bugzilla.kernel.org wrote:
>> http://bugzilla.kernel.org/show_bug.cgi?id=15185
>>
>>            Summary: Sending a 48bit ATA-Command with "CheckCondition"
>>                     through SG_IO does not return correct 48bit sense
>>                     descriptor
>>            Product: SCSI Drivers
>>            Version: 2.5
>>     Kernel Version: 2.6.31
>>           Platform: All
>>         OS/Version: Linux
>>               Tree: Mainline
>>             Status: NEW
>>           Severity: normal
>>           Priority: P1
>>          Component: Other
>>         AssignedTo: scsi_drivers-other@kernel-bugs.osdl.org
>>         ReportedBy: stefan.huebner@stud.tu-ilmenau.de
>>         Regression: No
>>
>>
>> Example: sending a correct "READ_NATIVE_MAX_ADDRESS_EXT" to /dev/sdd 
>> (opened
>> O_RDWR | O_NONBLOCK) via ATA_PASSTHROUGH_16 (SCSI-Command 0x85) with 
>> the EXTEND
>> and the CHECK_CONDITION bits set to 1 yields sense data in 
>> descriptor-format. Unfortunately, the descriptor does not have EXTEND 
>> set, and by that only
>> returns 24 Bits of LBA.
>>
>> This obviously is a bug, as the SAT-2 Draft says: "If the sense data 
>> is for an
>> ATA PASS-THROUGH (16) command with the EXTEND bit set to one, then the 
>> SATL
>> shall return the 48-bit extended status and shall set the EXTEND bit 
>> to one."
>>
>> Contents of important data-structures for SG_IO:
>> sg_io_hdr.cmdlen = 16
>> *sg_io_hdr.cmdp = {0x85 0x07 0x20 0x00 0x00 0x00 0x00 0x00 0x00 0x00 
>> 0x00 0x00
>> 0x00 0x00 0x27 0x00}
>>
>> sense-data after command:
>> 0x72 0x00 0x00 0x00 0x00 0x00 0x00 0x0e 0x09 0x0c 0x00 0x00 0x00 0x00 
>> 0x00 0xaf
>> 0x00 0x6d 0x00 0x70 0x00 0x50
>> meaning: descriptor-sense, no error
>> descriptor:
>>  code=0x09 -> ATA-Return descriptor
>>  length=0x0c
>>  EXTEND=0
>>  Error = 0x00
>>  SectorCount = 0x00
>>  LBA_Low = 0xaf
>>  LBA_Mid = 0x6d
>>  LBA_High= 0x70
>>  Device  = 0
>>  Status  = DeviceReady | DeferredWriteError
>>
>> The drive used should be reporting a native max lba of 0x74706daf 
>> (1.02TB), so
>> the expected sense data should look like:
>> 0x72 0x00 0x00 0x00 0x00 0x00 0x00 0x0e 0x09 0x0c 0x01 0x00 0x00 0x00 
>> 0x6d 0xaf
>> 0x74 0x70 0x00 0x00 0x00 0x50
> 
> This bug does not occur in lk 2.6.30 but does in lk
> 2.6.32 . There was a pretty large rework of libata
> in that period and there is obvious bug in
> drivers/ata/libata-scsi.c that causes this.
> 
> The attached patch fixes this problem in lk 2.6.32 in
> my test.
> 
> Signed-off-by: Douglas Gilbert <dgilbert@interlog.com>

Changelog:
   - Fix assignment which overwrote SAT ATA PASS-THROUGH
     command EXTEND bit setting (ATA_TFLAG_LBA48)



  reply	other threads:[~2010-02-01 18:25 UTC|newest]

Thread overview: 7+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2010-01-31 11:30 [Bug 15185] New: Sending a 48bit ATA-Command with "CheckCondition" through SG_IO does not return correct 48bit sense descriptor bugzilla-daemon
2010-02-01 18:11 ` Douglas Gilbert
2010-02-01 18:25   ` Douglas Gilbert [this message]
2010-02-01 19:01 ` [Bug 15185] " bugzilla-daemon
2010-02-01 19:06 ` bugzilla-daemon
2010-02-01 21:22 ` bugzilla-daemon
2010-02-09 16:13 ` bugzilla-daemon

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=4B671C81.9010709@interlog.com \
    --to=dgilbert@interlog.com \
    --cc=bugzilla-daemon@bugzilla.kernel.org \
    --cc=linux-scsi@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).