summaryrefslogtreecommitdiffstats
path: root/java
diff options
context:
space:
mode:
Diffstat (limited to 'java')
-rw-r--r--java/com/redhat/et/libguestfs/GuestFS.java69
-rw-r--r--java/com_redhat_et_libguestfs_GuestFS.c51
2 files changed, 117 insertions, 3 deletions
diff --git a/java/com/redhat/et/libguestfs/GuestFS.java b/java/com/redhat/et/libguestfs/GuestFS.java
index f1cd508b..04a8124c 100644
--- a/java/com/redhat/et/libguestfs/GuestFS.java
+++ b/java/com/redhat/et/libguestfs/GuestFS.java
@@ -1723,10 +1723,10 @@ public class GuestFS {
throws LibGuestFSException;
/**
- * get ext2/ext3 superblock details
+ * get ext2/ext3/ext4 superblock details
*
- * This returns the contents of the ext2 or ext3 filesystem
- * superblock on "device".
+ * This returns the contents of the ext2, ext3 or ext4
+ * filesystem superblock on "device".
*
* It is the same as running "tune2fs -l device". See
* tune2fs(8) manpage for more details. The list of fields
@@ -2209,4 +2209,67 @@ public class GuestFS {
private native String _debug (long g, String subcmd, String[] extraargs)
throws LibGuestFSException;
+ /**
+ * remove an LVM logical volume
+ *
+ * Remove an LVM logical volume "device", where "device" is
+ * the path to the LV, such as "/dev/VG/LV".
+ *
+ * You can also remove all LVs in a volume group by
+ * specifying the VG name, "/dev/VG".
+ *
+ * @throws LibGuestFSException
+ */
+ public void lvremove (String device)
+ throws LibGuestFSException
+ {
+ if (g == 0)
+ throw new LibGuestFSException ("lvremove: handle is closed");
+ _lvremove (g, device);
+ }
+ private native void _lvremove (long g, String device)
+ throws LibGuestFSException;
+
+ /**
+ * remove an LVM volume group
+ *
+ * Remove an LVM volume group "vgname", (for example "VG").
+ *
+ * This also forcibly removes all logical volumes in the
+ * volume group (if any).
+ *
+ * @throws LibGuestFSException
+ */
+ public void vgremove (String vgname)
+ throws LibGuestFSException
+ {
+ if (g == 0)
+ throw new LibGuestFSException ("vgremove: handle is closed");
+ _vgremove (g, vgname);
+ }
+ private native void _vgremove (long g, String vgname)
+ throws LibGuestFSException;
+
+ /**
+ * remove an LVM physical volume
+ *
+ * This wipes a physical volume "device" so that LVM will
+ * no longer recognise it.
+ *
+ * The implementation uses the "pvremove" command which
+ * refuses to wipe physical volumes that contain any volume
+ * groups, so you have to remove those first.
+ *
+ * @throws LibGuestFSException
+ */
+ public void pvremove (String device)
+ throws LibGuestFSException
+ {
+ if (g == 0)
+ throw new LibGuestFSException ("pvremove: handle is closed");
+ _pvremove (g, device);
+ }
+ private native void _pvremove (long g, String device)
+ throws LibGuestFSException;
+
}
diff --git a/java/com_redhat_et_libguestfs_GuestFS.c b/java/com_redhat_et_libguestfs_GuestFS.c
index 4b96c262..8f5e3537 100644
--- a/java/com_redhat_et_libguestfs_GuestFS.c
+++ b/java/com_redhat_et_libguestfs_GuestFS.c
@@ -2266,3 +2266,54 @@ Java_com_redhat_et_libguestfs_GuestFS__1debug
return jr;
}
+JNIEXPORT void JNICALL
+Java_com_redhat_et_libguestfs_GuestFS__1lvremove
+ (JNIEnv *env, jobject obj, jlong jg, jstring jdevice)
+{
+ guestfs_h *g = (guestfs_h *) (long) jg;
+ int r;
+ const char *device;
+
+ device = (*env)->GetStringUTFChars (env, jdevice, NULL);
+ r = guestfs_lvremove (g, device);
+ (*env)->ReleaseStringUTFChars (env, jdevice, device);
+ if (r == -1) {
+ throw_exception (env, guestfs_last_error (g));
+ return ;
+ }
+}
+
+JNIEXPORT void JNICALL
+Java_com_redhat_et_libguestfs_GuestFS__1vgremove
+ (JNIEnv *env, jobject obj, jlong jg, jstring jvgname)
+{
+ guestfs_h *g = (guestfs_h *) (long) jg;
+ int r;
+ const char *vgname;
+
+ vgname = (*env)->GetStringUTFChars (env, jvgname, NULL);
+ r = guestfs_vgremove (g, vgname);
+ (*env)->ReleaseStringUTFChars (env, jvgname, vgname);
+ if (r == -1) {
+ throw_exception (env, guestfs_last_error (g));
+ return ;
+ }
+}
+
+JNIEXPORT void JNICALL
+Java_com_redhat_et_libguestfs_GuestFS__1pvremove
+ (JNIEnv *env, jobject obj, jlong jg, jstring jdevice)
+{
+ guestfs_h *g = (guestfs_h *) (long) jg;
+ int r;
+ const char *device;
+
+ device = (*env)->GetStringUTFChars (env, jdevice, NULL);
+ r = guestfs_pvremove (g, device);
+ (*env)->ReleaseStringUTFChars (env, jdevice, device);
+ if (r == -1) {
+ throw_exception (env, guestfs_last_error (g));
+ return ;
+ }
+}
+