--- a/usr/src/lib/install_target/discovery.py Mon Apr 02 12:11:14 2012 -0700
+++ b/usr/src/lib/install_target/discovery.py Wed Apr 04 07:30:25 2012 -0600
@@ -39,7 +39,7 @@
import solaris_install.target.vdevs as vdevs
-from bootmgmt.pysol import di_find_prop, getmntany, mnttab_open, mnttab_close
+from bootmgmt.pysol import getmntany, mnttab_open, mnttab_close
from solaris_install import CalledProcessError, Popen, run
from solaris_install.data_object.data_dict import DataObjectDict
@@ -49,7 +49,6 @@
from solaris_install.target.libbe import be
from solaris_install.target.libdevinfo import devinfo
from solaris_install.target.libdiskmgt import const, diskmgt
-from solaris_install.target.libdiskmgt.attributes import DMMediaAttr
from solaris_install.target.libefi.efi import efi_free, efi_read
from solaris_install.target.logical import BE, Filesystem, Logical, Zpool, Zvol
from solaris_install.target.physical import Disk, DiskProp, DiskGeometry, \
@@ -722,21 +721,14 @@
# trap on the "/pseudo" controller (zvol swap and dump)
if controller.name == "/pseudo" and add_physical:
self.discover_pseudo(controller)
+
+ # skip USB floppy controllers
+ if controller.floppy_controller:
+ continue
+
else:
# extract every drive on the given controller
for drive in controller.drives:
- # skip USB floppy drives
- if controller.attributes is not None and \
- controller.attributes.type == const.CTYPE_USB:
- try:
- di_props = di_find_prop("compatible",
- controller.name)
- except Exception:
- di_props = list()
-
- if const.DI_FLOPPY in di_props:
- continue
-
# query libdiskmgt for the drive's information
new_disk = self.discover_disk(drive)
@@ -754,8 +746,14 @@
# now walk all the drives in the system to make sure we pick up any
# disks which have no controller (OVM Xen disks)
for drive in diskmgt.descriptors_by_type(const.DRIVE):
+ # skip USB floppy controllers
+ if drive.controllers and drive.controllers[0].floppy_controller:
+ continue
+
+ # skip any drive whose opath starts with "/dev/zvol/rdsk"
if drive.attributes.opath.startswith(ZVOL_RPATH):
continue
+
new_disk = self.discover_disk(drive)
# skip invalid drives and CDROM drives
--- a/usr/src/lib/install_target/libdiskmgt/diskmgt.py Mon Apr 02 12:11:14 2012 -0700
+++ b/usr/src/lib/install_target/libdiskmgt/diskmgt.py Wed Apr 04 07:30:25 2012 -0600
@@ -32,10 +32,11 @@
import numbers
import os
+from bootmgmt.pysol import di_find_prop
from solaris_install.target.cgc import CTypesStructureRef
from solaris_install.target.libdiskmgt import cfunc, const, cstruct
-from solaris_install.target.libdiskmgt.attributes import DMDriveAttr,\
- DMControllerAttr, DMMediaAttr, DMSliceAttr, DMPartAttr, DMPathAttr,\
+from solaris_install.target.libdiskmgt.attributes import DMDriveAttr, \
+ DMControllerAttr, DMMediaAttr, DMSliceAttr, DMPartAttr, DMPathAttr, \
DMAliasAttr, DMBusAttr
from solaris_install.target.libnvpair.cfunc import nvlist_free
@@ -351,6 +352,21 @@
ATYPE = DMControllerAttr
@property
+ def floppy_controller(self):
+ """ property to indicate if the controller is a floppy drive USB
+ controller.
+ """
+
+ if self.attributes is not None and \
+ self.attributes.type == const.CTYPE_USB:
+ try:
+ di_props = di_find_prop("compatible", self.name)
+ except Exception:
+ di_props = list()
+ return const.DI_FLOPPY in di_props
+ return False
+
+ @property
def bus(self):
"""bus associated with this controller"""
return self.get_associated_descriptors(const.BUS)[0]
--- a/usr/src/pkg/manifests/system-library-install.mf Mon Apr 02 12:11:14 2012 -0700
+++ b/usr/src/pkg/manifests/system-library-install.mf Wed Apr 04 07:30:25 2012 -0600
@@ -177,7 +177,10 @@
file path=usr/lib/python2.6/vendor-packages/solaris_install/target/libdiskmgt/const.pyc
file path=usr/lib/python2.6/vendor-packages/solaris_install/target/libdiskmgt/cstruct.py
file path=usr/lib/python2.6/vendor-packages/solaris_install/target/libdiskmgt/cstruct.pyc
-file path=usr/lib/python2.6/vendor-packages/solaris_install/target/libdiskmgt/diskmgt.py
+# Add bypass generate to allow manual boot-management version 13 dependency
+file \
+ path=usr/lib/python2.6/vendor-packages/solaris_install/target/libdiskmgt/diskmgt.py \
+ pkg.depend.bypass-generate=^usr/lib/python2.6/vendor-packages/bootmgmt/.*$
file path=usr/lib/python2.6/vendor-packages/solaris_install/target/libdiskmgt/diskmgt.pyc
dir path=usr/lib/python2.6/vendor-packages/solaris_install/target/libefi
file path=usr/lib/python2.6/vendor-packages/solaris_install/target/libefi/__init__.py