Re: libata-eh/pmp command sequence on NCQ media error

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Mark Lord wrote:
Tejun Heo wrote:
Mark Lord wrote:
So why are we taking a hammer to things there?

Hmmm... The reset action might be too heavy handed but maybe keeping that categorized as ATA bus error is still a good idea so that multiple errors w/ that bit set can trigger speed down.

FWIW, this patch fixes it for me (and fixes a misleading printk).
Or I could just clear that bit from sata_mv before invoking EH.
(??)

Does the bit get set for the host link or pmp fanout links?
It's only on the pmp fanout link. Dunno why it gets set, but it does.
..

Oh, wait a sec.. I think I know what's going on.
We're back to the original problem in this thread again:

Mark Lord wrote:
With no port-multiplier attached, a media error during NCQ
results in an immediate READ_LOG_EXT_10H to retrieve the
task file for the failed I/O.

With a port-multiplier, there is instead a flurry of sata_pmp_read()
attempts.  I'm guessing that the READ_LOG_EXT_10H would normally
then follow those ?

The problem is, on most of the Marvell chips, non-data commands
cannot succeed after any kind of error (until after the port is reset),
so they fail, and we never then get to the READ_LOG_EXT_10H stage.
Oddly, the READ_LOG_EXT_10H command itself is okay (with some errata
goodness tossed in).

So, for sata_mv at least, I'd kinda like to have libata-eh attempt
the READ_LOG_EXT_10H before it tries to (unsuccessfully) access the
per-port SCRs on the PMP.
..

So what is happening now, is that libata-eh is going and attempting
to access the per-port SCRs *after* the READ_LOG_EXT commands.
And those per-port SCRs are not actually accessible:  the shadow
registers are misbehaving -- known errata -- and cannot be accurately
used without a port reset.

Mmm.. gotta figure out a way to mark the port for RESET,
without having that action taint the commands already analyzed.

I suppose I'll have to just clone some code from libata-eh to
do the READ_LOG_EXT and then qc_complete() those commands
before continuing.  Or something.

???
--
To unsubscribe from this list: send the line "unsubscribe linux-ide" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html

[Index of Archives]     [Linux Filesystems]     [Linux SCSI]     [Linux RAID]     [Git]     [Kernel Newbies]     [Linux Newbie]     [Security]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Samba]     [Device Mapper]

  Powered by Linux