All of lore.kernel.org
 help / color / mirror / Atom feed
From: James Bottomley <James.Bottomley@SteelEye.com>
To: Luben Tuikov <luben_tuikov@adaptec.com>
Cc: Jeff Garzik <jgarzik@pobox.com>, linux-scsi@vger.kernel.org
Subject: Re: [patch 0/6] marginalize HCIL a bit
Date: Mon, 24 Oct 2005 15:28:08 -0500	[thread overview]
Message-ID: <1130185688.3325.88.camel@mulgrave> (raw)
In-Reply-To: <435D176E.5000201@adaptec.com>

On Mon, 2005-10-24 at 13:18 -0400, Luben Tuikov wrote:
> >>All of this functionality and infrastructure is present in the
> >>SAS Stack and could be taken almost as is.
> > 
> > 
> > Amazingly enough, it's also already present in the transport classes
> > (see vanilla linux kernel source code).
> 
> 1. What are we talking about here?
> 2. File location, name and line please.  Thank you.

The best commented file is scsi_transport_spi.c; you can see how it adds
spi specific pieces to the scsi_target structure using the generic
transport class capabilities.

> > If you look at your domain device with all the sas pieces removed,
> > you'll see that scsi_target actually covers all the remaining bits
> > (there are one or two pieces covered by struct generic_device which you
> > have to have extra components for because you implemented kobjects
> > instead of a generic device).
> 
> And there is a reason for this: domain devices are NOT and WILL NEVER
> BE "generic device".  Domain device representations exist only in
> the Transport Layer.  What you seem to suggest with your "transport
> attributes" is this "appendages-modules" which intersperse everywhere
> in SCSI Core and LLDD like octopus's arms.  See USB Storage and SBP.

I think you don't quite understand what a generic device is:  It's a
structure which is embedded within other structures, exactly like a
kobject.  The reason for using generic devices instead of kobjects is
that they provide a wider range of useful functionality.

> > scsi_target contains a variable space for
> > the transport classes to use for their transport specific pieces (which
> > is where you could have put all the sas specific bits).
> 
> Absolutely NOT.  Those "transport specific pieces" should be completely
> OPAQUE to SCSI Core -- as you saw in my previous email, the
> "transport specific pieces" as you called them were 
> "void *domain_device;  /* opaque to SCSI Core */".

They *are* opaque to the scsi mid-layer.  Refer to the code in the
vanilla kernel.

> I guess the proper question to ask now is: "Can you envision it?"
> 
> > The only real difference is that under the current infrastructure scsi
> > targets aren't designed to stack.  Realistically, the way you have it
> > implemented, you have several different devices lumped into your domain
> > device (end, edge, fanout, sata) with different initialisations and
> 
> 1. How this is implemented is Layer dependent (USB/SBP/FC/SAS/iSCSI/etc).
> 2. A struct domain_device can be _only_ one of end/edge/fanout/sata/etc,
>    and only one of those.
> Only devices which _make_sense_ to SCSI Core are registered with SCSI Core,
> i.e. end devices.  Other type of devices (e.g. expanders) that are
> NOT SCSI devices are not registered with SCSI Core, neither should they
> be visible anywhere outside of the respective Layer (SAS in this case).

That *is* how the transport classes work.  The obvious example being a
FC rport which has no existence outside of the FC transport class and is
not understood at all by the mid-layer.  Refer to the code in the
vanilla kernel.

James



  reply	other threads:[~2005-10-24 20:28 UTC|newest]

Thread overview: 24+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2005-10-23  1:36 [patch 0/6] marginalize HCIL a bit Jeff Garzik
2005-10-23  1:37 ` [patch 1/6] SCSI HCIL: s/scsi_scan_target/spi_scan_target/ Jeff Garzik
2005-10-23  1:38 ` [patch 2/6] SCSI HCIL: remove unused scsi_scan_single_target() Jeff Garzik
2005-10-23  1:53   ` Matthew Wilcox
2005-10-23  1:38 ` [patch 3/6] SCSI HCIL: add scsi_scan_target() Jeff Garzik
2005-10-23  1:50   ` Matthew Wilcox
2005-10-23  1:54     ` Jeff Garzik
2005-10-23  2:00       ` Matthew Wilcox
2005-10-23  2:42         ` Jeff Garzik
2005-10-23  2:26     ` Randy.Dunlap
2005-10-23  1:40 ` [patch 4/6] SCSI HCIL: kill all uses of spi_scan_target() Jeff Garzik
2005-10-23  1:56   ` Matthew Wilcox
2005-10-23  1:40 ` [patch 5/6] SCSI HCIL: kill spi_scan_target(), __spi_scan_target() Jeff Garzik
2005-10-23  1:41 ` [patch 6/6] SCSI HCIL: misc cleanups Jeff Garzik
2005-10-23  2:03   ` Matthew Wilcox
2005-10-23  1:45 ` [patch 0/6] marginalize HCIL a bit Jeff Garzik
2005-10-23 15:29 ` James Bottomley
2005-10-24 15:49   ` Luben Tuikov
2005-10-24 16:50     ` James Bottomley
2005-10-24 17:18       ` Luben Tuikov
2005-10-24 20:28         ` James Bottomley [this message]
2005-10-24 20:41           ` Luben Tuikov
2005-10-24 21:12             ` James Bottomley
2005-10-24 22:38               ` Luben Tuikov

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=1130185688.3325.88.camel@mulgrave \
    --to=james.bottomley@steeleye.com \
    --cc=jgarzik@pobox.com \
    --cc=linux-scsi@vger.kernel.org \
    --cc=luben_tuikov@adaptec.com \
    /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.