def sub_devs(self): pseudofs = [ 'lofs', 'none', 'proc', 'sysfs', ] if self.fs_type in pseudofs + Env.fs_net: return set() if self.fs_type == "zfs": from utilities.subsystems.zfs import zpool_devs return set(zpool_devs(self.device.split("/")[0], self.svc.node)) for res in self.svc.get_resources(): if hasattr(res, "is_child_dev") and res.is_child_dev(self.device): # don't account fs device if the parent resource is driven by the service return set() return set([self.device])
def sub_devs(self): if self.fs_type == "btrfs": from utilities.subsystems.btrfs import btrfs_devs return set(btrfs_devs(self.mount_point)) if self.fs_type == "zfs": return set(zpool_devs(self.device.split("/")[0], self.svc.node)) dev = self.realdev() if dev is None or dev.startswith("LABEL=") or dev.startswith("UUID="): # realdev() may fail to resolve UUID and LABEL if the hosting dev # is not visible return set() if dev.startswith("/dev/rbd") or dev.startswith("/dev/loop"): return set([dev]) if self.dm_major is None: return set([dev]) try: statinfo = os.stat(dev) except: self.log.error("can not stat %s", dev) raise ex.Error if not self.is_devmap(statinfo): return set([dev]) if utilities.devices.linux.lv_exists(self, dev): # If the fs is built on a lv of a private vg, its # disks will be given by the vg resource. # if the fs is built on a lv of a shared vg, we # don't want to account its disks : don't reserve # them, don't account their size multiple times. return set() devname = 'dm-' + str(os.minor(statinfo.st_rdev)) syspath = '/sys/block/' + devname + '/slaves' devs = utilities.devices.linux.get_blockdev_sd_slaves(syspath) return devs
def sub_devs(self): resources = [res for res in self.svc.get_resources("disk.zpool") \ if res.name == self.pool] if resources: return resources[0].sub_devs() return set(zpool_devs(self.pool, self.svc.node))
def _sub_devs(self): """ Search zpool vdevs from the output of "zpool status poolname" if imported. """ return set(zpool_devs(self.name, self.svc.node))