Index: uspace/lib/c/generic/vfs/vfs.c
===================================================================
--- uspace/lib/c/generic/vfs/vfs.c	(revision 582a0b84b0a73672531e7b404a89997af41ba0b9)
+++ uspace/lib/c/generic/vfs/vfs.c	(revision 4bfad3422afe1c140899057793076c94f3bd77db)
@@ -347,4 +347,39 @@
 	return loc_service_connect(stat.service, iface, 0);
 }
+
+/** Determine if a device contains the specified file system type. If so,
+ * return identification information.
+ *
+ * @param fs_name File system name
+ * @param serv    Service representing the mountee
+ * @param info    Place to store volume identification information
+ *
+ * @return                      EOK on success or a negative error code
+ */
+int vfs_fsprobe(const char *fs_name, service_id_t serv,
+    vfs_fs_probe_info_t *info)
+{
+	sysarg_t rc;
+	
+	ipc_call_t answer;
+	async_exch_t *exch = vfs_exchange_begin();
+	aid_t req = async_send_1(exch, VFS_IN_FSPROBE, serv, &answer);
+	
+	rc = async_data_write_start(exch, (void *) fs_name,
+	    str_size(fs_name));
+	
+	async_wait_for(req, &rc);
+	
+	if (rc != EOK) {
+		vfs_exchange_end(exch);
+		return rc;
+	}
+	
+	rc = async_data_read_start(exch, info, sizeof(*info));
+	vfs_exchange_end(exch);
+	
+	return rc;
+}
+
 
 /** Return a list of currently available file system types
Index: uspace/lib/c/include/ipc/vfs.h
===================================================================
--- uspace/lib/c/include/ipc/vfs.h	(revision 582a0b84b0a73672531e7b404a89997af41ba0b9)
+++ uspace/lib/c/include/ipc/vfs.h	(revision 4bfad3422afe1c140899057793076c94f3bd77db)
@@ -41,4 +41,6 @@
 
 #define FS_NAME_MAXLEN  20
+#define FS_LABEL_MAXLEN 256
+#define FS_VUID_MAXLEN 128
 #define MAX_PATH_LEN    (32 * 1024)
 #define MAX_MNTOPTS_LEN 256
@@ -62,6 +64,13 @@
 } vfs_info_t;
 
+/** Data returned by filesystem probe regarding a specific volume. */
+typedef struct {
+	char label[FS_LABEL_MAXLEN + 1];
+	char vuid[FS_VUID_MAXLEN + 1];
+} vfs_fs_probe_info_t;
+
 typedef enum {
 	VFS_IN_CLONE = IPC_FIRST_USER_METHOD,
+	VFS_IN_FSPROBE,
 	VFS_IN_FSTYPES,
 	VFS_IN_MOUNT,
@@ -85,4 +94,5 @@
 	VFS_OUT_CLOSE = IPC_FIRST_USER_METHOD,
 	VFS_OUT_DESTROY,
+	VFS_OUT_FSPROBE,
 	VFS_OUT_IS_EMPTY,
 	VFS_OUT_LINK,
Index: uspace/lib/c/include/vfs/vfs.h
===================================================================
--- uspace/lib/c/include/vfs/vfs.h	(revision 582a0b84b0a73672531e7b404a89997af41ba0b9)
+++ uspace/lib/c/include/vfs/vfs.h	(revision 4bfad3422afe1c140899057793076c94f3bd77db)
@@ -88,4 +88,5 @@
 extern async_exch_t *vfs_exchange_begin(void);
 extern void vfs_exchange_end(async_exch_t *);
+extern int vfs_fsprobe(const char *, service_id_t, vfs_fs_probe_info_t *);
 extern int vfs_fstypes(vfs_fstypes_t *);
 extern void vfs_fstypes_free(vfs_fstypes_t *);
