summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRichard Jones <rjones@redhat.com>2010-06-01 13:57:12 +0100
committerRichard Jones <rjones@redhat.com>2010-06-01 15:30:08 +0100
commit27b730a6820b80a49a4da1af9f4c8e8a952f735e (patch)
tree0942e13a9e75d313b4b9720b280e4990b10a8fe5
parent21c42e9fabf6cea3d564e338a314479ef120502a (diff)
downloadlibguestfs-27b730a6820b80a49a4da1af9f4c8e8a952f735e.tar.gz
libguestfs-27b730a6820b80a49a4da1af9f4c8e8a952f735e.tar.xz
libguestfs-27b730a6820b80a49a4da1af9f4c8e8a952f735e.zip
New APIs: vfs-label and vfs-uuid return label and uuid for many fs types.
These APIs generalize the existing 'get-e2label' and 'get-e2uuid' calls, to provide calls which should be able to get the label and UUID for most filesystem types. These use 'blkid' to do the work. I have tested that the blkid commands themselves work on RHEL 5. (Suggested by Yufang Zhang).
-rw-r--r--daemon/blkid.c12
-rw-r--r--src/MAX_PROC_NR2
-rwxr-xr-xsrc/generator.ml23
3 files changed, 36 insertions, 1 deletions
diff --git a/daemon/blkid.c b/daemon/blkid.c
index a6197308..108eee6f 100644
--- a/daemon/blkid.c
+++ b/daemon/blkid.c
@@ -64,3 +64,15 @@ do_vfs_type (const char *device)
{
return get_blkid_tag (device, "TYPE");
}
+
+char *
+do_vfs_label (const char *device)
+{
+ return get_blkid_tag (device, "LABEL");
+}
+
+char *
+do_vfs_uuid (const char *device)
+{
+ return get_blkid_tag (device, "UUID");
+}
diff --git a/src/MAX_PROC_NR b/src/MAX_PROC_NR
index 2197544d..f1aaa905 100644
--- a/src/MAX_PROC_NR
+++ b/src/MAX_PROC_NR
@@ -1 +1 @@
-252
+254
diff --git a/src/generator.ml b/src/generator.ml
index 58eaee45..85a867e0 100755
--- a/src/generator.ml
+++ b/src/generator.ml
@@ -4754,6 +4754,29 @@ Do not confuse this with the guestfish-specific
C<alloc> and C<sparse> commands which create
a file in the host and attach it as a device.");
+ ("vfs_label", (RString "label", [Device "device"]), 253, [],
+ [InitBasicFS, Always, TestOutput (
+ [["set_e2label"; "/dev/sda1"; "LTEST"];
+ ["vfs_label"; "/dev/sda1"]], "LTEST")],
+ "get the filesystem label",
+ "\
+This returns the filesystem label of the filesystem on
+C<device>.
+
+If the filesystem is unlabeled, this returns the empty string.");
+
+ ("vfs_uuid", (RString "uuid", [Device "device"]), 254, [],
+ (let uuid = uuidgen () in
+ [InitBasicFS, Always, TestOutput (
+ [["set_e2uuid"; "/dev/sda1"; uuid];
+ ["vfs_uuid"; "/dev/sda1"]], uuid)]),
+ "get the filesystem UUID",
+ "\
+This returns the filesystem UUID of the filesystem on
+C<device>.
+
+If the filesystem does not have a UUID, this returns the empty string.");
+
]
let all_functions = non_daemon_functions @ daemon_functions