diff options
author | Richard Jones <rjones@redhat.com> | 2010-06-01 13:57:12 +0100 |
---|---|---|
committer | Richard Jones <rjones@redhat.com> | 2010-06-01 15:30:08 +0100 |
commit | 27b730a6820b80a49a4da1af9f4c8e8a952f735e (patch) | |
tree | 0942e13a9e75d313b4b9720b280e4990b10a8fe5 | |
parent | 21c42e9fabf6cea3d564e338a314479ef120502a (diff) | |
download | libguestfs-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.c | 12 | ||||
-rw-r--r-- | src/MAX_PROC_NR | 2 | ||||
-rwxr-xr-x | src/generator.ml | 23 |
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 |