All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH 0/2] convert libsas to the libata new eh
@ 2011-01-23 15:41 James Bottomley
  2011-01-23 15:42 ` [PATCH 1/2] libata: separate error handler into usable components James Bottomley
                   ` (4 more replies)
  0 siblings, 5 replies; 12+ messages in thread
From: James Bottomley @ 2011-01-23 15:41 UTC (permalink / raw)
  To: linux-scsi, linux-ide; +Cc: Brian King, Robert Jennings

The bad news is that this is a pretty horrific conversion.  Because of
the amount of control the new eh wants (and the slew of monolithic
assumptions it makes), the entire error handler routine has to be sliced
apart and sewn back together to make it callable as part of an existing
error handler (rather than trying to do everything on its own).

The even worse news is that unless you have an existing strategy
handler, you can't make use of this.  That means that ipr is
unconvertable in its current form.  Given the two really nasty options:
give ipr its own error handler via its own transport class, or attach
ipr to libsas and let it do the work, I'd choose the latter.
Unfortunately, my power box with IPR has been non-functional for a year
(and all pleas to IBM to fix it have so far gone unanswered), so I can't
really do this myself.

Once we carve up libata, it's still a rather complex call sequence for
libsas because of libata's annoying insistance on calling the error
handler at the drop of a hat.  The principle differentiator used is the
fact that if a SCSI command no longer has an associated SAS task, (i.e.
libsas thinks it's complete) it must be destined for libata.  This works
correctly in all the ATAPI sense processing instances I've tested.
Finally, we still have to call port recovery.  Currently, it's
impossible to tell which port libata thinks is in error (libata knows
because it has one host per port, but libsas doesn't), so the final
solution is just to call port recovery for every SATA/STP attached port.

I've tested all of this with mvsas over expander attached ATA devices
using STP (aic94xx seems to have developed some handling fault for STP,
which I'll look into next).

James

---

James Bottomley (2):
  libata: separate error handler into usable components
  libsas: convert to libata new error handler

 drivers/ata/libata-eh.c             |   53 ++++++++++++++++++----
 drivers/scsi/libsas/sas_ata.c       |   87 ++++++++++++++++++++++++++++++++--
 drivers/scsi/libsas/sas_scsi_host.c |   14 +++++-
 include/linux/libata.h              |    2 +
 include/scsi/sas_ata.h              |   22 +++++++++
 5 files changed, 161 insertions(+), 17 deletions(-)



^ permalink raw reply	[flat|nested] 12+ messages in thread

end of thread, other threads:[~2011-02-15 14:15 UTC | newest]

Thread overview: 12+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2011-01-23 15:41 [PATCH 0/2] convert libsas to the libata new eh James Bottomley
2011-01-23 15:42 ` [PATCH 1/2] libata: separate error handler into usable components James Bottomley
2011-01-23 15:44 ` [PATCH 2/2] libsas: convert to libata new error handler James Bottomley
2011-01-24 21:12 ` [PATCH 0/2] convert libsas to the libata new eh Jeff Garzik
2011-01-24 21:16   ` James Bottomley
2011-01-25 18:56 ` Brian King
2011-01-26 14:08   ` James Bottomley
2011-01-26 17:46     ` Jeff Garzik
2011-01-26 17:55       ` James Bottomley
2011-02-13 19:18 ` James Bottomley
2011-02-15  7:03   ` Jeff Garzik
2011-02-15 14:15     ` James Bottomley

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.