[libvirt] [PATCH libvirt 2/2] storage: learn to create qcow2 with preallocation
Christophe Fergeau
cfergeau at redhat.com
Wed May 9 10:55:17 UTC 2012
On Sat, May 05, 2012 at 02:46:32AM +0200, Marc-André Lureau wrote:
>
> + if (vol->target.format != VIR_STORAGE_FILE_QCOW2 && with_preallocation) {
> + virStorageReportError(VIR_ERR_INTERNAL_ERROR,
> + _("Preallocation is only available with qcow2"));
> + return -1;
> + }
/volume/allocation says in its documentation "If set to a value smaller
than the capacity, the pool has the option of deciding to sparsely allocate
a volume. It does not have to honour requests for sparse allocation
though.", ie when trying to use "allocation" to get a sparsely allocated
volume, failures to do the sparse allocation are not fatal (if the
documentation is to be trusted). I think it would be nicer to be consistent
with that for preallocation and not return an error either in this case.
Christophe
> +
> if (vol->backingStore.path) {
> int accessRetCode = -1;
> char *absolutePath = NULL;
> @@ -781,16 +820,20 @@ virStorageBackendCreateQemuImg(virConnectPtr conn,
> if (imgformat < 0)
> goto cleanup;
>
> + if (imgformat != QEMU_IMG_BACKING_FORMAT_OPTIONS && with_preallocation)
> + VIR_INFO("Preallocation not supported with this version of qemu-img");
> +
> cmd = virCommandNew(create_tool);
>
> if (inputvol) {
> virCommandAddArgList(cmd, "convert", "-f", inputType, "-O", type,
> inputPath, vol->target.path, NULL);
>
> - if (do_encryption) {
> - if (imgformat == QEMU_IMG_BACKING_FORMAT_OPTIONS) {
> - virCommandAddArgList(cmd, "-o", "encryption=on", NULL);
> - } else {
> + if (imgformat == QEMU_IMG_BACKING_FORMAT_OPTIONS) {
> + virCommandAddArg(cmd, "-o");
> + virCommandAddArg(cmd, virStorageQemuImgOptionsStr(vol));
> + } else {
> + if (do_encryption) {
> virCommandAddArg(cmd, "-e");
> }
> }
> @@ -811,8 +854,7 @@ virStorageBackendCreateQemuImg(virConnectPtr conn,
>
> case QEMU_IMG_BACKING_FORMAT_OPTIONS:
> virCommandAddArg(cmd, "-o");
> - virCommandAddArgFormat(cmd, "backing_fmt=%s%s", backingType,
> - do_encryption ? ",encryption=on" : "");
> + virCommandAddArg(cmd, virStorageQemuImgOptionsStr(vol));
> virCommandAddArg(cmd, vol->target.path);
> virCommandAddArgFormat(cmd, "%lluK", size_arg);
> break;
> @@ -831,10 +873,11 @@ virStorageBackendCreateQemuImg(virConnectPtr conn,
> vol->target.path, NULL);
> virCommandAddArgFormat(cmd, "%lluK", size_arg);
>
> - if (do_encryption) {
> - if (imgformat == QEMU_IMG_BACKING_FORMAT_OPTIONS) {
> - virCommandAddArgList(cmd, "-o", "encryption=on", NULL);
> - } else {
> + if (imgformat == QEMU_IMG_BACKING_FORMAT_OPTIONS) {
> + virCommandAddArg(cmd, "-o");
> + virCommandAddArg(cmd, virStorageQemuImgOptionsStr(vol));
> + } else {
> + if (do_encryption) {
> virCommandAddArg(cmd, "-e");
> }
> }
> --
> 1.7.10
>
> --
> libvir-list mailing list
> libvir-list at redhat.com
> https://www.redhat.com/mailman/listinfo/libvir-list
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 198 bytes
Desc: not available
URL: <http://listman.redhat.com/archives/libvir-list/attachments/20120509/4de5b838/attachment-0001.sig>
More information about the libvir-list
mailing list