Index: uspace/lib/fs/libfs.c
===================================================================
--- uspace/lib/fs/libfs.c	(revision 2166728911012eaec91ede11a4cebdac0ba5a81a)
+++ uspace/lib/fs/libfs.c	(revision fcb0d76a86a9f53c0496fdfc2f29958d5aa3fc3f)
@@ -81,4 +81,31 @@
     ipc_call_t *);
 
+static void vfs_out_fsprobe(ipc_callid_t rid, ipc_call_t *req)
+{
+	service_id_t service_id = (service_id_t) IPC_GET_ARG1(*req);
+	int rc;
+	vfs_fs_probe_info_t info;
+	
+	ipc_callid_t callid;
+	size_t size;
+	if ((!async_data_read_receive(&callid, &size)) ||
+	    (size != sizeof(info))) {
+		async_answer_0(callid, EIO);
+		async_answer_0(rid, EIO);
+		return;
+	}
+	
+	memset(&info, 0, sizeof(info));
+	rc = vfs_out_ops->fsprobe(service_id, &info);
+	if (rc != EOK) {
+		async_answer_0(callid, EIO);
+		async_answer_0(rid, rc);
+		return;
+	}
+	
+	async_data_read_finalize(callid, &info, sizeof(info));
+	async_answer_0(rid, EOK);
+}
+
 static void vfs_out_mounted(ipc_callid_t rid, ipc_call_t *req)
 {
@@ -272,4 +299,7 @@
 		
 		switch (IPC_GET_IMETHOD(call)) {
+		case VFS_OUT_FSPROBE:
+			vfs_out_fsprobe(callid, &call);
+			break;
 		case VFS_OUT_MOUNTED:
 			vfs_out_mounted(callid, &call);
Index: uspace/lib/fs/libfs.h
===================================================================
--- uspace/lib/fs/libfs.h	(revision 2166728911012eaec91ede11a4cebdac0ba5a81a)
+++ uspace/lib/fs/libfs.h	(revision fcb0d76a86a9f53c0496fdfc2f29958d5aa3fc3f)
@@ -43,4 +43,5 @@
 
 typedef struct {
+	int (* fsprobe)(service_id_t, vfs_fs_probe_info_t *);
 	int (* mounted)(service_id_t, const char *, fs_index_t *, aoff64_t *,
 	    unsigned *);
