[libvirt] [PATCH] storage: Fix regression in storagePoolUpdateAllState

Michal Privoznik mprivozn at redhat.com
Wed Jul 8 07:56:42 UTC 2015


On 02.07.2015 15:18, Erik Skultety wrote:
> Commit 2a31c5f0 introduced support for storage pool state XMLs, however
> it also introduced a regression:
> 
> if (!virstoragePoolObjIsActive(pool)) {
>     virStoragePoolObjUnlock(pool);
>     continue;
> }
> 
> The idea behind this was that since we've got state XMLs and the pool
> wasn't marked as active by autostart routine (if the autostart flag had been
> set earlier), the pool is inactive and we can leave it be and continue with
> other pools. However, filesystem type pools like fs,dir, possibly netfs are
> supposed to be active if the filesystem is mounted on the host. And this is
> exactly where the regression occurs, e.g. pool type 'dir' which has been
> previously destroyed and marked as !autostart gets filtered out
> by the condition above.
> The resolution should be simply to remove the condition completely,
> all pools will get their 'active' flag updated by check callback and if
> they do not support such callback, the logic doesn't change and such
> pools will be inactive by default (e.g. RBD, even if a state XML exists).
> 
> Resolves: https://bugzilla.redhat.com/show_bug.cgi?id=1238610
> ---
>  src/storage/storage_driver.c | 5 -----
>  1 file changed, 5 deletions(-)
> 
> diff --git a/src/storage/storage_driver.c b/src/storage/storage_driver.c
> index e600514..d3cdbc5 100644
> --- a/src/storage/storage_driver.c
> +++ b/src/storage/storage_driver.c
> @@ -142,11 +142,6 @@ storagePoolUpdateAllState(void)
>          virStoragePoolObjPtr pool = driver->pools.objs[i];
>  
>          virStoragePoolObjLock(pool);
> -        if (!virStoragePoolObjIsActive(pool)) {
> -            virStoragePoolObjUnlock(pool);
> -            continue;
> -        }
> -
>          storagePoolUpdateState(pool);
>          virStoragePoolObjUnlock(pool);
>      }
> 

ACK

Michal




More information about the libvir-list mailing list