mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2025-03-07 17:28:15 +00:00
storage_driver: Introduce storagePoolRefreshImpl()
This is a wrapper over refreshPool() call as at all places we are doing basically the same. Might as well have a single function to call. Signed-off-by: Michal Privoznik <mprivozn@redhat.com> Reviewed-by: Pavel Hrdina <phrdina@redhat.com>
This commit is contained in:
parent
f8aecea779
commit
bd45cedbe5
@ -93,6 +93,21 @@ storagePoolRefreshFailCleanup(virStorageBackendPtr backend,
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
static int
|
||||||
|
storagePoolRefreshImpl(virStorageBackendPtr backend,
|
||||||
|
virStoragePoolObjPtr obj,
|
||||||
|
const char *stateFile)
|
||||||
|
{
|
||||||
|
virStoragePoolObjClearVols(obj);
|
||||||
|
if (backend->refreshPool(obj) < 0) {
|
||||||
|
storagePoolRefreshFailCleanup(backend, obj, stateFile);
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* virStoragePoolUpdateInactive:
|
* virStoragePoolUpdateInactive:
|
||||||
* @poolptr: pointer to a variable holding the pool object pointer
|
* @poolptr: pointer to a variable holding the pool object pointer
|
||||||
@ -149,16 +164,13 @@ storagePoolUpdateStateCallback(virStoragePoolObjPtr obj,
|
|||||||
* it anyway, but if they do and fail, we want to log error and
|
* it anyway, but if they do and fail, we want to log error and
|
||||||
* continue with other pools.
|
* continue with other pools.
|
||||||
*/
|
*/
|
||||||
if (active) {
|
if (active &&
|
||||||
virStoragePoolObjClearVols(obj);
|
storagePoolRefreshImpl(backend, obj, stateFile) < 0) {
|
||||||
if (backend->refreshPool(obj) < 0) {
|
|
||||||
storagePoolRefreshFailCleanup(backend, obj, stateFile);
|
|
||||||
virReportError(VIR_ERR_INTERNAL_ERROR,
|
virReportError(VIR_ERR_INTERNAL_ERROR,
|
||||||
_("Failed to restart storage pool '%s': %s"),
|
_("Failed to restart storage pool '%s': %s"),
|
||||||
def->name, virGetLastErrorMessage());
|
def->name, virGetLastErrorMessage());
|
||||||
active = false;
|
active = false;
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
virStoragePoolObjSetActive(obj, active);
|
virStoragePoolObjSetActive(obj, active);
|
||||||
|
|
||||||
@ -204,12 +216,10 @@ storageDriverAutostartCallback(virStoragePoolObjPtr obj,
|
|||||||
if (started) {
|
if (started) {
|
||||||
VIR_AUTOFREE(char *) stateFile = NULL;
|
VIR_AUTOFREE(char *) stateFile = NULL;
|
||||||
|
|
||||||
virStoragePoolObjClearVols(obj);
|
|
||||||
stateFile = virFileBuildPath(driver->stateDir, def->name, ".xml");
|
stateFile = virFileBuildPath(driver->stateDir, def->name, ".xml");
|
||||||
if (!stateFile ||
|
if (!stateFile ||
|
||||||
virStoragePoolSaveState(stateFile, def) < 0 ||
|
virStoragePoolSaveState(stateFile, def) < 0 ||
|
||||||
backend->refreshPool(obj) < 0) {
|
storagePoolRefreshImpl(backend, obj, stateFile) < 0) {
|
||||||
storagePoolRefreshFailCleanup(backend, obj, stateFile);
|
|
||||||
virReportError(VIR_ERR_INTERNAL_ERROR,
|
virReportError(VIR_ERR_INTERNAL_ERROR,
|
||||||
_("Failed to autostart storage pool '%s': %s"),
|
_("Failed to autostart storage pool '%s': %s"),
|
||||||
def->name, virGetLastErrorMessage());
|
def->name, virGetLastErrorMessage());
|
||||||
@ -763,10 +773,9 @@ storagePoolCreateXML(virConnectPtr conn,
|
|||||||
|
|
||||||
stateFile = virFileBuildPath(driver->stateDir, def->name, ".xml");
|
stateFile = virFileBuildPath(driver->stateDir, def->name, ".xml");
|
||||||
|
|
||||||
virStoragePoolObjClearVols(obj);
|
if (!stateFile ||
|
||||||
if (!stateFile || virStoragePoolSaveState(stateFile, def) < 0 ||
|
virStoragePoolSaveState(stateFile, def) < 0 ||
|
||||||
backend->refreshPool(obj) < 0) {
|
storagePoolRefreshImpl(backend, obj, stateFile) < 0) {
|
||||||
storagePoolRefreshFailCleanup(backend, obj, stateFile);
|
|
||||||
goto error;
|
goto error;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -958,10 +967,9 @@ storagePoolCreate(virStoragePoolPtr pool,
|
|||||||
|
|
||||||
stateFile = virFileBuildPath(driver->stateDir, def->name, ".xml");
|
stateFile = virFileBuildPath(driver->stateDir, def->name, ".xml");
|
||||||
|
|
||||||
virStoragePoolObjClearVols(obj);
|
if (!stateFile ||
|
||||||
if (!stateFile || virStoragePoolSaveState(stateFile, def) < 0 ||
|
virStoragePoolSaveState(stateFile, def) < 0 ||
|
||||||
backend->refreshPool(obj) < 0) {
|
storagePoolRefreshImpl(backend, obj, stateFile) < 0) {
|
||||||
storagePoolRefreshFailCleanup(backend, obj, stateFile);
|
|
||||||
goto cleanup;
|
goto cleanup;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1158,6 +1166,7 @@ storagePoolRefresh(virStoragePoolPtr pool,
|
|||||||
virStoragePoolObjPtr obj;
|
virStoragePoolObjPtr obj;
|
||||||
virStoragePoolDefPtr def;
|
virStoragePoolDefPtr def;
|
||||||
virStorageBackendPtr backend;
|
virStorageBackendPtr backend;
|
||||||
|
VIR_AUTOFREE(char *) stateFile = NULL;
|
||||||
int ret = -1;
|
int ret = -1;
|
||||||
virObjectEventPtr event = NULL;
|
virObjectEventPtr event = NULL;
|
||||||
|
|
||||||
@ -1186,13 +1195,8 @@ storagePoolRefresh(virStoragePoolPtr pool,
|
|||||||
goto cleanup;
|
goto cleanup;
|
||||||
}
|
}
|
||||||
|
|
||||||
virStoragePoolObjClearVols(obj);
|
|
||||||
if (backend->refreshPool(obj) < 0) {
|
|
||||||
VIR_AUTOFREE(char *) stateFile = NULL;
|
|
||||||
|
|
||||||
stateFile = virFileBuildPath(driver->stateDir, def->name, ".xml");
|
stateFile = virFileBuildPath(driver->stateDir, def->name, ".xml");
|
||||||
storagePoolRefreshFailCleanup(backend, obj, stateFile);
|
if (storagePoolRefreshImpl(backend, obj, stateFile) < 0) {
|
||||||
|
|
||||||
event = virStoragePoolEventLifecycleNew(def->name,
|
event = virStoragePoolEventLifecycleNew(def->name,
|
||||||
def->uuid,
|
def->uuid,
|
||||||
VIR_STORAGE_POOL_EVENT_STOPPED,
|
VIR_STORAGE_POOL_EVENT_STOPPED,
|
||||||
@ -2282,8 +2286,7 @@ virStorageVolPoolRefreshThread(void *opaque)
|
|||||||
if (!(backend = virStorageBackendForType(def->type)))
|
if (!(backend = virStorageBackendForType(def->type)))
|
||||||
goto cleanup;
|
goto cleanup;
|
||||||
|
|
||||||
virStoragePoolObjClearVols(obj);
|
if (storagePoolRefreshImpl(backend, obj, NULL) < 0)
|
||||||
if (backend->refreshPool(obj) < 0)
|
|
||||||
VIR_DEBUG("Failed to refresh storage pool");
|
VIR_DEBUG("Failed to refresh storage pool");
|
||||||
|
|
||||||
event = virStoragePoolEventRefreshNew(def->name, def->uuid);
|
event = virStoragePoolEventRefreshNew(def->name, def->uuid);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user