]> xenbits.xensource.com Git - people/liuw/libxenctrl-split/libvirt.git/commitdiff
storage: Fix regression in storagePoolUpdateAllState
authorErik Skultety <eskultet@redhat.com>
Thu, 2 Jul 2015 12:41:37 +0000 (14:41 +0200)
committerErik Skultety <eskultet@redhat.com>
Wed, 8 Jul 2015 10:21:25 +0000 (12:21 +0200)
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

index e600514cc04fc5419c103b65c45822564af856fb..d3cdbc5ba60d70be2c651cc53fbe61dfa492ca5a 100644 (file)
@@ -142,11 +142,6 @@ storagePoolUpdateAllState(void)
         virStoragePoolObjPtr pool = driver->pools.objs[i];
 
         virStoragePoolObjLock(pool);
-        if (!virStoragePoolObjIsActive(pool)) {
-            virStoragePoolObjUnlock(pool);
-            continue;
-        }
-
         storagePoolUpdateState(pool);
         virStoragePoolObjUnlock(pool);
     }