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

Reply via email to