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 01df6f2bff)
This commit is contained in:
Cole Robinson 2012-10-16 20:25:41 -04:00
parent ad5afcd14c
commit 95440c51a0

View File

@ -699,6 +699,7 @@ virStorageBackendLogicalCreateVol(virConnectPtr conn,
{ {
int fdret, fd = -1; int fdret, fd = -1;
virCommandPtr cmd = NULL; virCommandPtr cmd = NULL;
virErrorPtr err;
if (vol->target.encryption != NULL) { if (vol->target.encryption != NULL) {
virReportError(VIR_ERR_CONFIG_UNSUPPORTED, virReportError(VIR_ERR_CONFIG_UNSUPPORTED,
@ -775,9 +776,11 @@ virStorageBackendLogicalCreateVol(virConnectPtr conn,
return 0; return 0;
cleanup: cleanup:
err = virSaveLastError();
VIR_FORCE_CLOSE(fd); VIR_FORCE_CLOSE(fd);
virStorageBackendLogicalDeleteVol(conn, pool, vol, 0); virStorageBackendLogicalDeleteVol(conn, pool, vol, 0);
virCommandFree(cmd); virCommandFree(cmd);
virSetError(err);
return -1; return -1;
} }