New APIs: vfs-label and vfs-uuid return label and uuid for many fs types.
authorRichard Jones <rjones@redhat.com>
Tue, 1 Jun 2010 12:57:12 +0000 (13:57 +0100)
committerRichard Jones <rjones@redhat.com>
Tue, 1 Jun 2010 14:30:08 +0000 (15:30 +0100)
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).

daemon/blkid.c
src/MAX_PROC_NR
src/generator.ml

index a619730..108eee6 100644 (file)
@@ -64,3 +64,15 @@ do_vfs_type (const char *device)
 {
   return get_blkid_tag (device, "TYPE");
 }
 {
   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");
+}
index 2197544..f1aaa90 100644 (file)
@@ -1 +1 @@
-252
+254
index 58eaee4..85a867e 100755 (executable)
@@ -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.");
 
 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
 ]
 
 let all_functions = non_daemon_functions @ daemon_functions