* old-EH and SAS (was Re: [PATCH 2/2] block: add function for waiting for a specific free tag)
[not found] ` <4A13EFBC.4010005@gmail.com>
@ 2009-05-20 19:34 ` Jeff Garzik
2009-05-21 16:34 ` Brian King
0 siblings, 1 reply; 2+ messages in thread
From: Jeff Garzik @ 2009-05-20 19:34 UTC (permalink / raw)
To: Tejun Heo; +Cc: Jens Axboe, linux-ide, Brian King, linux-scsi
(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
^ permalink raw reply [flat|nested] 2+ messages in thread
* Re: old-EH and SAS (was Re: [PATCH 2/2] block: add function for waiting for a specific free tag)
2009-05-20 19:34 ` old-EH and SAS (was Re: [PATCH 2/2] block: add function for waiting for a specific free tag) Jeff Garzik
@ 2009-05-21 16:34 ` Brian King
0 siblings, 0 replies; 2+ messages in thread
From: Brian King @ 2009-05-21 16:34 UTC (permalink / raw)
To: Jeff Garzik; +Cc: Tejun Heo, Jens Axboe, linux-ide, linux-scsi
Jeff Garzik wrote:
> 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.
There are a couple different ways to accomplish this, and they relate to
how many scsi hosts we end up using for a single SAS HBA.
Single scsi_host solution
This solution really requires libata to more or less stop using scsi core.
At the very least the concept of it "owning" the scsi host must go away.
Additionally, as far as EH goes, quiescing the entire scsi host each time
we want to do some exception handling for a SATA device kills the performance
of the SAS devices on the HBA, so we would need to have a better layered
EH that only quiesced what needs to be quiesced and then called out to
different pluggable EH handling routines.
Multiple scsi_host solution
This is what my patch to ipr did. It was the path of least resistance at
the time and worked reasonably well for ipr, but may not have been the
best solution for libsas without further enhancements. In this solution,
there is a scsi_host for each ATA port found on the SAS fabric. This
allows most of the existing libata code to simply work with minimal changes.
The biggest issue with this approach is we lose adapter queue depth tracking.
We really would need queue groups or some similar solution in order for this
to work for libsas.
-Brian
--
Brian King
Linux on Power Virtualization
IBM Linux Technology Center
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2009-05-21 16:34 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
[not found] <20090520065942.GD11363@kernel.dk>
[not found] ` <20090520070104.GF11363@kernel.dk>
[not found] ` <4A13EFBC.4010005@gmail.com>
2009-05-20 19:34 ` old-EH and SAS (was Re: [PATCH 2/2] block: add function for waiting for a specific free tag) Jeff Garzik
2009-05-21 16:34 ` Brian King
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).