[libvirt PATCH] qemu: fix domain start with corrupted save file

Pavel Mores pmores at redhat.com
Wed Apr 22 13:13:47 UTC 2020


On Wed, Apr 22, 2020 at 01:07:30PM +0200, Peter Krempa wrote:
> On Wed, Apr 22, 2020 at 12:54:26 +0200, Pavel Mores wrote:
> > This is to fix
> > 
> > https://bugzilla.redhat.com/show_bug.cgi?id=1791522
> 
> Please describe the bug in the commit message rather than have users
> open and try understand external links.

It's described in the next paragraph.

> 
> 
> > 
> > With this change, if a domain comes across a corrupted save file during boot it
> > removes the save file and logs a warning but continues to boot normally instead
> > of failing to boot (with a subsequent boot attempt succeeding).
> > 
> > The regression was introduced by 21ad56e932 and this change effectively reverts
> > the relevant part of that commit.
> 
> Please break commit messages at 72 colums as it's common.
> 
> 
> > ---
> >  src/qemu/qemu_driver.c | 3 ++-
> >  1 file changed, 2 insertions(+), 1 deletion(-)
> > 
> > diff --git a/src/qemu/qemu_driver.c b/src/qemu/qemu_driver.c
> > index e8d47a41cd..2579ef3984 100644
> > --- a/src/qemu/qemu_driver.c
> > +++ b/src/qemu/qemu_driver.c
> > @@ -6810,13 +6810,14 @@ qemuDomainSaveImageOpen(virQEMUDriverPtr driver,
> >      *ret_def = def;
> >      *ret_data = data;
> >  
> > + cleanup:
> >      return fd;
> >  
> >   error:
> >      virDomainDefFree(def);
> >      virQEMUSaveDataFree(data);
> >      VIR_FORCE_CLOSE(fd);
> > -    return -1;
> > +    goto cleanup;
> 
> I think this should be fixed properly. 'fd' is serving double duty of
> also reporting the erorrs here and it's not really obvious from this
> hunk. The code above sets 'fd' to a variety of values e.g. -3 on some
> errors. This is really tricky and hard to follow.
> 
> In this case we want a 'ret' variable which is set to the proper value
> and returned on error and fd returned on success or alternatively
> assigned to 'ret' right before returning it. This should make it
> possible to do it even without adding new not really useful labels.
> 




More information about the libvir-list mailing list