Add the new api zero_fs to erase the filesystem signatures on a device but now erase any data. Signed-off-by: Wanlong Gao <gaowanlong@cn.fujitsu.com> --- daemon/zero.c | 17 +++++++++++++++++ generator/generator_actions.ml | 14 ++++++++++++++ src/MAX_PROC_NR | 2 +- 3 files changed, 32 insertions(+), 1 deletions(-) diff --git a/daemon/zero.c b/daemon/zero.c index 398f844..348869f 100644 --- a/daemon/zero.c +++ b/daemon/zero.c @@ -73,6 +73,23 @@ do_zero (const char *device) } int +do_zero_fs (const char *device) +{ + int r; + char *err = NULL; + + const char *wipefs[] = {"wipefs", "-a", device, NULL}; + r = commandv (NULL, &err, wipefs); + if (r == -1) { + reply_with_error ("%s", err); + free (err); + return -1; + } + free (err); + return 0; +} + +int do_zero_device (const char *device) { int64_t ssize = do_blockdev_getsize64 (device); diff --git a/generator/generator_actions.ml b/generator/generator_actions.ml index 3a7be79..d27ef43 100644 --- a/generator/generator_actions.ml +++ b/generator/generator_actions.ml @@ -6651,6 +6651,20 @@ This option may not be specified at the same time as the C<correct> option. =back"); + ("zero_fs", (RErr, [Device "device"], []), 305, [Progress], + [InitBasicFSonLVM, Always, TestRun ( + [["zero_fs"; "/dev/VG/LV"]])], + "wipe a filesystem signature from a device", + "\ +This command can erase filesystem or raid signatures (magic strings) from +the specified C<device> to make the filesystem invisible for libblkid. +This does not erase the filesystem itself nor any other data from the C<device>. +Compare with C<guestfs_zero> which just zeroes the first few blocks of a +device, contained the partitions on the device, but this C<guestfs_zero_fs> +can't erase the partitions of a device. + +=back"); + ] let all_functions = non_daemon_functions @ daemon_functions diff --git a/src/MAX_PROC_NR b/src/MAX_PROC_NR index 873b744..67d04b9 100644 --- a/src/MAX_PROC_NR +++ b/src/MAX_PROC_NR @@ -1 +1 @@ -304 +305 -- 1.7.9