[Pkg-libvirt-commits] [libguestfs] 151/233: sparsify: Use new disk-create API instead of calling qemu-img.

Hilko Bengen bengen at moszumanska.debian.org
Wed Feb 19 21:11:51 UTC 2014


This is an automated email from the git hooks/post-receive script.

bengen pushed a commit to branch experimental
in repository libguestfs.

commit a594b7f90a682e2a9327b142138edb76ad8ba8ff
Author: Richard W.M. Jones <rjones at redhat.com>
Date:   Tue Jan 28 15:07:33 2014 +0000

    sparsify: Use new disk-create API instead of calling qemu-img.
    
    disk-create doesn't support the lazy_refcounts option.
---
 sparsify/sparsify.ml | 71 ++++++----------------------------------------------
 1 file changed, 7 insertions(+), 64 deletions(-)

diff --git a/sparsify/sparsify.ml b/sparsify/sparsify.ml
index 3e544db..212a23f 100644
--- a/sparsify/sparsify.ml
+++ b/sparsify/sparsify.ml
@@ -157,16 +157,6 @@ read the man page virt-sparsify(1).
     else
       Sys.getcwd () // indisk in
 
-  let contains_colon filename =
-    try ignore (String.index filename ':'); true with Not_found -> false in
-
-  (* Check filenames don't contain a colon (limitation of qemu-img). *)
-  if contains_colon indisk then
-    error (f_"input filename '%s' contains a colon (':'); qemu-img command line syntax prevents us from using such an image") indisk;
-
-  if contains_colon outdisk then
-    error (f_"output filename '%s' contains a colon (':'); qemu-img command line syntax prevents us from using such an image") outdisk;
-
   (* Check the output is not a block or char special (RHBZ#1056290). *)
   if is_block_device outdisk then
     error (f_"output '%s' cannot be a block device, it must be a regular file")
@@ -190,34 +180,6 @@ let () =
   let do_sigint _ = exit 1 in
   Sys.set_signal Sys.sigint (Sys.Signal_handle do_sigint)
 
-(* Try to determine which flag options qemu-img supports for qcow2.
- * We do this by creating and disposing of a few test images.  This
- * also detects if qemu-img is completely broken.
- *)
-let qemu_img_supports_compat11, qemu_img_supports_lazy_refcounts =
-  let test options =
-    let tmp = Filename.temp_file "test" ".qcow2" in
-    unlink_on_exit tmp;
-    let cmd = "qemu-img create -f qcow2" ^
-      (match options with None -> "" | Some opts -> " -o " ^ opts) ^
-      " " ^ tmp ^ " 128K > /dev/null" in
-    if verbose then printf "testing if '%s' works ... %!" cmd;
-    let r = Sys.command cmd = 0 in
-    if verbose then printf "%b\n" r;
-    r
-  in
-  if not (test None) then (
-    eprintf (f_"\
-'qemu-img create' cannot create qcow2 files.  Check the 'qemu-img'
-program is installed and working, and that it matches the version\
-of qemu installed.\n");
-    exit 1
-  );
-  let supports_compat11 = test (Some "compat=1.1") in
-  let supports_lazy_refcounts =
-    test (Some "compat=1.1,lazy_refcounts") in
-  supports_compat11, supports_lazy_refcounts
-
 (* What should the output format be?  If the user specified an
  * input format, use that, else detect it from the source image.
  *)
@@ -298,32 +260,13 @@ let overlaydisk =
   unlink_on_exit tmp;
 
   (* Create it with the indisk as the backing file. *)
-  let cmd =
-    let options =
-      let backing_file_option =
-        [sprintf "backing_file=%s" (replace_str indisk "," ",,")] in
-      let backing_fmt_option =
-        match format with
-        | None -> []
-        | Some fmt -> [sprintf "backing_fmt=%s" fmt] in
-      let compat11 =
-        if qemu_img_supports_compat11 then ["compat=1.1"] else [] in
-      let lazy_refcounts =
-        if qemu_img_supports_lazy_refcounts then
-          ["lazy_refcounts"]
-        else [] in
-      String.concat "," (
-        backing_file_option @
-        backing_fmt_option @
-        compat11 @
-        lazy_refcounts
-      ) in
-    sprintf "qemu-img create -f qcow2 -o %s %s > /dev/null"
-      (Filename.quote options) (Filename.quote tmp) in
-  if verbose then
-    printf "%s\n%!" cmd;
-  if Sys.command cmd <> 0 then
-    error (f_"external command failed: %s") cmd;
+  (* XXX Old code used to:
+   * - detect if compat=1.1 was supported
+   * - add lazy_refcounts option
+   *)
+  (new G.guestfs ())#disk_create
+    ~backingfile:indisk ?backingformat:format ~compat:"1.1"
+    tmp "qcow2" Int64.minus_one;
 
   tmp
 

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-libvirt/libguestfs.git



More information about the Pkg-libvirt-commits mailing list