[Libguestfs] [PATCH] rhv-upload: Support qcow2 disks

Nir Soffer nsoffer at redhat.com
Mon Nov 25 23:54:29 UTC 2019


On Mon, Nov 25, 2019 at 4:37 PM Richard W.M. Jones <rjones at redhat.com> wrote:
>
> On Mon, Nov 25, 2019 at 04:27:11PM +0200, Nir Soffer wrote:
> > On Mon, Nov 25, 2019, 11:15 Richard W.M. Jones <rjones at redhat.com> wrote:
> >
> > > On Wed, Nov 20, 2019 at 03:06:55AM +0200, Nir Soffer wrote:
> > > > diff --git a/v2v/v2v.ml b/v2v/v2v.ml
> > > > index 03590c9e..58bb06c3 100644
> > > > --- a/v2v/v2v.ml
> > > > +++ b/v2v/v2v.ml
> > > > @@ -739,7 +739,9 @@ and copy_targets cmdline targets input output =
> > > >            | TargetURI uri -> uri in
> > > >          [ "qemu-img"; "convert" ] @
> > > >          (if not (quiet ()) then [ "-p" ] else []) @
> > > > -        [ "-n"; "-f"; "qcow2"; "-O"; t.target_format ] @
> > > > +        (* XXX When using NBD we must use raw format, not the
> > > target_format
> > > > +        * which is the disk format. commpressed format will also not
> > > work. *)
> > > > +        [ "-n"; "-f"; "qcow2"; "-O"; "raw" ] @
> > >
> > > This is going to break all the other output modes.
> > >
> > > You probably want to define a new method output#override_output_format
> > > (see v2v.ml:get_target_formats and types.mli).
> > >
> >
> > Maybe outpu#tranfer_format?
> > Return output_format by default, rhv_output will override it to return raw?
>
> Isn't that essentially what #override_output_format virtual method
> does already?

No, it overrides target format (as I thought). If you implement:

  (* Force raw output, ignoring -of command line option. *)
  method override_output_format _ = Some "raw"

And you run:

    vit-v2v -of qcow2 ...

It creates the command:

    qemu-img convert -O raw ...

But the rhv-upload-plugin gets these params:

    using params: {'disk_format': 'raw', ...

And then we create a raw disk on oVirt side.

What we need is to create qcow2 disk, and use -O raw.

If this was written in python, I can think of this interface:

    class Output:
        def transfer_format(self):
            return self.target_format

Outputs that want to always use raw format would implement:

   class OutputRHVUpload:
        def transfer_format(self):
            return "raw"

So the v2v command line will be:

    ...
    [ "-n"; "-f"; "qcow2"; "-O"; t.transfer_format ] @
    ...

Nir





More information about the Libguestfs mailing list