Details
Description
When getStoragePool() in the LibvirtStorageAdapter is called it asks libvirt for information regarding that storage pool.
In the process the StorageAdapter asks libvirt to 'refresh' the storage pool.
Refreshing a storage pool means that libvirt will scan the whole pool and get information about all the volumes which it then caches.
getStoragePool() is called for almost every storage operation in KVM and that causes delays.
On big (RBD) storage pools such a refresh can take up to 2 or 3 minutes.
The StatsCollector in the Management Server asks all the hosts about the storage pools as well, so we should only refresh the pool when the StatsCollector wants storage statistics.
This way we keep the information in libvirt up to date, but we also speed up storage tasks on KVM.