old-EH and SAS (was Re: [PATCH 2/2] block: add function for waiting for a specific free tag)

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

 




(changing subject...)

there won't be any race around it (the old-EH path is broken if
invoked with commands in flight anyway, so doesn't matter).  Also, as

Speaking of the old-EH... as of 67651ee5710c45ea62fae68b768d65395ccf47c2 there are no drivers/ata/* drivers remaining that use old-EH.

old-EH now exists _entirely_ for a couple SAS drivers, and it is an ugly hack, so I wanted to take a moment to think about SAS, SATA, and SATA+SAS error handling.

The currently we have a few distinct phy+link configurations that EH must deal with, and each requires its own implementation (this ignores legacy SFF and other non-phy topologies):

1) SATA PHY. This is what libata EH handles now: direct control over SATA PHY and link.

2) SAS+SATA PHY. Essentially a super-set of #1, this includes nested expander configurations, direct attachment of SAS or SATA, etc. Uses libsas.

3) SAS+SATA firmware.  Not quite as "low level" as #2, does not use libsas.

Each one of these clearly should use the same code for configuring and managing ATA devices, including per-device EH.

Move up to the link level, and things start to get ugly.

_Ideally_, libsas should take over all of link exception handling from libata, except for the final-link PMP handling. In reality, I think we will have to deal with libsas doing 100% of link EH including PMP handling, and libata will continue to perform link EH w/ PMP for !libsas hardware.

The integration of discovery is pretty poor -- you wind up with one glob of SATA devices and another glob of SCSI devices, with two separate EH+scan processes. Ideally libsas should tell libata to scan a single SATA phy, and handle parallelism/exclusion in libsas for SATA+SAS configurations.

Brian King did a new-EH conversion for ipr, some time ago. Maybe that work could be picked up, extended to libsas, and permit removal of all the old-EH code remaining in libata.

Maybe I should s/eng_timeout/sas_timeout/ to emphasize the current state of code ;-)

	Jeff




--
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