Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 21 Apr 2013 04:32:20 -0700
From:      Jeremy Chadwick <jdc@koitsu.org>
To:        Alexander Motin <mav@FreeBSD.org>
Cc:        freebsd-current@freebsd.org, freebsd-stable@freebsd.org, Matthias Andree <mandree@FreeBSD.org>
Subject:   Re: Any objections/comments on axing out old ATA stack?
Message-ID:  <20130421113220.GA34734@icarus.home.lan>
In-Reply-To: <5173C948.1010906@FreeBSD.org>
References:  <C699FE76-B456-49C7-8D3A-DD54F98DAFC1@samsco.org> <515B25D8.7050902@FreeBSD.org> <515BF5AE.4050804@FreeBSD.org> <515CAA04.1050108@FreeBSD.org> <20130403233815.GA65719@icarus.home.lan> <515CC704.90302@FreeBSD.org> <20130404010526.GA66858@icarus.home.lan> <515D3312.3010109@FreeBSD.org> <20130420212957.GA19158@icarus.home.lan> <5173C948.1010906@FreeBSD.org>

next in thread | previous in thread | raw e-mail | index | archive | help
On Sun, Apr 21, 2013 at 02:11:04PM +0300, Alexander Motin wrote:
> On 21.04.2013 00:29, Jeremy Chadwick wrote:
> >- The ATA commands which lead up to the error also vary.  Many are for
> >   write requests, and from some entries I can see that the OS was doing
> >   NCQ writes (WRITE FPDMA QUEUED) and then suddenly decided to do a
> >   classic 28-bit LBA write (WRITE DMA).  I'm not sure why an OS would do
> >   this (there's nothing optimal about it) unless there were conditions
> >   occurring where the OS/ATA driver said "this NCQ write isn't working
> >   (timeout, etc.), let me retry with a classic 28-bit LBA write".
> 
> ATA disk driver in CAM inserts non-queued command every several
> seconds of continuous load to limit possible command starvation
> inside the disk. SCSI driver does alike things, but inserts ordered
> command flag, that does not exist in SATA, instead of different
> command.

Thanks for the insights Alexander, greatly appreciated.

I'm a little confused by your description, because if I'm reading it
right, it sounds like it conflicts with what the ACS-2 spec states.
Quoting T13/2015-D rev 3 (I'm aware it's a working draft), section
4.16.1:

"If the device receives a command that is not an NCQ command while NCQ
commands are in the queue, then the device shall return command aborted
for the new command and for all of the NCQ commands that are in the
queue."

I assume this means ABRT status is returned to the host controller; if
so (and by design of course), how do we differentiate between that
condition and any other I/O condition that induces ABRT?

Possibly in the answer is in this admission: I should probably get
around to reading ATA8-AST sometime.  :-)

-- 
| Jeremy Chadwick                                   jdc@koitsu.org |
| UNIX Systems Administrator                http://jdc.koitsu.org/ |
| Mountain View, CA, US                                            |
| Making life hard for others since 1977.             PGP 4BD6C0CB |



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20130421113220.GA34734>