On Wed, Aug 09, 2017 at 02:55:36PM +0200, Michal Privoznik wrote: > On 08/09/2017 02:14 PM, Daniel P. Berrange wrote: > > On Wed, Aug 09, 2017 at 02:00:06PM +0200, Michal Privoznik wrote: > >> https://bugzilla.redhat.com/show_bug.cgi?id=1467245 > >> > >> Currently, there's a bug when undefining a domain with NVRAM > >> store. Basically, the unlink() of the NVRAM store file happens > >> during the undefine procedure iff domain is inactive. So, if > >> domain is running and undefine is called the file is left behind. > >> It won't be removed in the domain cleanup process either > >> (qemuProcessStop). To avoid this forbid undefining domain with > >> NVRAM file. > > > > Why do we need to forbid it ? Even if QEMU still has an open > > file handle, it can continue to write to it after we unlink > > it. > > > > > > That's what my v1 does. Anyway, there's third option: just recently > Jirka added possibility to do some actions when domain is destroyed. He > needed it for some migration work, but the design is broad enough to fit > this problem too. What we can do is: > > if (flags & VIR_DOMAIN_UNDEFINE_NVRAM): > if domain is running: > register the callback /* that merely just unlinks the file */ > else: > unlink > else: > if (!(flags & VIR_DOMAIN_UNDEFINE_KEEP_NVRAM)): > error > > > What do you guys think of this one? The callback will be lost if libvirtd restarts. Regards, Daniel -- |: https://berrange.com -o- https://www.flickr.com/photos/dberrange :| |: https://libvirt.org -o- https://fstop138.berrange.com :| |: https://entangle-photo.org -o- https://www.instagram.com/dberrange :| -- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list