def _initpv(device, metadataSize=0): if metadataSize > 0: # Size for pvcreate should be with units k|m|g metadatasize = str(metadataSize) + 'm' cmd = ["pvcreate", "--metadatasize", metadatasize, device] else: cmd = ["pvcreate", "--pvmetadatacopies", "0", device] #pvcreate on a dev that is already a PV but not in a VG returns rc = 0. #The device is created with the new parameters. rc, out, err = _lvminfo.cmd(cmd) if rc != 0: # This could have failed because a VG # was removed on another host. Let us # check with lvm if isPvPartOfVg(device): raise se.PhysDevInitializationError(device) try: devicemapper.removeMappingsHoldingDevice(os.path.basename(device)) except OSError, e: if e.errno == errno.ENODEV: raise se.PhysDevInitializationError("%s: %s" % (device, str(e))) else: raise rc, out, err = _lvminfo.cmd(cmd) if rc != 0: raise se.PhysDevInitializationError(device)
def _initpvs(devices, metadataSize): devices = _normalizeargs(devices) # Size for pvcreate should be with units k|m|g metadatasize = str(metadataSize) + 'm' cmd = ["pvcreate", "--metadatasize", metadatasize, "--metadatacopies", "2", "--metadataignore", "y"] cmd.extend(devices) #pvcreate on a dev that is already a PV but not in a VG returns rc = 0. #The device is created with the new parameters. rc, out, err = _lvminfo.cmd(cmd) if rc != 0: # This could have failed because a VG was removed on another host. #Let us check with lvm found, notFound = getVGsOfReachablePVs(devices) #If returned not found devices or any device is in a VG if notFound or any(found.itervalues()): raise se.PhysDevInitializationError("found: %s notFound: %s" % (found, notFound)) #All devices are free and reachable, calling the ghostbusters! for device in devices: try: devicemapper.removeMappingsHoldingDevice(os.path.basename(device)) except OSError, e: if e.errno == errno.ENODEV: raise se.PhysDevInitializationError("%s: %s" % (device, str(e))) else: raise #Retry pvcreate rc, out, err = _lvminfo.cmd(cmd) if rc != 0: raise se.PhysDevInitializationError(device)
def _initpvs_removeHolders(): """Remove holders for all devices.""" for device in devices: try: devicemapper.removeMappingsHoldingDevice( os.path.basename(device)) except OSError as e: if e.errno == errno.ENODEV: raise se.PhysDevInitializationError("%s: %s" % (device, str(e))) else: raise