From a200ebbc6f2cc5835daf0ddda9a347b7311a7877 Mon Sep 17 00:00:00 2001 From: Peter Krempa Date: Thu, 30 Mar 2017 13:18:43 +0200 Subject: [PATCH] storage: gluster: Implement 'checkPool' method so that state is restored After restart of libvirtd the 'checkPool' method is supposed to validate that the pool is online. Since libvirt then refreshes the pool contents anyways just return whether the pool was supposed to be online so that the code can be reached. This is necessary since if a pool does not implement the method it's automatically considered as inactive. Resolves: https://bugzilla.redhat.com/show_bug.cgi?id=1436065 --- src/storage/storage_backend_gluster.c | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/src/storage/storage_backend_gluster.c b/src/storage/storage_backend_gluster.c index 30a41369a3..93dce4042f 100644 --- a/src/storage/storage_backend_gluster.c +++ b/src/storage/storage_backend_gluster.c @@ -537,9 +537,22 @@ virStorageBackendGlusterFindPoolSources(virConnectPtr conn ATTRIBUTE_UNUSED, } +static int +virStorageBackendGlusterCheckPool(virStoragePoolObjPtr pool, + bool *active) +{ + /* Return previous state remembered by the status XML. If the pool is not + * available we will fail to refresh it and end up in the same situation. + * This will save one attempt to open the connection to the remote server */ + *active = pool->active; + return 0; +} + + virStorageBackend virStorageBackendGluster = { .type = VIR_STORAGE_POOL_GLUSTER, + .checkPool = virStorageBackendGlusterCheckPool, .refreshPool = virStorageBackendGlusterRefreshPool, .findPoolSources = virStorageBackendGlusterFindPoolSources, -- 2.47.2