[virt-tools-list] [libvirt] [PATCH] virtinst: refresh pools status before fetch_pools
Michal Privoznik
mprivozn at redhat.com
Thu Dec 11 13:03:37 UTC 2014
On 11.12.2014 03:27, Chun Yan Liu wrote:
>
>
>>>> On 12/5/2014 at 09:54 PM, in message <5481B907.4040507 at redhat.com>, Cole
> Robinson <crobinso at redhat.com> wrote:
>> On 12/05/2014 03:40 AM, Chunyan Liu wrote:
>>> <snip/>
>>> + # Refresh pools before poll_helper. For those
>>> + # 'active' but target path not exist (or other reasons
>>> + # causing the pool not working), but libvirtd not
>>> + # refresh the status, this will make it refreshed
>>> + # and mark that pool as 'inactive'.
>>> + objs = backend.listAllStoragePools()
>>> + for obj in objs:
>>> + try:
>>> + obj.refresh(0)
>>> + except Exception, e:
>>> + pass
>>> +
>>> return _new_poll_helper(origmap, name,
>>> backend.listAllStoragePools, build_func)
>>> else:
>>>
>>
>> This is a very heavy hammer, refresh is a potentially long running operation
>>
>> so this could cause decent slowdown in some scenarios.
>>
>> IMO this is essentially a libvirt bug, for pools with target directories
>> (dir,
>> fs, netfs), libvirt should be periodically checking the directory ctime and
>> doing the pool refresh for us. And if the target has disappeared, it shuts
>> down the pool (like shutting down a VM if it crashes).
Makes sense to me. Although, refreshing a dir can again be a long
running job (consider dir pool built in a NFS mount). I wonder if we
should use {d,i,fa}notify or if checking ctime is enough.
Michal
More information about the virt-tools-list
mailing list