On Monday, 12 September 2016 11:53:26 CEST Richard W.M. Jones wrote:
Only do this if running as root and if the backend is set
to libvirt.
---
v2v/input_ova.ml | 13 +++++++++++++
1 file changed, 13 insertions(+)
diff --git a/v2v/input_ova.ml b/v2v/input_ova.ml
index 4f848e2..bb9cb1b 100644
--- a/v2v/input_ova.ml
+++ b/v2v/input_ova.ml
@@ -104,6 +104,19 @@ object
(* Exploded path must be absolute (RHBZ#1155121). *)
let exploded = absolute_path exploded in
+ (* If virt-v2v is running as root, and the backend is libvirt, then
+ * we have to chmod the directory to 0755 and files to 0644
+ * so it is readable by qemu.qemu. This is libvirt bug RHBZ#890291.
+ *)
+ if Unix.geteuid () = 0 then (
+ let libguestfs_backend = (open_guestfs ())#get_backend () in
+ if libguestfs_backend = "libvirt" then (
+ warning (f_"making OVA directory public readable to workaround libvirt bug
https://bugzilla.redhat.com/890291");
+ let cmd = [ "chmod"; "-R"; "go=u,go-w"; exploded ]
in
+ ignore (run_command cmd)
+ )
+ );
+
The problem is that if the ova is specified as directory, this will
change its permissions, which is not expected.
I'd put this once when creating tmpdir above, right after the
Mkdtemp.temp_dir for it: this way you don't need -R for chmod.
--
Pino Toscano