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)
+ )
+ );
+
(* Find files in [dir] ending with [ext]. *)
let find_files dir ext =
let rec loop = function
--
2.7.4