From: Cole Robinson Date: Wed, 17 Oct 2012 00:25:41 +0000 (-0400) Subject: storage: lvm: Don't overwrite lvcreate errors X-Git-Tag: v0.10.2.1~32 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=95440c51a06659b499cba6901b636da1377b49a0;p=thirdparty%2Flibvirt.git storage: lvm: Don't overwrite lvcreate errors Before: $ sudo virsh vol-create-as --pool vgvirt sparsetest --capacity 16M --allocation 0 error: Failed to create vol sparsetest error: internal error Child process (/usr/sbin/lvchange -aln vgvirt/sparsetest) unexpected exit status 5: One or more specified logical volume(s) not found. After: $ sudo virsh vol-create-as --pool vgvirt sparsetest --capacity 16M --allocation 0 error: Failed to create vol sparsetest error: internal error Child process (/usr/sbin/lvcreate --name sparsetest -L 0K --virtualsize 16384K vgvirt) unexpected exit status 5: Unable to create new logical volume with no extents (cherry picked from commit 01df6f2bff98d8fc68350ab90c212780ef9db67a) --- diff --git a/src/storage/storage_backend_logical.c b/src/storage/storage_backend_logical.c index a9d785ccbf..eebeec1ba8 100644 --- a/src/storage/storage_backend_logical.c +++ b/src/storage/storage_backend_logical.c @@ -699,6 +699,7 @@ virStorageBackendLogicalCreateVol(virConnectPtr conn, { int fdret, fd = -1; virCommandPtr cmd = NULL; + virErrorPtr err; if (vol->target.encryption != NULL) { virReportError(VIR_ERR_CONFIG_UNSUPPORTED, @@ -775,9 +776,11 @@ virStorageBackendLogicalCreateVol(virConnectPtr conn, return 0; cleanup: + err = virSaveLastError(); VIR_FORCE_CLOSE(fd); virStorageBackendLogicalDeleteVol(conn, pool, vol, 0); virCommandFree(cmd); + virSetError(err); return -1; }