Added 'zero' command to wipe partition tables and superblocks.
[libguestfs.git] / java / com / redhat / et / libguestfs / GuestFS.java
index fdf6e4e..293ee23 100644 (file)
@@ -319,9 +319,12 @@ public class GuestFS {
    * set autosync mode
    *
    * If "autosync" is true, this enables autosync. Libguestfs
-   * will make a best effort attempt to run "g.sync" when the
-   * handle is closed (also if the program exits without
-   * closing handles).
+   * will make a best effort attempt to run "g.umount_all"
+   * followed by "g.sync" when the handle is closed (also if
+   * the program exits without closing handles).
+   * 
+   * This is disabled by default (except in guestfish where
+   * it is enabled by default).
    * 
    * @throws LibGuestFSException
    */
@@ -2353,4 +2356,53 @@ public class GuestFS {
   private native String _get_e2uuid (long g, String device)
     throws LibGuestFSException;
 
+  /**
+   * run the filesystem checker
+   *
+   * This runs the filesystem checker (fsck) on "device"
+   * which should have filesystem type "fstype".
+   * 
+   * The returned integer is the status. See fsck(8) for the
+   * list of status codes from "fsck", and note that multiple
+   * status codes can be summed together.
+   * 
+   * It is entirely equivalent to running "fsck -a -t fstype
+   * device". Note that checking or repairing NTFS volumes is
+   * not supported (by linux-ntfs).
+   * 
+   * @throws LibGuestFSException
+   */
+  public int fsck (String fstype, String device)
+    throws LibGuestFSException
+  {
+    if (g == 0)
+      throw new LibGuestFSException ("fsck: handle is closed");
+    return _fsck (g, fstype, device);
+  }
+  private native int _fsck (long g, String fstype, String device)
+    throws LibGuestFSException;
+
+  /**
+   * write zeroes to the device
+   *
+   * This command writes zeroes over the first few blocks of
+   * "device".
+   * 
+   * How many blocks are zeroed isn't specified (but it's
+   * *not* enough to securely wipe the device). It should be
+   * sufficient to remove any partition tables, filesystem
+   * superblocks and so on.
+   * 
+   * @throws LibGuestFSException
+   */
+  public void zero (String device)
+    throws LibGuestFSException
+  {
+    if (g == 0)
+      throw new LibGuestFSException ("zero: handle is closed");
+    _zero (g, device);
+  }
+  private native void _zero (long g, String device)
+    throws LibGuestFSException;
+
 }