Thread (24 messages) 24 messages, 3 authors, 2015-08-03

Re: [PATCH 1/6] libata: Do not retry commands with valid autosense

From: James Bottomley <James.Bottomley@HansenPartnership.com>
Date: 2015-08-03 15:42:43
Also in: linux-scsi

On Mon, 2015-08-03 at 11:18 -0400, Tejun Heo wrote:
Adding a bit.

On Mon, Aug 03, 2015 at 11:04:28AM -0400, Tejun Heo wrote:
quoted
Ugh... so this is from NCQ autosense thing.  Now ATA devices reports
sense data too which trumps AC_ERR_DEV so libata EH decides to retry
even when the device indicates unrecoverable error.  Urgh... we
shouldn't be taking completely different error handling paths because
a device chooses to report error conditions slightly differently.
Please map them so that they behave in a consistent manner.  I'm gonna
plug autosense for now.
Also, is there anything substantial we gain from NCQ autosense?  Why
do we want this in the first place?  ATA error reporting is
rudimentary but it more or less works and I'm not sure whether we'd
want to overhaul its basic behaviors at this stage.
I'd think it would be the same reason as all modern transports: it's
faster and allows processing of sense data in-band.  Under the old
regime, the device is effectively frozen until you collect the data.
Under autosense, the data is collected as part of the in-band command
processing, so it doesn't stall the device.

Modern drives (and protocols) are moving towards being somewhat more
chatty with sense data.  It doesn't just signal an error, mostly it's
just reporting about drive characteristics or other advisory stuff.
This means that if you handle it the old way, you'll get more drive
stalls and a corresponding reduction in throughput.

James


Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help