On 04/28/2011 10:34 AM, Michal Privoznik wrote:
Users often edit XML domain file stored in configuration directory
thinking of modifying a domain/network/pool/etc. Thus it is wise
to let them know they are using the wrong way and give them hint.
+++ b/src/conf/domain_conf.c
@@ -8543,6 +8543,7 @@ int virDomainSaveConfig(const char *configDir,
VIR_DOMAIN_XML_WRITE_FLAGS)))
goto cleanup;
+ virSavePrependWarning(&xml);
if (virDomainSaveXML(configDir, def, xml))
Prepending can be expensive - in the middle of the operation, we have to
have twice the space for xml malloc'd, and we are also spending time on
a memcpy from old memory to new. Is there any way to instead change
virDomainSaveXML and friends to take a flags argument, and pass 0 from
most callers but VIR_XML_EMIT_WARNING from these particular callers;
then if the flag is set, they call the common helper function:
virEmitXMLWarning(int fd)
which outputs the message directly into the target file prior to
outputting xml? That would be less memory pressure and copying involved.
--
Eric Blake eblake(a)redhat.com +1-801-349-2682
Libvirt virtualization library
http://libvirt.org