All of lore.kernel.org
 help / color / mirror / Atom feed
From: Tejun Heo <htejun@gmail.com>
To: brking@linux.vnet.ibm.com
Cc: jeff@garzik.org, alan@lxorguk.ukuu.org.uk, linux-ide@vger.kernel.org
Subject: Re: [PATCH 03/12] libata: separate out ata_host_alloc() and ata_host_attach()
Date: Wed, 14 Mar 2007 13:48:51 +0900	[thread overview]
Message-ID: <45F77EB3.5000108@gmail.com> (raw)
In-Reply-To: <45F72706.7070606@linux.vnet.ibm.com>

Hello, Brian.

Brian King wrote:
> Tejun Heo wrote:
>> Association to SCSI host is done via pointer now even for native ATA
>> case, so this should be easier for SAS.  What I'm worried about is how
>> EH gets invoked.  libata depends on EH to do a lot of things including
>> probing, requesting sense data, etc.  How should this work?
> 
> For SAS, the scsi_host pointer in the ata port is NULL today, since libata
> is really not managing the scsi host, the LLDD is. I think the initialization
> model we want for SAS is a little different than the one you are heading
> towards on SATA. For SAS, I think we just want to be able to alloc/init
> and delete/destroy a SATA device a they show up on the transport,
> without tying it to initialization of the ata host. And this set of
> patches doesn't necessarily prevent that...

Yeap, I tried to keep SAS bridge functions working.  If SAS doesn't need 
the host abstraction and wanna do stuff per-port basis, ata_port_alloc() 
can be directly exported and separating out per-port register routine 
shouldn't be too difficult, but I do think it would still be beneficial 
to have ata_host structure in SAS case too for code simplicity if not 
for anything else.

>> SAS attached libata port shares EH with the SAS SCSI host, right?  How can
> 
> Right.
> 
>> we connect SAS EH with libata EH and would it be okay for libata EH hold
>> the SCSI EH (thus holding all command execution on the host) to handle
>> ATA exceptions?
> 
> Currently, ipr calls ata_do_eh from its eh_device_reset_handler function.
> This seems to work well enough with the testing that I've done, but it
> would certainly be nice to get to a more layered EH approach, where we
> could possibly have pluggable error handlers for different device types.

That's an unexpected usage of ata_do_eh() but I can see how that works 
and using ata_do_eh() for that purpose actually makes sense.  Most SCSI 
related dancing is done before and after ata_do_eh() and ata_do_eh() 
only deals with ATA qc's (except for scsi_eh_finish_cmd() called to 
finish failed qc's but these are still for only scmds associated with qcs).

In the future, we might need to separate those direct 
scsi_eh_finish_cmd() calls out of ata_do_eh() so that ata_do_eh() really 
deals with libata qc proper but that change shouldn't be too difficult 
for SAS.

> Regarding holding all command execution on the host while performing eh,
> that doesn't seem to be a huge issue from my perspective, not sure if
> this would have a larger negative impact on others... Generally speaking,
> we shouldn't be entering eh very often, and it should only be happening
> if something went wrong. The biggest issue here might be ATAPI devices,
> since they tend to report more errors during normal running. The request
> sense for these devices for SAS is done without entering eh today. Would
> you want to move this into eh as well?

No, not for SAS.  The reasons why I put sense requesting to EH were...

1. to make fast path code straight forward (no qc reusing dance)

2. in native ATA, we have per-port EH thread so sharing is not a problem.

As #2 is not true in SAS case, I think keeping sense requesting out of 
EH is the right thing to do here.  I still think that it's much 
simpler/reliable to handle any exception case in a separate thread.  I 
think this in the long term should be solved by making EH per-request 
queue (we of course will need mechanism to synchronize several EHs so 
that we can take host-wide EH actions).

Thanks.

-- 
tejun

  reply	other threads:[~2007-03-14  4:48 UTC|newest]

Thread overview: 27+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2007-03-09 11:15 [PATCHSET] libata: implement new initialization model, take #3 Tejun Heo
2007-03-09 11:15 ` [PATCH 01/12] libata: allocate ap separately from shost Tejun Heo
2007-03-09 15:00   ` Jeff Garzik
2007-03-09 11:15 ` [PATCH 04/12] libata: implement ata_host_alloc_pinfo() and ata_host_attach() Tejun Heo
2007-03-09 16:08   ` Jeff Garzik
2007-03-09 11:15 ` [PATCH 05/12] libata: convert legacy PCI host handling to new init model Tejun Heo
2007-03-09 17:46   ` Jeff Garzik
2007-03-09 11:15 ` [PATCH 03/12] libata: separate out ata_host_alloc() and ata_host_attach() Tejun Heo
2007-03-09 15:34   ` Jeff Garzik
2007-03-12 22:25   ` Brian King
2007-03-13  6:06     ` Tejun Heo
2007-03-13 22:34       ` Brian King
2007-03-14  4:48         ` Tejun Heo [this message]
2007-03-14 15:25           ` Brian King
2007-03-09 11:15 ` [PATCH 02/12] libata: separate out ata_host_start() Tejun Heo
2007-03-09 11:15 ` [PATCH 06/12] libata: convert native PCI host handling to new init model Tejun Heo
2007-03-09 15:45   ` Jeff Garzik
2007-03-09 11:15 ` [PATCH 07/12] libata: add init helpers including ata_pci_prepare_native_host() Tejun Heo
2007-03-09 11:15 ` [PATCH 10/12] libata: convert the remaining SATA drivers to new init model Tejun Heo
2007-03-09 11:15 ` [PATCH 09/12] libata: convert ata_pci_init_native_mode() users " Tejun Heo
2007-03-09 11:15 ` [PATCH 11/12] libata: convert the remaining PATA drivers " Tejun Heo
2007-03-09 12:49   ` Alan Cox
2007-03-09 11:15 ` [PATCH 12/12] libata: kill probe_ent and related helpers Tejun Heo
2007-03-09 11:15 ` [PATCH 08/12] libata: convert drivers with combined SATA/PATA ports to new init model Tejun Heo
2007-03-09 12:46   ` Alan Cox
2007-03-09 11:55     ` Jeff Garzik
2007-03-09 13:04       ` Tejun Heo

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=45F77EB3.5000108@gmail.com \
    --to=htejun@gmail.com \
    --cc=alan@lxorguk.ukuu.org.uk \
    --cc=brking@linux.vnet.ibm.com \
    --cc=jeff@garzik.org \
    --cc=linux-ide@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
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.