Re: [PATCH V4 08/18] qemu: Add helper function for creating save image fd

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Wed, Mar 19, 2025 at 05:09:01PM -0600, Jim Fehlig wrote:
> On 3/19/25 06:49, Daniel P. Berrangé wrote:
> > On Wed, Mar 05, 2025 at 03:48:17PM -0700, Jim Fehlig via Devel wrote:
> > > Move the code in qemuSaveImageCreate that opens, labels, and wraps the
> > > save image fd to a helper function, providing more flexibility for
> > > upcoming mapped-ram support.
> > > 
> > > Signed-off-by: Jim Fehlig <jfehlig@xxxxxxxx>
> > > ---
> > >   src/qemu/qemu_saveimage.c | 65 +++++++++++++++++++++++++++------------
> > >   1 file changed, 45 insertions(+), 20 deletions(-)
> > > 
> > > diff --git a/src/qemu/qemu_saveimage.c b/src/qemu/qemu_saveimage.c
> > > index 29b4e39879..e3f6a0ad0f 100644
> > > --- a/src/qemu/qemu_saveimage.c
> > > +++ b/src/qemu/qemu_saveimage.c
> > > @@ -425,6 +425,50 @@ qemuSaveImageDecompressionStop(virCommand *cmd,
> > >   }
> > > +static int
> > > +qemuSaveImageCreateFd(virQEMUDriver *driver,
> > > +                      virDomainObj *vm,
> > > +                      const char *path,
> > > +                      virFileWrapperFd *wrapperFd,
> > 
> > Doesn't this need to be virFileWrapperFd **, otherwise...
> > 
> > > +                      bool *needUnlink,
> > > +                      unsigned int flags)
> > > +{
> > > +    g_autoptr(virQEMUDriverConfig) cfg = virQEMUDriverGetConfig(driver);
> > > +    int ret = -1;
> > > +    VIR_AUTOCLOSE fd = -1;
> > > +    int directFlag = 0;
> > > +    unsigned int wrapperFlags = VIR_FILE_WRAPPER_NON_BLOCKING;
> > > +
> > > +    if (flags & VIR_DOMAIN_SAVE_BYPASS_CACHE) {
> > > +        wrapperFlags |= VIR_FILE_WRAPPER_BYPASS_CACHE;
> > > +        directFlag = virFileDirectFdFlag();
> > > +        if (directFlag < 0) {
> > > +            virReportError(VIR_ERR_OPERATION_FAILED, "%s",
> > > +                           _("bypass cache unsupported by this system"));
> > > +            return -1;
> > > +        }
> > > +    }
> > > +
> > > +    fd = virQEMUFileOpenAs(cfg->user, cfg->group, false, path,
> > > +                           O_WRONLY | O_TRUNC | O_CREAT | directFlag,
> > > +                           needUnlink);
> > > +
> > > +    if (fd < 0)
> > > +        return -1;
> > > +
> > > +    if (qemuSecuritySetImageFDLabel(driver->securityManager, vm->def, fd) < 0)
> > > +        return -1;
> > > +
> > > +    if (!(wrapperFd = virFileWrapperFdNew(&fd, path, wrapperFlags)))
> > > +        return -1;
> > 
> > ....this assignment won't be visible to the caller
> 
> Opps, which makes qemuDomainFileWrapperFDClose a NOP in all cases. I've
> applied the below diff locally. Any need to respin this series?

..snip..

Reviewed-by: Daniel P. Berrangé <berrange@xxxxxxxxxx>



With 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 :|




[Index of Archives]     [Virt Tools]     [Libvirt Users]     [Lib OS Info]     [Fedora Users]     [Fedora Desktop]     [Fedora SELinux]     [Big List of Linux Books]     [Yosemite News]     [KDE Users]     [Fedora Tools]

  Powered by Linux