On 09.02.2016 16:52, Olga Krishtal wrote: > To change the size of ploop image file we use ploop resize cmd that takes > 2 args: new size and path/to/DiskDescriptor.xml > > Signed-off-by: Olga Krishtal <okrishtal@xxxxxxxxxxxxx> > --- > src/storage/storage_backend.c | 28 ++++++++++++++++++++++++++++ > src/storage/storage_backend.h | 5 +++++ > src/storage/storage_backend_fs.c | 2 ++ > 3 files changed, 35 insertions(+) > > diff --git a/src/storage/storage_backend.c b/src/storage/storage_backend.c > index c455908..fb4d1b9 100644 > --- a/src/storage/storage_backend.c > +++ b/src/storage/storage_backend.c > @@ -877,6 +877,34 @@ int virStorageBackendDeletePloop(virConnectPtr conn ATTRIBUTE_UNUSED, > return virFileDeleteTree(vol->target.path); > } > > +int virStoragePloopResize(virConnectPtr conn ATTRIBUTE_UNUSED, > + virStoragePoolObjPtr pool ATTRIBUTE_UNUSED, > + virStorageVolDefPtr vol, > + unsigned long long capacity) we can just omit 'conn' and 'pool' in arguments > +{ > + int ret; initialize to -1, then it would be easier to goto to cleanup. > + char *path = NULL; > + char *size = NULL; > + virCommandPtr cmd = NULL; > + > + if (virAsprintf(&path, "%s/%s", vol->target.path, "DiskDescriptor.xml") < 0) > + return -1; > + > + if (virAsprintf(&size, "%lluM", VIR_DIV_UP(capacity, 512)) < 0) { You use suffix 'M' here thus you need to divide by 1024 * 1024 or leave the suffix. > + ret = -1; > + goto cleanup; > + } use virCommandAddArgFormat to add 'path' and 'size'. And "%s/DiskDescriptor.xml") by the way we can put all constants into #defines > + cmd = virCommandNewArgList("ploop", "resize", "-s", size, path, NULL); > + > + ret = virCommandRun(cmd, NULL); > + > + cleanup: > + virCommandFree(cmd); > + VIR_FREE(path); > + VIR_FREE(size); > + return ret; > +} > + > enum { > QEMU_IMG_BACKING_FORMAT_NONE = 0, > QEMU_IMG_BACKING_FORMAT_FLAG, > diff --git a/src/storage/storage_backend.h b/src/storage/storage_backend.h > index 7d354c5..1de8dfe 100644 > --- a/src/storage/storage_backend.h > +++ b/src/storage/storage_backend.h > @@ -118,6 +118,11 @@ int virStorageBackendCreatePloop(virConnectPtr conn, > int virStorageBackendDeletePloop(virConnectPtr conn, > virStorageVolDefPtr vol); > > +int virStoragePloopResize(virConnectPtr conn, > + virStoragePoolObjPtr pool, > + virStorageVolDefPtr vol, > + unsigned long long capacity); > + > virStorageBackendBuildVolFrom > virStorageBackendGetBuildVolFromFunction(virStorageVolDefPtr vol, > virStorageVolDefPtr inputvol); > diff --git a/src/storage/storage_backend_fs.c b/src/storage/storage_backend_fs.c > index 2290096..c2d148d 100644 > --- a/src/storage/storage_backend_fs.c > +++ b/src/storage/storage_backend_fs.c > @@ -1378,6 +1378,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(conn, pool, vol, capacity); > } else { > if (pre_allocate) { > virReportError(VIR_ERR_OPERATION_UNSUPPORTED, "%s", > -- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list