domain: how long is new xml in saved file

Andrea Bolognani abologna at redhat.com
Mon Apr 27 08:17:52 UTC 2020


On Fri, 2020-04-24 at 10:20 -0500, Eric Blake wrote:
> On 4/24/20 7:37 AM, Daniel P. Berrangé wrote:
> > On Fri, Apr 24, 2020 at 02:33:13PM +0200, Michal Privoznik wrote:
> > > On 4/24/20 6:38 AM, Vincent Wu wrote:
> > > 
> > > The save format is fragile. At the beginning there is a header which
> > > describes the file, then there is libvirt section (which contains the domain
> > > XML and a cookie) and then there is QEMU section (where QEMU saved the guest
> > > memory). Because of this, we have to have the check you are hitting in place
> > > so that we don't accidentally overwrite the QEMU section.
> > 
> > BTW, does anyone recall why we were so restrictive on the XML length
> > in the first place ?  I looked at history and didn't see why we did
> > it this way.
> > 
> > It occurrs to me that given guest typical RAM sizes measuring many
> > 100's of MB, we could easily make the header section have 1 MB of
> > padding, and thus allow essentially arbitrary XML updates without
> > worry about hitting a size limit.
> 
> We've had guest XML reaching 1M before, but I agree that the initial 
> saved image creation should include padding to a nice boundary to make 
> future edits less likely to overflow the reserved heading.
> 
> On new enough Linux, some file systems support 
> fallocate(FALLOC_FL_INSERT_RANGE) which can splice in a hole (all later 
> file contents are shifted in offsets); maybe our save code could take 
> advantage of that to repair existing saved images with insufficient 
> header size in a more efficient manner than manually shifting the rest 
> of the file contents ourselves.

There's a bug filed for this:

  https://bugzilla.redhat.com/show_bug.cgi?id=1229255

Both you and Dan commented on it at some point, but I thought I'd
bring it up in case you forgot - it was a while ago :)

-- 
Andrea Bolognani / Red Hat / Virtualization




More information about the libvirt-users mailing list