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
--
1.8.4.2