提交 d957ba8d 编写于 作者: O Olga Krishtal 提交者: Ján Tomko

storage: dir: .resizeVol callback for ploop volume

Changes the size of given ploop volume via ploop resize tool.
Signed-off-by: NOlga Krishtal <okrishtal@virtuozzo.com>
上级 02d1e456
......@@ -850,6 +850,31 @@ virStorageBackendCreatePloop(virConnectPtr conn ATTRIBUTE_UNUSED,
return ret;
}
int
virStoragePloopResize(virStorageVolDefPtr vol,
unsigned long long capacity)
{
int ret = -1;
virCommandPtr cmd = NULL;
char *resize_tool = NULL;
resize_tool = virFindFileInPath("ploop");
if (!resize_tool) {
virReportError(VIR_ERR_INTERNAL_ERROR, "%s",
_("unable to find ploop, please install ploop tools"));
return -1;
}
cmd = virCommandNewArgList(resize_tool, "resize", "-s", NULL);
virCommandAddArgFormat(cmd, "%lluM", VIR_DIV_UP(capacity, (1024 * 1024)));
virCommandAddArgFormat(cmd, "%s/DiskDescriptor.xml", vol->target.path);
ret = virCommandRun(cmd, NULL);
virCommandFree(cmd);
VIR_FREE(resize_tool);
return ret;
}
enum {
QEMU_IMG_BACKING_FORMAT_NONE = 0,
QEMU_IMG_BACKING_FORMAT_FLAG,
......
......@@ -115,6 +115,8 @@ int virStorageBackendCreatePloop(virConnectPtr conn,
virStorageVolDefPtr inputvol,
unsigned int flags);
int virStoragePloopResize(virStorageVolDefPtr vol,
unsigned long long capacity);
virStorageBackendBuildVolFrom
virStorageBackendGetBuildVolFromFunction(virStorageVolDefPtr vol,
......
......@@ -1379,6 +1379,8 @@ virStorageBackendFileSystemVolResize(virConnectPtr conn ATTRIBUTE_UNUSED,
if (vol->target.format == VIR_STORAGE_FILE_RAW) {
return virStorageFileResize(vol->target.path, capacity,
vol->target.allocation, pre_allocate);
} else if (vol->target.format == VIR_STORAGE_FILE_PLOOP) {
return virStoragePloopResize(vol, capacity);
} else {
if (pre_allocate) {
virReportError(VIR_ERR_OPERATION_UNSUPPORTED, "%s",
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册