func (v *VirStorageVol) Resize(capacity uint64, flags uint32) error { result := C.virStorageVolResize(v.ptr, C.ulonglong(capacity), C.uint(flags)) if result == -1 { return GetLastError() } return nil }
// Resize changes the capacity of the storage volume to "capacity". The // operation will fail if the new capacity requires allocation that would exceed // the remaining free space in the parent pool. The contents of the new capacity // will appear as all zero bytes. The capacity value will be rounded to the // granularity supported by the hypervisor. // Normally, the operation will attempt to affect capacity with a minimum impact // on allocation (that is, the default operation favors a sparse resize). If // "flags" contains VolResizeAllocate, then the operation will ensure that // allocation is sufficient for the new capacity; this may make the operation // take noticeably longer. // Normally, the operation treats "capacity" as the new size in bytes; but if // "flags" contains VolResizeDelta, then "capacity" represents the size // difference to add to the current size. It is up to the storage pool // implementation whether unaligned requests are rounded up to the next valid // boundary, or rejected. // Normally, this operation should only be used to enlarge capacity; but if // "flags" contains VolResizeShrink, it is possible to attempt a reduction in // capacity even though it might cause data loss. If VolResizeDelta is also // present, then "capacity" is subtracted from the current size; without it, // "capacity" represents the absolute new size regardless of whether it is // larger or smaller than the current size. func (vol StorageVolume) Resize(capacity uint64, flags StorageVolumeResizeFlag) error { vol.log.Printf("resizing storage volume to %v bytes (flags = %v)...\n", capacity, flags) cRet := C.virStorageVolResize(vol.virStorageVol, C.ulonglong(capacity), C.uint(flags)) ret := int32(cRet) if ret == -1 { err := LastError() vol.log.Printf("an error occurred: %v\n", err) return err } vol.log.Println("volume resized") return nil }