public inbox for linux-scsi@vger.kernel.org
 help / color / mirror / Atom feed
From: James Bottomley <James.Bottomley@HansenPartnership.com>
To: Kay Sievers <kay.sievers@vrfy.org>
Cc: Greg KH <greg@kroah.com>,
	linux-scsi@vger.kernel.org, Tony Jones <tonyj@suse.de>
Subject: Re: [patch] convert the scsi layer to use struct device
Date: Sat, 15 Mar 2008 14:33:38 -0500	[thread overview]
Message-ID: <1205609618.6767.63.camel@localhost.localdomain> (raw)
In-Reply-To: <1205607366.3109.166.camel@lov.site>

On Sat, 2008-03-15 at 19:56 +0100, Kay Sievers wrote:
> On Sat, 2008-03-15 at 13:31 -0500, James Bottomley wrote:
> > On Sat, 2008-03-15 at 19:04 +0100, Kay Sievers wrote:
> > > On Sat, 2008-03-15 at 11:16 -0500, James Bottomley wrote:
> > > > > We just need to create something like a "contains" link from the
> > > > > component to the scsi device, and a "enclosure" link at the scsi device
> > > > > back to the component, right?
> > > > 
> > > > Assuming you're moving to the single tree model, then I can easily do
> > > > this:
> > > > 
> > > > <real enclosure device>/<enclosure>/<enclosure component>/device -> link
> > > > to component device
> > > 
> > > Yes, sounds good. Only that there will be no meaningful "device" link
> > > with !SYSFS_DEPRECATED, we need a custom link, maintained by the
> > > enclosure itself, to do that.
> > > 
> > > > with a back link in the component device pointing to the enclosure
> > > > component.
> > > 
> > > That sounds fine.
> > > 
> > > > The way components work, probably blowing away enclosure_component_class
> > > > makes the most sense anyway.
> > > 
> > > If we go for a single class, can't we express enclosures and components
> > > in the device name and put them in the same class like:
> > > /sys/class/enclosure/
> > > |- enclosure1 -> ../../../devices/<...>/enclosure1
> > > |- enclosure1.slot1 -> ../../../../devices/<...>/enclosure1/enclosure1.slot1
> > > |- enclosure1.slot2 -> ../../../../devices/<...>/enclosure1/enclosure1.slot2
> > > |- enclosure2 -> ../../../devices/<...>/enclosure2
> > > |- enclosure2.slot1 -> -> ../../../../devices/<...>/enclosure1/enclosure2.slot1
> > > ...
> > >  
> > > while /sys/devices/<...>/enclosure1/enclosure1.slot1/ has a something
> > > like a "contains" link pointing to the SCSI device, and the SCSI device
> > > an "enclosure" link back?
> > 
> > OK, I've got a two expander system with six slots each pretending to be
> > a twelve slot installation.  I've also got two slots populated (slot 1
> > and 6).  This is what it looks like with the deprecated setting:
> > 
> > sparkweed:/sys/class/enclosure# tree
> > .
> > |-- 0:0:1:0
> > |   |-- SLOT 006
> > |   |   |-- active
> > |   |   |-- device -> ../../../../devices/pci0000:01/0000:01:02.0/host0/port-0:0/expander-0:0/port-0:0:0/end_device-0:0:0/target0:0:0/0:0:0:0
> > |   |   |-- fault
> > |   |   |-- locate
> > |   |   |-- power
> > |   |   |   `-- wakeup
> > |   |   |-- status
> > |   |   |-- type
> > |   |   `-- uevent
> 
> The components are not assigned to any subsystem. Userspace will not see
> any event for these devices, which might not be nice. Is that expected
> behavior?

Hmm, I suppose they might.  Failure of an enclosure bay is most likely a
failure of the device in that bay, but it could be for some other
reason, I suppose.

> If you assign them to the enclosure class, the device name would need
> the enclosure name prefixed, because they are not unique across
> different enclosures, right?

They can't be assigned to the enclosure class otherwise they'd get the
enclosure class interface, which is wrong for components.

> ...
> 
> > |   |-- SLOT 011
> > |   |   |-- active
> > |   |   |-- fault
> > |   |   |-- locate
> > |   |   |-- power
> > |   |   |   `-- wakeup
> > |   |   |-- status
> > |   |   |-- type
> > |   |   `-- uevent
> > |   |-- components
> > |   |-- device -> ../../../devices/pci0000:01/0000:01:02.0/host0/port-0:0/expander-0:0/port-0:0:12/end_device-0:0:12/target0:0:1/0:0:1:0
> 
> Oh, interesting, can the parent for a whole enclosure be a SCSI LUN? Is
> that because the expander _is_ a LUN itself?

In this case, it is; but it's actually worse than that: the enclosure
spec allows the enclosure device to be embedded in a LUN (i.e. a LUN
responds as a SCSI disk but also responds to enclosure commands).
That's why the ses driver has to bind like SG.

> ...
> 
> > So are we now all happy?
> 
> If we don't need uevents for components, and no directory in /sys/class/
> which lists all enclosure components for easy finding them. And if we
> never want to send things link "change" events to userspace from an
> enclosure component, that should be ok. And we can be happy, yes. :)

It would be nice, but then we run into the enumeration problem again.
The names are taken from the actual enclosure information and are only
guaranteed unique per enclosure.  I could make up unique names, but then
they wouldn't correspond with the actual names printed on the enclosure.

> I still slightly prefer cross link-names between the component and the
> LUN like "contains" -> and "enclosure" ->, but the current one should
> work too.

OK.

James


--
To unsubscribe from this list: send the line "unsubscribe linux-scsi" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

  reply	other threads:[~2008-03-15 19:33 UTC|newest]

Thread overview: 27+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2008-03-13 21:06 [patch] convert the scsi layer to use struct device Greg KH
2008-03-14 14:13 ` Hannes Reinecke
2008-03-14 17:15 ` James Bottomley
2008-03-14 21:20   ` James Bottomley
2008-03-14 21:58     ` Kay Sievers
2008-03-15 14:19       ` James Bottomley
2008-03-15 15:17         ` Kay Sievers
2008-03-15 16:16           ` James Bottomley
2008-03-15 18:01             ` James Bottomley
2008-03-15 18:26               ` Kay Sievers
2008-03-15 18:34                 ` James Bottomley
2008-03-15 20:38                   ` Stefan Richter
2008-03-15 18:04             ` Kay Sievers
2008-03-15 18:31               ` James Bottomley
2008-03-15 18:56                 ` Kay Sievers
2008-03-15 19:33                   ` James Bottomley [this message]
2008-03-15 19:43                     ` Kay Sievers
2008-03-16 20:21               ` James Smart
2008-03-16 21:04                 ` Kay Sievers
2008-03-17  4:15                   ` James Smart
2008-03-17  5:35                     ` Greg KH
2008-03-17 12:18                       ` James Smart
2008-03-17 13:40                         ` Kay Sievers
2008-03-17 13:55                           ` James Bottomley
2008-03-17 17:57   ` James Bottomley
2008-03-19  0:48     ` Greg KH
2008-03-19 20:38       ` James Bottomley

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=1205609618.6767.63.camel@localhost.localdomain \
    --to=james.bottomley@hansenpartnership.com \
    --cc=greg@kroah.com \
    --cc=kay.sievers@vrfy.org \
    --cc=linux-scsi@vger.kernel.org \
    --cc=tonyj@suse.de \
    /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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox