On 02/09/2012 10:12 PM, Richard W.M. Jones wrote:
On Wed, Feb 08, 2012 at 01:32:47PM +0800, Wanlong Gao wrote:
> Add the new api wipefs to erase the filesystem signatures
> on a device but now erase any data.
Having had a bit of time to think about this, I think this comment is
right:
> -guestfs_zero should use wipefs. See wipefs(8).
wipefs is generally better (than "zero") in that it knows about what's
on the disk (via blkid) and only overwrites the minimum necessary to
remove partition tables, RAID signatures etc. This is good.
What's bad is that: (1) It probably doesn't work for formats that
blkid doesn't understand. (2) It doesn't preserve sparseness,
although arguably that doesn't matter because it's only overwriting
stuff that should be non-zero already.
Cf: libblkid/src/probe.c:blkid_do_wipe
daemon/zero.c:do_zero
On balance, I think that changing guestfs_zero to use wipefs is a
better way to approach this, but I'm open to opinions on this ...
Yeah, I also considered about this, since wipefs can't erase the partition
table, but guestfs_zero does, so, I'm afraid that if I use wipefs(8) to
change the internal of guestfs_zero, the function also changed.
Then, I also considered about just using libblkid's api to implement this api,
guestfs_wipefs or guestfs_zero, but I looked into util-linux and found
that the blkid_do_wipe() was introduced recently, not for long, and it may
not be in RHEL5, so, I just used the wipefs(8) to do this thing.
Here, if you like to change guestfs_zero's internal to use wipefs, I'd like
to do it, too. ;-P
Thanks
-Wanlong Gao
Rich.