On 03/25/2015 06:42 PM, John Ferlan wrote:
> the 'checkPool' block has been moved to
storagePoolUpdateAllState.
move the checkPool block into storageDriverInitialize. This ensures
activating pools earlier allowing domains using volumes from a pool to
be able to find the volume during qemuProcessReconnect ...
storagePoolUpdateAllState is called only from storageDriverInitialize...
moving checkPool to storageDriverInitialize would result in copying the
whole (65 lines) UpdateAllState body which I think is not necessary.
> static void
> +storagePoolUpdateAllState(void)
> +{
> + size_t i;
> + bool active = false;
> +
> + for (i = 0; i < driver->pools.count; i++) {
> + virStoragePoolObjPtr pool = driver->pools.objs[i];
> + virStorageBackendPtr backend;
> +
> + virStoragePoolObjLock(pool);
> + if (!virStoragePoolObjIsActive(pool)) {
> + virStoragePoolObjUnlock(pool);
> + continue;
> + }
> +
> + if ((backend = virStorageBackendForType(pool->def->type)) == NULL) {
> + VIR_ERROR(_("Missing backend %d"), pool->def->type);
> + virStoragePoolObjUnlock(pool);
> + continue;
> + }
Redundant check with DriverAutostart and since that's the only place
that calls us.... I think dropping the VIR_ERROR is fine...
storageDriverInitialize is the only place that calls UpdateAllState.
Based on the fact that 'Initialize' is executed before 'Autostart' I
think it might be better to remove the error check from 'Autostart' instead.
Erik