On Sun, Dec 29, 2019 at 05:58:02AM +0100, Klemens Nanni wrote:
> On Sun, Dec 29, 2019 at 01:59:38PM +1000, Jonathan Matthew wrote:
> > I think we have the wrong size for the volume name, hence the difference
> > between the size reported by the controller and the size of vpg.
> Indeed, good catch!
> 
> OBP's `create-raid*-volume' commands also prompt for names no longer
> than that:
> 
>       {0} ok 9 b c d create-raid0-volume
>       ...
>       Enter a volume name:  [0 to 15 characters] foo
>       {0} ok
> 
> > try this out?
> Just works, the WWID is no longer clobbered and autoconf eventually sees
> it in the port WWN:
> 
>       mpii0 at pci15 dev 0 function 0 "Symbios Logic SAS2008" rev 0x03: msi
>       mpii0: Solana On-Board, firmware 9.0.0.0 IR, MPI 2.0
>       scsibus1 at mpii0: 834 targets
>       mpii_scsi_probe: target 0 lun 0 port_wwn 0 node_wwn 0 has 
> MPII_DF_VOLUME set in flags 10
>       struct mpii_cfg_raid_vol_pg1 vpg:
>               volume_id: 81, tvolume_bus: 3, volume_ioc: 0
>               wwid: aa32290d5dcd16c
>       sd0 at scsibus1 targ 0 lun 0: <LSI, Logical Volume, 3000> 
> naa.600508e0000000006cd1dcd59022a30a
>       device_register: RAID:
>               bp->val[]: 3aa32290d5dcd16c, 0, 0
>               target: d5dcd16c, sl->target: 0
>               lun: 0, sl->lun: 0
>               sl->port_wwn: aa32290d5dcd16c, sl->node_wwn: 0
> 
>       sd0: 713824MB, 512 bytes/sector, 1461911552 sectors
> 
> Thanks a lot,
> OK kn
> 
> Now I need to work around the first digit's mismatch;  for reasons still
> unknown to me, official documentation states that the RAID volume WWID's
> first digit --if it is zero-- must be replaced with three,  so the
> bootpath contains 3aa32290d5dcd16c whereas the port WWN has the correct
> aa32290d5dcd16c.

Here's the Solaris explanation:

https://github.com/illumos/illumos-gate/blob/master/usr/src/uts/common/sys/scsi/adapters/mpt_sas/mptsas_var.h#L195

I think we should copy what they're doing here, that is, replace the high bits
with 3 rather than adding 3 to it.  I'm really not sure where we should do
this though.  Maybe in mpii, but only on sparc64?

As far as I can tell, the raid controller generates 128 bit WWIDs for raid
volumes, but only has a 64 bit field to report the ID to the host, so it only
puts the vendor-specified part here (you can see the last half of the ID string
printed when sd0 attaches matches sl->port_wwn in reverse).  I think the
purpose of setting the high 4 bits to 3 is that 3 is not a defined NAA value,
so you're not going to find a proper WWID coming from other device that will
match that.

Reply via email to