Missing features compared to Perl version:

 - user-custom in virt-v2v.conf to install custom packages (virt-customize?)
 - Fix configure_kernel on SUSE (see Mike Latimer's email)
 - testing

Proper progress bars when copying.

p2v:

 - vmlinuz + initrd? - if not possible, remove from man page
 - PXE boot
 - short transfers?
 - network dialog and network configuration
 - GUI controls for network mapping
 - GUI controls for p2v.output, p2v.output_storage, etc.

p2v/conversion.c:                "/tmp/virt-p2v-%04d%02d%02d-XXXXXXXX",
p2v/conversion.c:                   " -o local -os /tmp" /* XXX */
p2v/conversion.c:  /* XXX quoting needs to be improved here XXX */
p2v/gui.c:  /* XXX It would be nice not to have to set this explicitly, but
p2v/main.c:/* XXX Copied from fish/options.c. */
v2v/convert_linux.ml:           (* Get/construct the version.  XXX Read this fro
v2v/convert_linux.ml:          [ "sym53c8xx" (* XXX why not "ide"? *) ] in
v2v/convert_linux.ml:         * XXX RHEL 3 unfortunately will give this error an
v2v/convert_linux.ml:    XXX to do from original v2v:
v2v/convert_windows.ml:      g#upload rhev_apt_exe "/rhev-apt.exe"; (* XXX *)
v2v/convert_windows.ml:     * guests.  Unclear if this is correct.  XXX
v2v/source_libvirt.ml:             * XXX Quoting, although it's not needed for v
v2v/target_RHEV.ml:  (* Old virt-v2v ignored removable media. XXX *)
v2v/types.mli:  (* Only used by RHEV.  XXX Should be parameterized type. *)

For OVA support we need to have the source write to the final target
directory (where possible as it might not always be possible to do
that).  One way to do this is to have an early target hook, called
before Target_*.initialize.  This could return a hint to indicate
whether the target supports writing directly to the output storage
directory, and where that is, and then the source could use that to
write directory.  Also s_disks would need to contain a flag to
indicate that the main code shouldn't create overlays in this case.
