Index: uspace/lib/c/generic/vol.c
===================================================================
--- uspace/lib/c/generic/vol.c	(revision c5429fedb8216659204bbbdba42d7f5a845e4dda)
+++ uspace/lib/c/generic/vol.c	(revision 63c1dd5baed77410998be60405abb3b36a7a56b3)
@@ -528,4 +528,48 @@
 }
 
+/** Get list of volumes as array of volume IDs.
+ *
+ * @param vol Volume service
+ * @param data Place to store pointer to array
+ * @param count Place to store length of array (number of entries)
+ *
+ * @return EOK on success or an error code
+ */
+errno_t vol_get_volumes(vol_t *vol, volume_id_t **data, size_t *count)
+{
+	return vol_get_ids_internal(vol, VOL_GET_VOLUMES, 0,
+	    (sysarg_t **) data, count);
+}
+
+/** Get volume configuration information.
+ *
+ * @param vol Volume service
+ * @param vid Volume ID
+ * @param vinfo Place to sore volume configuration information
+ * @return EOK on success or an error code
+ */
+errno_t vol_info(vol_t *vol, volume_id_t vid, vol_info_t *vinfo)
+{
+	async_exch_t *exch;
+	errno_t retval;
+	ipc_call_t answer;
+
+	exch = async_exchange_begin(vol->sess);
+	aid_t req = async_send_1(exch, VOL_INFO, vid.id, &answer);
+
+	errno_t rc = async_data_read_start(exch, vinfo, sizeof(vol_info_t));
+	async_exchange_end(exch);
+	if (rc != EOK) {
+		async_forget(req);
+		return EIO;
+	}
+
+	async_wait_for(req, &retval);
+	if (retval != EOK)
+		return EIO;
+
+	return EOK;
+}
+
 /** @}
  */
Index: uspace/lib/c/include/ipc/vol.h
===================================================================
--- uspace/lib/c/include/ipc/vol.h	(revision c5429fedb8216659204bbbdba42d7f5a845e4dda)
+++ uspace/lib/c/include/ipc/vol.h	(revision 63c1dd5baed77410998be60405abb3b36a7a56b3)
@@ -48,5 +48,7 @@
 	VOL_PART_LSUPP,
 	VOL_PART_MKFS,
-	VOL_PART_SET_MOUNTP
+	VOL_PART_SET_MOUNTP,
+	VOL_GET_VOLUMES,
+	VOL_INFO
 } vol_request_t;
 
Index: uspace/lib/c/include/types/vol.h
===================================================================
--- uspace/lib/c/include/types/vol.h	(revision c5429fedb8216659204bbbdba42d7f5a845e4dda)
+++ uspace/lib/c/include/types/vol.h	(revision 63c1dd5baed77410998be60405abb3b36a7a56b3)
@@ -41,4 +41,8 @@
 #include <stdbool.h>
 
+typedef struct {
+	sysarg_t id;
+} volume_id_t;
+
 typedef enum {
 	/** Partition is empty */
@@ -82,4 +86,14 @@
 } vol_part_info_t;
 
+/** Volume configuration information */
+typedef struct {
+	/** Volume identifier */
+	volume_id_t id;
+	/** Volume label */
+	char label[VOL_LABEL_MAXLEN + 1];
+	/** Mount path */
+	char path[MAX_PATH_LEN + 1]; /* XXX too big */
+} vol_info_t;
+
 /** Volume label support */
 typedef struct {
Index: uspace/lib/c/include/vol.h
===================================================================
--- uspace/lib/c/include/vol.h	(revision c5429fedb8216659204bbbdba42d7f5a845e4dda)
+++ uspace/lib/c/include/vol.h	(revision 63c1dd5baed77410998be60405abb3b36a7a56b3)
@@ -55,5 +55,6 @@
     const char *);
 extern errno_t vol_part_set_mountp(vol_t *, service_id_t, const char *);
-
+extern errno_t vol_get_volumes(vol_t *, volume_id_t **, size_t *);
+extern errno_t vol_info(vol_t *, volume_id_t, vol_info_t *);
 extern errno_t vol_fstype_format(vol_fstype_t, char **);
 extern errno_t vol_pcnt_fs_format(vol_part_cnt_t, vol_fstype_t, char **);
