summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRichard W.M. Jones <rjones@redhat.com>2012-06-13 22:09:13 +0100
committerRichard W.M. Jones <rjones@redhat.com>2012-06-13 23:07:26 +0100
commita9d7d044f552855a7ef78d953c0c2672e35bfc80 (patch)
tree0cbcca67b484e3c20668383d74af561e065dd409
parent46ed232dc2ff2f7dff91cd93a13d7ce6f2cec504 (diff)
downloadlibguestfs-a9d7d044f552855a7ef78d953c0c2672e35bfc80.tar.gz
libguestfs-a9d7d044f552855a7ef78d953c0c2672e35bfc80.tar.xz
libguestfs-a9d7d044f552855a7ef78d953c0c2672e35bfc80.zip
New API: device-index.
This returns the index of the device, eg. /dev/sdb => 1. Or you can think of it as the order that the device was added, or the index of the device in guestfs_list_devices.
-rw-r--r--daemon/devsparts.c23
-rw-r--r--generator/generator_actions.ml15
-rw-r--r--src/MAX_PROC_NR2
3 files changed, 38 insertions, 2 deletions
diff --git a/daemon/devsparts.c b/daemon/devsparts.c
index b6f755be..8020fbe1 100644
--- a/daemon/devsparts.c
+++ b/daemon/devsparts.c
@@ -241,3 +241,26 @@ do_part_to_partnum (const char *part)
return r;
}
+
+int
+do_device_index (const char *device)
+{
+ char **devices;
+ size_t i;
+ int ret = -1;
+
+ devices = do_list_devices ();
+ if (devices == NULL)
+ return -1;
+
+ for (i = 0; devices[i] != NULL; ++i) {
+ if (STREQ (device, devices[i]))
+ ret = (int) i;
+ free (devices[i]);
+ }
+ free (devices);
+
+ if (ret == -1)
+ reply_with_error ("device not found");
+ return ret;
+}
diff --git a/generator/generator_actions.ml b/generator/generator_actions.ml
index 7b2bd97f..f249991e 100644
--- a/generator/generator_actions.ml
+++ b/generator/generator_actions.ml
@@ -6062,7 +6062,7 @@ removes the partition number, returning the device name
The named partition must exist, for example as a string returned
from C<guestfs_list_partitions>.
-See also C<guestfs_part_to_partnum>.");
+See also C<guestfs_part_to_partnum>, C<guestfs_device_index>.");
("upload_offset", (RErr, [FileIn "filename"; Dev_or_Path "remotefilename"; Int64 "offset"], []), 273,
[Progress; Cancellable],
@@ -7323,6 +7323,19 @@ different operation that turns free space in the filesystem
into zeroes. It is valid to call C<guestfs_fstrim> either
instead of, or after calling C<guestfs_zero_free_space>.");
+ ("device_index", (RInt "index", [Device "device"], []), 335, [],
+ [InitEmpty, Always, TestOutputInt (
+ [["device_index"; "/dev/sda"]], 0)],
+ "convert device to index",
+ "\
+This function takes a device name (eg. \"/dev/sdb\") and
+returns the index of the device in the list of devices.
+
+Index numbers start from 0. The named device must exist,
+for example as a string returned from C<guestfs_list_devices>.
+
+See also C<guestfs_list_devices>, C<guestfs_part_to_dev>.");
+
]
let all_functions = non_daemon_functions @ daemon_functions
diff --git a/src/MAX_PROC_NR b/src/MAX_PROC_NR
index 0ae9d1ef..3d9988ad 100644
--- a/src/MAX_PROC_NR
+++ b/src/MAX_PROC_NR
@@ -1 +1 @@
-334
+335