diff --git a/lib/bdev.py b/lib/bdev.py index d3ff77cff09f22f5db70b51aed2b2f702dd73943..7409493f9016ba0f5d4484528009427551f5d91d 100644 --- a/lib/bdev.py +++ b/lib/bdev.py @@ -297,12 +297,17 @@ class LogicalVolume(BlockDev): vg_name) pvs_info.sort() pvs_info.reverse() - free_size, pv_name = pvs_info[0] + + pvlist = [ pv[1] for pv in pvs_info ] + free_size = sum([ pv[0] for pv in pvs_info ]) + + # The size constraint should have been checked from the master before + # calling the create function. if free_size < size: raise errors.BlockDeviceError, ("Not enough free space: required %s," " available %s" % (size, free_size)) result = utils.RunCmd(["lvcreate", "-L%dm" % size, "-n%s" % lv_name, - vg_name, pv_name]) + vg_name] + pvlist) if result.failed: raise errors.BlockDeviceError(result.fail_reason) return LogicalVolume(unique_id, children)