On 12/07/2015 03:47 PM, John Ferlan wrote:
These patches resolve issues with 'FS', 'NFS', and
'LOGICAL' pools where
if the pool source device didn't match the reality what was running on
the host there were inconsistent results.
For the file pools, a pool would be declared 'active' after restart even
though a start would fail because the check code only cared that the device
the pool was using was mounted. Patches 3 alters the check to not only
make sure the device is mounted, but that the source for the device matches
the source used to start the pool.
For the logical pool, a pool could be both started and declared 'active'
on restart as long as the "pool->def->source.name" was a valid volume
group on the host even though the pool's source device(s) didn't match
the same volume group. Usually the pool build process takes care of
ensuring not only that the source device exists, but matching the
device(s) to the volume group name create (via vgcreate). The reality
is pool startup never checked that the volume group name being used
by the pool matched the reality of the volume group on the host. Patch
5 will now ensure not only startup matches the name and device list,
but that restart setting 'active' would do the same.
John Ferlan (5):
storage: Create helper to generate FS pool source value
storage: Refactor virStorageBackendFileSystemGetPoolSource
storage: Check FS pool source during
virStorageBackendFileSystemIsMounted
storage: Create helper for virStorageBackendLogicalFindPoolSources
storage: Add helper to compare logical pool def against pvs output
src/storage/storage_backend_fs.c | 73 ++++++++++++-----
src/storage/storage_backend_logical.c | 148 +++++++++++++++++++++++++++++-----
2 files changed, 182 insertions(+), 39 deletions(-)
Adjusted patch 1 & 5 as suggested and pushed.
Thanks -
John