mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2025-03-30 18:50:18 +03:00
storage: Track successful creation of LV for removal
https://bugzilla.redhat.com/show_bug.cgi?id=1233003 Track when the logical volume was successfully created in order to properly handle the call to virStorageBackendLogicalDeleteVol. It's possible that the failure to create was because someone created an LV in the pool outside of libvirt's knowledge. In this case, we don't want to delete that LV. A subsequent or future refresh of the pool will find the volume and cause an earlier failure Signed-off-by: John Ferlan <jferlan@redhat.com>
This commit is contained in:
parent
27d2d99fe7
commit
c4dd2a1faf
@ -731,6 +731,7 @@ virStorageBackendLogicalCreateVol(virConnectPtr conn,
|
||||
virCommandPtr cmd = NULL;
|
||||
virErrorPtr err;
|
||||
struct stat sb;
|
||||
bool created = false;
|
||||
|
||||
if (vol->target.encryption != NULL) {
|
||||
virReportError(VIR_ERR_CONFIG_UNSUPPORTED,
|
||||
@ -771,6 +772,7 @@ virStorageBackendLogicalCreateVol(virConnectPtr conn,
|
||||
if (virCommandRun(cmd, NULL) < 0)
|
||||
goto error;
|
||||
|
||||
created = true;
|
||||
virCommandFree(cmd);
|
||||
cmd = NULL;
|
||||
|
||||
@ -816,7 +818,8 @@ virStorageBackendLogicalCreateVol(virConnectPtr conn,
|
||||
error:
|
||||
err = virSaveLastError();
|
||||
VIR_FORCE_CLOSE(fd);
|
||||
virStorageBackendLogicalDeleteVol(conn, pool, vol, 0);
|
||||
if (created)
|
||||
virStorageBackendLogicalDeleteVol(conn, pool, vol, 0);
|
||||
virCommandFree(cmd);
|
||||
virSetError(err);
|
||||
virFreeError(err);
|
||||
|
Loading…
x
Reference in New Issue
Block a user