--- blivet/__init__.py | 54 +--------------------------------------------------- blivet/devicetree.py | 52 ++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 53 insertions(+), 53 deletions(-)
diff --git a/blivet/__init__.py b/blivet/__init__.py index bad64ec..d5904e5 100644 --- a/blivet/__init__.py +++ b/blivet/__init__.py @@ -72,7 +72,6 @@ from deviceaction import * from formats import getFormat from formats import get_device_format_class from formats import get_default_filesystem_type -from formats.fs import nodev_filesystems import devicefactory from devicelibs.dm import name_from_dm_node from devicelibs.crypto import generateBackupPassphrase @@ -431,7 +430,7 @@ class Blivet(object): self.dumpState("initial")
if not flags.installer_mode: - self.getActiveMounts() + self.devicetree.getActiveMounts()
self.updateBootLoaderDiskList()
@@ -1794,57 +1793,6 @@ class Blivet(object): log.debug("finished Blivet copy") return new
- def getActiveMounts(self): - """ Reflect active mounts in the appropriate devices' formats. """ - log.info("collecting information about active mounts") - for line in open("/proc/mounts").readlines(): - try: - (devspec, mountpoint, fstype, options, rest) = line.split(None, - 4) - except IndexError: - log.error("failed to parse /proc/mounts line: %s" % line) - continue - - if fstype == "btrfs": - # get the subvol name from /proc/self/mountinfo - for line in open("/proc/self/mountinfo").readlines(): - fields = line.split() - _subvol = fields[3] - _mountpoint = fields[4] - _devspec = fields[9] - if _mountpoint == mountpoint and _devspec == devspec: - log.debug("subvol %s" % _subvol) - options += ",subvol=%s" % _subvol[1:] - - if fstype in nodev_filesystems: - if not flags.include_nodev: - continue - - log.info("found nodev %s filesystem mounted at %s" - % (fstype, mountpoint)) - # nodev filesystems require some special handling. - # For now, a lot of this is based on the idea that it's a losing - # battle to require the presence of an FS class for every type - # of nodev filesystem. Based on that idea, we just instantiate - # NoDevFS directly and then hack in the fstype as the device - # attribute. - fmt = getFormat("nodev") - fmt.device = fstype - - # NoDevice also needs some special works since they don't have - # per-instance names in the kernel. - device = NoDevice(format=fmt) - n = len([d for d in self.devices if d.format.type == fstype]) - device._name += ".%d" % n - self.devicetree._addDevice(device) - devspec = device.name - - device = self.devicetree.resolveDevice(devspec, options=options) - if device is not None: - device.format.mountpoint = mountpoint # for future mounts - device.format._mountpoint = mountpoint # active mountpoint - device.format.mountopts = options - def updateKSData(self): """ Update ksdata to reflect the settings of this Blivet instance. """ if not self.ksdata or not self.mountpoints: diff --git a/blivet/devicetree.py b/blivet/devicetree.py index 927e261..e72ce7c 100644 --- a/blivet/devicetree.py +++ b/blivet/devicetree.py @@ -33,6 +33,7 @@ from devices import * from deviceaction import * from pykickstart.constants import * import formats +from formats.fs import nodev_filesystems import devicelibs.mdraid import devicelibs.dm import devicelibs.lvm @@ -2383,3 +2384,54 @@ class DeviceTree(object): else: log.debug("failed to resolve '%s'" % devspec) return device + + def getActiveMounts(self): + """ Reflect active mounts in the appropriate devices' formats. """ + log.info("collecting information about active mounts") + for line in open("/proc/mounts").readlines(): + try: + (devspec, mountpoint, fstype, options, rest) = line.split(None, + 4) + except IndexError: + log.error("failed to parse /proc/mounts line: %s" % line) + continue + + if fstype == "btrfs": + # get the subvol name from /proc/self/mountinfo + for line in open("/proc/self/mountinfo").readlines(): + fields = line.split() + _subvol = fields[3] + _mountpoint = fields[4] + _devspec = fields[9] + if _mountpoint == mountpoint and _devspec == devspec: + log.debug("subvol %s" % _subvol) + options += ",subvol=%s" % _subvol[1:] + + if fstype in nodev_filesystems: + if not flags.include_nodev: + continue + + log.info("found nodev %s filesystem mounted at %s" + % (fstype, mountpoint)) + # nodev filesystems require some special handling. + # For now, a lot of this is based on the idea that it's a losing + # battle to require the presence of an FS class for every type + # of nodev filesystem. Based on that idea, we just instantiate + # NoDevFS directly and then hack in the fstype as the device + # attribute. + fmt = getFormat("nodev") + fmt.device = fstype + + # NoDevice also needs some special works since they don't have + # per-instance names in the kernel. + device = NoDevice(format=fmt) + n = len([d for d in self.devices if d.format.type == fstype]) + device._name += ".%d" % n + self._addDevice(device) + devspec = device.name + + device = self.resolveDevice(devspec, options=options) + if device is not None: + device.format.mountpoint = mountpoint # for future mounts + device.format._mountpoint = mountpoint # active mountpoint + device.format.mountopts = options