summaryrefslogtreecommitdiffstats
path: root/generator
diff options
context:
space:
mode:
authorRichard W.M. Jones <rjones@redhat.com>2011-05-17 22:06:00 +0100
committerRichard W.M. Jones <rjones@redhat.com>2011-05-17 22:06:00 +0100
commit598484729632d1207dc3e1493f27499de18d2242 (patch)
treed67ef79604272e75c07fb1f2f24fd3abdd60a469 /generator
parentef6f877b9df261fad1fbf361b8ce7af1055dfbb7 (diff)
downloadlibguestfs-598484729632d1207dc3e1493f27499de18d2242.tar.gz
libguestfs-598484729632d1207dc3e1493f27499de18d2242.tar.xz
libguestfs-598484729632d1207dc3e1493f27499de18d2242.zip
New APIs: is-zero and is-zero-device, to test if file or device is all zeroes.
Diffstat (limited to 'generator')
-rw-r--r--generator/generator_actions.ml28
1 files changed, 26 insertions, 2 deletions
diff --git a/generator/generator_actions.ml b/generator/generator_actions.ml
index 44f47df1..d0aac875 100644
--- a/generator/generator_actions.ml
+++ b/generator/generator_actions.ml
@@ -2273,7 +2273,7 @@ command and it can change in future in ways beyond our control.
In other words, the output is not guaranteed by the ABI.
See also: L<file(1)>, C<guestfs_vfs_type>, C<guestfs_lstat>,
-C<guestfs_is_file>, C<guestfs_is_blockdev> (etc).");
+C<guestfs_is_file>, C<guestfs_is_blockdev> (etc), C<guestfs_is_zero>.");
("command", (RString "output", [StringList "arguments"], []), 50, [ProtocolLimitWarning],
[InitScratchFS, Always, TestOutput (
@@ -2979,7 +2979,8 @@ How many blocks are zeroed isn't specified (but it's I<not> enough
to securely wipe the device). It should be sufficient to remove
any partition tables, filesystem superblocks and so on.
-See also: C<guestfs_zero_device>, C<guestfs_scrub_device>.");
+See also: C<guestfs_zero_device>, C<guestfs_scrub_device>,
+C<guestfs_is_zero_device>");
("grub_install", (RErr, [Pathname "root"; Device "device"], []), 86, [],
(* See:
@@ -5937,6 +5938,29 @@ Instead, use the autosync flag (C<guestfs_set_autosync>) to
control whether or not this operation is performed when the
handle is closed.");
+ ("is_zero", (RBool "zeroflag", [Pathname "path"], []), 283, [],
+ [InitISOFS, Always, TestOutputTrue (
+ [["is_zero"; "/100kallzeroes"]]);
+ InitISOFS, Always, TestOutputFalse (
+ [["is_zero"; "/100kallspaces"]])],
+ "test if a file contains all zero bytes",
+ "\
+This returns true iff the file exists and the file is empty or
+it contains all zero bytes.");
+
+ ("is_zero_device", (RBool "zeroflag", [Device "device"], []), 284, [],
+ [InitBasicFS, Always, TestOutputTrue (
+ [["umount"; "/dev/sda1"];
+ ["zero_device"; "/dev/sda1"];
+ ["is_zero_device"; "/dev/sda1"]]);
+ InitBasicFS, Always, TestOutputFalse (
+ [["is_zero_device"; "/dev/sda1"]])],
+ "test if a device contains all zero bytes",
+ "\
+This returns true iff the device exists and contains all zero bytes.
+
+Note that for large devices this can take a long time to run.");
+
]
let all_functions = non_daemon_functions @ daemon_functions