From: Stefan Richter <stefanr@s5r6.in-berlin.de>
To: ltuikov@yahoo.com
Cc: Swen Schillig <swen@vnet.ibm.com>, Hannes Reinecke <hare@suse.de>,
James Bottomley <James.Bottomley@steeleye.com>,
Mike Anderson <andmike@us.ibm.com>,
Christof Schmitt <christof.schmitt@de.ibm.com>,
linux-scsi@vger.kernel.org
Subject: Re: [PATCH] zfcp: Report FCP LUN to SCSI midlayer
Date: Thu, 28 Jun 2007 17:40:59 +0200 [thread overview]
Message-ID: <4683D68B.5080702@s5r6.in-berlin.de> (raw)
In-Reply-To: <419361.83440.qm@web31812.mail.mud.yahoo.com>
Luben Tuikov wrote:
> In fact, I'd do
> typedef __u8 lun_t[8];
> and then define the macro
> #define LUN_TO_U64(_lun) ((unsigned long long) be64_to_cpu(*(__be64 *)(_lun)))
Don't forget __attribute__((aligned(8))) on lun_t then. Some
architectures need it.
The macro should perhaps be called LUN_TO_ULL, as there is also an u64
type in the kernel.
> This way one could do stuff like:*
> printk(KERN_NOTICE "problem xyz with LUN:%016llx\n", LUN_TO_U64(sdev->LUN));
How about:
union scsi_lun {
__u8 lun[8];
__be64 lun64;
__be16 lun16;
};
This will also be sufficiently aligned.
[...]
> * It is in fact more correct to do, at the _transport_ layer:
>
> printk(... "problem xyz with %016llx:%016llx\n",
> sdev->target->tpid, sdev->LUN);
>
> Here, it is explicitly shown that sdev (/dev/sdXYZ) is a child of
> a target, having a tpid attribute, and the sdev has a property
> of lun_t called LUN.
>
> So, for example, for SAS, the message would print like this:
>
> problem xyz with 5000a50000f13427:0000000000000000
>
> which uniquely identifies the device and then the sysadmin
> can go to the storage farm, find it and replace it if need be.
There are two things to consider:
- Is ->target representing a Target Device? Then it could have more
than one port, each one with a different identifier. Or is it
representing a Target Port? Or is it representing a Target Device
with the twist that we instantiate as many ->target objects as the
device is showing ports to us?
- If the identifier is stored in ->target, and is an object known to
mid-layer, then we need a datatype for ->target->tpid which is
flexible enough for all flavors of TPID.
So, if tpid ends up in objects seen by mid-layer, the datatype of ->tpid
could be either
__u8 target_port_identifier[233]; /* enough for all */
or
__u8 target_port_identifier[0]; /* variable length */
or
struct scsi_target_port_identifier {
enum transport_protocol {
SCSI_TRANSPORT_UNKNOWN = 0,
SCSI_TRANSPORT_SPI,
SCSI_TRANSPORT_FCP,
SCSI_TRANSPORT_SRP,
SCSI_TRANSPORT_ISCSI,
SCSI_TRANSPORT_SBP,
SCSI_TRANSPORT_SAS,
} format;
union {
unsigned spi_tpid:4;
__u8 fcp_tpid[3]; /* or __be32 fcp_tpid:24; ? */
struct {
__be64 eui64;
__be64 extension;
} srp_tpid;
struct {
__u8 name[224];
__32 tpgt;
} iscsi_tpid;
struct {
__be64 eui64;
__be32 directory_id:24;
/* SAM calls this mistakenly "Discovery ID" */
} sbp_tpid;
__be64 sas_tpid;
} value;
};
or something else.
The former two require that print functions reside in transport layer
implementations. Note, the transport layer can easily make these print
functions available to mid-layer so that mid-layer can print TPIDs too,
without knowing what's in a TPID. I.e. transport layer hands out string
representations of TPIDs to mid-layer.
The third variant allows to put the print function into mid-layer.
Before you call it a heresy: SAM says how many bits or bytes are in the
identifiers, hence a generic SAM implementation can know how to print
them. It only doesn't know how the values get in there.
PS: Sorry that I continue to drag TPID into the discussion about LUN,
but in the end you need both to identify hardware.
--
Stefan Richter
-=====-=-=== -==- ===--
http://arcgraph.de/sr/
next prev parent reply other threads:[~2007-06-28 15:41 UTC|newest]
Thread overview: 43+ messages / expand[flat|nested] mbox.gz Atom feed top
2007-06-19 8:25 [PATCH] zfcp: Report FCP LUN to SCSI midlayer Swen Schillig
2007-06-19 8:28 ` Hannes Reinecke
2007-06-19 12:19 ` Stefan Richter
2007-06-19 17:12 ` Christoph Hellwig
2007-06-20 2:46 ` James Bottomley
2007-06-21 15:03 ` Christof Schmitt
2007-06-21 16:46 ` Stefan Richter
2007-06-21 16:54 ` Stefan Richter
2007-06-22 1:41 ` James Bottomley
2007-06-22 19:01 ` Stefan Richter
2007-06-21 20:58 ` James Bottomley
2007-06-22 4:40 ` Mike Anderson
2007-06-22 11:34 ` Christof Schmitt
2007-06-22 14:11 ` James Bottomley
2007-06-22 16:16 ` Doug Maxey
2007-06-25 20:43 ` Luben Tuikov
2007-06-25 22:53 ` Stefan Richter
2007-06-25 10:39 ` Swen Schillig
2007-06-25 14:03 ` Hannes Reinecke
2007-06-25 18:57 ` Stefan Richter
2007-06-25 21:27 ` Luben Tuikov
2007-06-25 21:55 ` Stefan Richter
2007-06-26 0:35 ` Luben Tuikov
2007-06-26 21:29 ` Matthew Wilcox
2007-06-25 21:48 ` James Bottomley
2007-06-25 22:27 ` Stefan Richter
2007-06-26 1:04 ` Luben Tuikov
2007-06-26 10:44 ` Stefan Richter
2007-06-26 14:20 ` James Bottomley
2007-06-26 15:47 ` Stefan Richter
2007-06-26 17:01 ` James Bottomley
2007-06-27 0:27 ` Stefan Richter
2007-06-27 0:45 ` [PATCH] SCSI: delete outdated comment in API reference Stefan Richter
2007-06-26 0:49 ` [PATCH] zfcp: Report FCP LUN to SCSI midlayer Luben Tuikov
2007-06-26 9:38 ` Stefan Richter
2007-06-27 10:27 ` Swen Schillig
2007-06-28 4:21 ` Luben Tuikov
2007-06-28 15:40 ` Stefan Richter [this message]
2007-06-30 19:07 ` Luben Tuikov
2007-06-30 21:26 ` Stefan Richter
2007-07-01 6:27 ` Luben Tuikov
2007-07-01 11:07 ` Stefan Richter
2007-06-25 20:32 ` 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=4683D68B.5080702@s5r6.in-berlin.de \
--to=stefanr@s5r6.in-berlin.de \
--cc=James.Bottomley@steeleye.com \
--cc=andmike@us.ibm.com \
--cc=christof.schmitt@de.ibm.com \
--cc=hare@suse.de \
--cc=linux-scsi@vger.kernel.org \
--cc=ltuikov@yahoo.com \
--cc=swen@vnet.ibm.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox