storagePoolUndefine(), storagePoolDestroy(), storagePoolDelete(), and storagePoolRefresh() all report VIR_ERR_INTERNAL_ERROR when a pool has asynchronous jobs running. This error code implies a bug in libvirt, but the condition is a normal transient state that occurs during concurrent volume creation. Change the error code to VIR_ERR_OPERATION_INVALID, which is consistent with the adjacent checks for "pool is not active" and "pool is starting up" in the same functions. Signed-off-by: Lucas Amaral <lucaaamaral@gmail.com> --- Build-tested on CentOS Stream 9 (297 OK, 0 failures). Validated by reproducing the async jobs error using LD_PRELOAD to inject a 15-second delay into fallocate64() for pool directory files (fallocate is instant on local filesystems, making the race window too narrow to hit otherwise). With this patch: Before: error: internal error: pool 'default' has asynchronous jobs running. After: error: Requested operation is not valid: pool 'default' has asynchronous jobs running. src/storage/storage_driver.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/storage/storage_driver.c b/src/storage/storage_driver.c index e19e032427..8f5c921157 100644 --- a/src/storage/storage_driver.c +++ b/src/storage/storage_driver.c @@ -868,7 +868,7 @@ storagePoolUndefine(virStoragePoolPtr pool) } if (virStoragePoolObjGetAsyncjobs(obj) > 0) { - virReportError(VIR_ERR_INTERNAL_ERROR, + virReportError(VIR_ERR_OPERATION_INVALID, _("pool '%1$s' has asynchronous jobs running."), def->name); goto cleanup; @@ -1089,7 +1089,7 @@ storagePoolDestroy(virStoragePoolPtr pool) } if (virStoragePoolObjGetAsyncjobs(obj) > 0) { - virReportError(VIR_ERR_INTERNAL_ERROR, + virReportError(VIR_ERR_OPERATION_INVALID, _("pool '%1$s' has asynchronous jobs running."), def->name); goto cleanup; @@ -1161,7 +1161,7 @@ storagePoolDelete(virStoragePoolPtr pool, } if (virStoragePoolObjGetAsyncjobs(obj) > 0) { - virReportError(VIR_ERR_INTERNAL_ERROR, + virReportError(VIR_ERR_OPERATION_INVALID, _("pool '%1$s' has asynchronous jobs running."), def->name); goto cleanup; -- 2.52.0