Good evening Drew,
The code changes look ok to me, although I am not very familiar with
multi-pathing so my
seal of approval is of little value :-)
I did however spot something that I have concerns about in discovery.py:
300 def verify_disk_read(self, ctd):
301 """
302 verify_disk_read() - method to verify a low-level read from the
raw ctd
303 path.
304 """
305
306 full_path = "/dev/rdsk/%ss2" % ctd
307 fd = None
It does seem that the intention is to verify a low-level raw read
capability of the raw device
but trying to read from slice "s2" looks like the a bad because it could
give a false negative
if the disk is functioning but, for example:
- has no VTOC label
- has an EFI label but no partition, 's2', which does not have special
properties like it does for VTOC
Reading from the raw ctd of the device seems more suitable to me.
Thanks,
Niall
On 27/10/2011 14:48, Drew Fisher wrote:
Good evening!
Could I get a couple pairs of eyes on this RFE?
7088826 <http://monaco.us.oracle.com/detail.jsf?cr=7088826> target
discovery needs augmentation to handle aliases, wwn, and
active/passive paths
https://cr.opensolaris.org/action/browse/caiman/drewfish/7088826/webrev/
Testing for this one has been all kinds of fun! My test system is a
SPARC T1000 with a FC HBA attached.
Here's my format output:
AVAILABLE DISK SELECTIONS:
0. c2t0d0 <SUN82G cyl 65533 alt 2 hd 16 sec 153>
/pci@7c0/pci@0/pci@8/scsi@2/sd@0,0
1. c3t200600A0B821FC0Bd0 <SUN-CSM100_R_FC-0660 cyl 10238 alt 2
hd 64 sec 64>
/pci@780/SUNW,qlc@0,1/fp@0,0/ssd@w200600a0b821fc0b,0
2. c3t266000C0FFE080C4d0 <SUN-StorEdge 3511-421F cyl 65533 alt
2 hd 64 sec 348>
/pci@780/SUNW,qlc@0,1/fp@0,0/ssd@w266000c0ffe080c4,0
3. c4t200700A0B821FC0Ad0 <drive type unknown>
/pci@780/SUNW,qlc@0/fp@0,0/ssd@w200700a0b821fc0a,0
4. c4t226000C0FF9080C4d0 <SUN-StorEdge 3511-421F cyl 65533 alt
2 hd 64 sec 348>
/pci@780/SUNW,qlc@0/fp@0,0/ssd@w226000c0ff9080c4,0
Disk 0 is simply the internal disk and not interesting, so ignore that.
Disks 1 and 3 are the same disk. The HBA is set up in "active /
passive" mode. This means that the passive disk is all but offline.
It'll answer to format and libdiskmgt but low-level read(2) calls will
fail. It's how I'm identifying a passive disk.
Disks 2 and 4 are the same disk. The difference is that they are both
"active" This means they behave exactly like a regular disk.
With this new code, only 3 disks (in this example) are "discovered".
The boot disk and the first "active" path in each pair. All passive
paths are not discovered. All additional active aliases are not
discovered. This prevents the user from specifying one active alias
for one zpool and another active alias for a second zpool. Remember,
this would be the same physical disk on the back-end and that would be
.... not good ^(TM).
When target discovery finds a passive disk, it records the CTD string
in an attribute in the active Disk object so we can match on it
later. When target discovery finds multiple active aliases for the
same disk, we construct a Disk object out of the first alias and
record any additional aliases for later matching.
This likely will only present itself on SPARC machines due to CR
6969682. mpxio is disabled by default on SPARC. If mpxio is enabled,
the format output is totally different. mpxio would handle all of the
multipathing and make the entire thing completely transparent to the user.
Testing
------
I tested AI manifests which specify a passive disk (disk 3 in the
format output):
20:18:12 Error occurred during execution of 'target-selection'
checkpoint.
20:18:12 Failed Checkpoints:
20:18:12
20:18:12 target-selection
20:18:12
20:18:12 Checkpoint execution error:
20:18:12
20:18:12 Unable to locate the disk 'c4t200700A0B821FC0Ad0' on
the system.
20:18:12
20:18:12 Automated Installation Failed. See install log at
/system/volatile/install_log
I tested AI manifests with two active CTDs to the same physical disk
(disk 2 and 4):
20:17:48 Error occurred during execution of 'target-selection'
checkpoint.
20:17:48 Failed Checkpoints:
20:17:48
20:17:48 target-selection
20:17:48
20:17:48 Checkpoint execution error:
20:17:48
20:17:48 Disk 'c4t226000C0FF9080C4d0' matches already used disk
'c3t266000C0FFE080C4d0'.
20:17:48
20:17:48 Automated Installation Failed. See install log at
/system/volatile/install_log
I tested specifying the second active alias (disk 4). AI proceeded
normally and installed to disk 2, exactly as it should.
Naturally, all other tests run as expected and pass with no new
regressions.
Darren: Does anything specific have to be done with my changing of
the DTD for versioning?
Thanks!
-Drew
_______________________________________________
caiman-discuss mailing list
[email protected]
http://mail.opensolaris.org/mailman/listinfo/caiman-discuss
_______________________________________________
caiman-discuss mailing list
[email protected]
http://mail.opensolaris.org/mailman/listinfo/caiman-discuss