From 5309b6cb64a7b92f6b75eb6221c2e9e8889f3d7c Mon Sep 17 00:00:00 2001 From: John Ferlan Date: Wed, 12 Sep 2018 11:25:37 -0400 Subject: [PATCH] storage: Save error during refresh failure processing https://bugzilla.redhat.com/show_bug.cgi?id=1614283 Save the error from the refresh failure because the stopPool processing may overwrite the error or even worse clear it due to calling an external libvirt API that resets the last error such as is the case with the SCSI pool which may call virGetConnectNodeDev (see commit decaeb288) in order to process deleting an NPIV vport. Signed-off-by: John Ferlan ACKed-by: Michal Privoznik --- src/storage/storage_driver.c | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/storage/storage_driver.c b/src/storage/storage_driver.c index 5e483269b1..bf43d77c8b 100644 --- a/src/storage/storage_driver.c +++ b/src/storage/storage_driver.c @@ -81,10 +81,16 @@ storagePoolRefreshFailCleanup(virStorageBackendPtr backend, virStoragePoolObjPtr obj, const char *stateFile) { + virErrorPtr orig_err = virSaveLastError(); + if (stateFile) ignore_value(unlink(stateFile)); if (backend->stopPool) backend->stopPool(obj); + if (orig_err) { + virSetError(orig_err); + virFreeError(orig_err); + } }