Description of problem:
Whenever you restart libvirt, all directory-based storage pools, regardless of their autostart status are always activated no matter what.
Version-Release number of selected component (if applicable):
Tested on version 0.8.7 through 0.9.1
Create a directory storage pool, restart libvirt and list the new pool.
Should be inactive, but it is instead active.
Steps to Reproduce:
1. virsh pool-define-as default dir --target /
2. virsh pool-list --all # pool is active, with autostart == no
3. service libvirtd restart
4. virsh pool-list --all
Upon restart, the new pool is activated.
Should be deactivated upon restart (with autostart == no)
The main problem I see is that "fixing" this the way you suggest is
changing the default behaviour for dir pools. I tend to think that default
behaviour for pool dir should be to have autostart = yes, now if the user
forces it to no, then I agree this should not show on libvirtd restart.
Regardless of the default (auto yes or no), libvirt is not respecting the user's choice.
If I manually disable autostart and restart libvirt, then the pool should not be started, no?
> Whenever you restart libvirt, all directory-based storage pools, regardless of
> their autostart status are always activated no matter what.
When libvirtd restarts it attempts to detect if any of its managed resources are already active. For example, if any guest VMs are running, it will detect this. We recently made it also detect if any storage pools are *already* running. Directory based storage pools are effectively always running, unless the filesystem on which they live has been unmounted, hence you are seeing them listed as running.
This behaviour is completely independant of the autostart flag, which is about instructing libvirtd to explicitly start storage pools that were *not already* running.