summaryrefslogtreecommitdiffstats
path: root/sparsify
diff options
context:
space:
mode:
authorRichard W.M. Jones <rjones@redhat.com>2011-11-22 10:11:10 +0000
committerRichard W.M. Jones <rjones@redhat.com>2011-11-22 10:11:10 +0000
commitce6c4eeabe3f2ce96d11d6d55c3ac6aca542d4c8 (patch)
tree9c1b9270d04cfa3a36c5b27d023997ef9f9454fa /sparsify
parentb83b705959c3c93bff0c343bcad09305399895a5 (diff)
downloadlibguestfs-ce6c4eeabe3f2ce96d11d6d55c3ac6aca542d4c8.tar.gz
libguestfs-ce6c4eeabe3f2ce96d11d6d55c3ac6aca542d4c8.tar.xz
libguestfs-ce6c4eeabe3f2ce96d11d6d55c3ac6aca542d4c8.zip
sparsify: Add -o option for passing qemu-img output format options.
Diffstat (limited to 'sparsify')
-rw-r--r--sparsify/sparsify.ml14
-rw-r--r--sparsify/virt-sparsify.pod14
2 files changed, 23 insertions, 5 deletions
diff --git a/sparsify/sparsify.ml b/sparsify/sparsify.ml
index 47dbbb95..4e438ac2 100644
--- a/sparsify/sparsify.ml
+++ b/sparsify/sparsify.ml
@@ -29,7 +29,7 @@ let () = Random.self_init ()
let prog = Filename.basename Sys.executable_name
let indisk, outdisk, compress, convert, format, ignores, machine_readable,
- quiet, verbose, trace =
+ option, quiet, verbose, trace =
let display_version () =
let g = new G.guestfs () in
let version = g#version () in
@@ -45,6 +45,7 @@ let indisk, outdisk, compress, convert, format, ignores, machine_readable,
let format = ref "" in
let ignores = ref [] in
let machine_readable = ref false in
+ let option = ref "" in
let quiet = ref false in
let verbose = ref false in
let trace = ref false in
@@ -55,6 +56,7 @@ let indisk, outdisk, compress, convert, format, ignores, machine_readable,
"--format", Arg.Set_string format, "format Format of input disk";
"--ignore", Arg.String (add ignores), "fs Ignore filesystem";
"--machine-readable", Arg.Set machine_readable, " Make output machine readable";
+ "-o", Arg.Set_string option, "option Add qemu-img options";
"-q", Arg.Set quiet, " Quiet output";
"--quiet", Arg.Set quiet, " -\"-";
"-v", Arg.Set verbose, " Enable debugging messages";
@@ -83,6 +85,7 @@ read the man page virt-sparsify(1).
let format = match !format with "" -> None | str -> Some str in
let ignores = List.rev !ignores in
let machine_readable = !machine_readable in
+ let option = match !option with "" -> None | str -> Some str in
let quiet = !quiet in
let verbose = !verbose in
let trace = !trace in
@@ -126,7 +129,7 @@ read the man page virt-sparsify(1).
error "input filename '%s' contains a comma; qemu-img command line syntax prevents us from using such an image" indisk;
indisk, outdisk, compress, convert, format, ignores, machine_readable,
- quiet, verbose, trace
+ option, quiet, verbose, trace
let () =
if not quiet then
@@ -290,11 +293,14 @@ let () =
printf "Copy to destination and make sparse ...\n%!";
let cmd =
- sprintf "qemu-img convert -f qcow2 -O %s%s %s %s"
+ sprintf "qemu-img convert -f qcow2 -O %s%s%s %s %s"
(Filename.quote output_format)
(if compress then " -c" else "")
+ (match option with
+ | None -> ""
+ | Some option -> " -o " ^ Filename.quote option)
(Filename.quote overlaydisk) (Filename.quote outdisk) in
- if verbose then
+(* if verbose then*)
printf "%s\n%!" cmd;
if Sys.command cmd <> 0 then
error "external command failed: %s" cmd
diff --git a/sparsify/virt-sparsify.pod b/sparsify/virt-sparsify.pod
index d25f013f..6653787a 100644
--- a/sparsify/virt-sparsify.pod
+++ b/sparsify/virt-sparsify.pod
@@ -126,7 +126,7 @@ eg. C<vmdk>, but support for other formats is reliant on qemu.
Specifying the I<--convert> option is usually a good idea, because
then virt-sparsify doesn't need to try to guess the input format.
-For fine-tuning the output format, see: I<--compress>.
+For fine-tuning the output format, see: I<--compress>, I<-o>.
=item B<--format> raw
@@ -156,6 +156,18 @@ This option is used to make the output more machine friendly
when being parsed by other programs. See
L</MACHINE READABLE OUTPUT> below.
+=item B<-o> option[,option,...]
+
+Pass I<-o> option(s) to the L<qemu-img(1)> command to fine-tune the
+output format. Options available depend on the output format (see
+I<--convert>) and the installed version of the qemu-img program.
+
+You should use I<-o> at most once. To pass multiple options, separate
+them with commas, eg:
+
+ virt-sparsify --convert qcow2 \
+ -o cluster_size=512,preallocation=metadata ...
+
=item B<-q>
=item B<--quiet>