[libvirt] storage: pool definition discarded by pool-create failure

Osier Yang jyang at redhat.com
Tue Nov 22 04:03:18 UTC 2011


On 2011年11月22日 10:38, lvroyce wrote:
> 1.how to reproduce:
> (1)just use LVM disk,leave libvirt create vg
> (2)xml:
> <pool type='logical'>
> <name>pic_pool2</name>
> <source>
> <device path='/dev/sdb1'/>
> <device path='/dev/sdb2'/>
> </source>
> <target>
> <path>/dev/pic_pool2</path>
> </target>
> </pool>
>
> (3)steps:
> a.start libvirtd,copy xml
> b.virsh pool-define lvm_pool.xml
> c.virsh pool-list --all
> lvm_pool exsists
> c.virsh pool-create lvm_pool.xml
> lvm_pool disappears
>
> 2.analyze:
> here pool-create fails because of vg has not been built before 
> "vgchange",and pool-create will delete pool-def after failure.
> pool-create can fail because a lot of reasons, but it doesn't mean 
> previous pool definition should be obselete,previous definition should 
> remain unchanged if following pool management fails.

Actually there is similiar problem for domain "create" too.

# virsh define test.xml
# virsh create test.xml

It's caused domainCreateXML will free the domain config
regardless of if the domain is persistent or not. But the
persistent XML file is not removed, once libvirtd is restarted,
you will see the domain again.

The problem here is it should check if the domain conf
is persistent before free() it, or prohibit creating the domain
if it's already defined. Not sure which way is better, but
considering we allow to re-define a domain config, may
be the first way is right way to go?

Regards,
Osier





More information about the libvir-list mailing list