Index: uspace/srv/vfs/vfs.c
===================================================================
--- uspace/srv/vfs/vfs.c	(revision 2b20947f898985470f8ca5e86871dd5694b076a7)
+++ uspace/srv/vfs/vfs.c	(revision a0edf5f83740c6ba4b11f166e36e317d198be0e2)
@@ -86,4 +86,6 @@
 		return false;
 	if (info->ops[IPC_METHOD_TO_VFS_OP(VFS_UNMOUNT)] != VFS_OP_DEFINED)
+		return false;
+	if (info->ops[IPC_METHOD_TO_VFS_OP(VFS_LOOKUP)] != VFS_OP_DEFINED)
 		return false;
 	if (info->ops[IPC_METHOD_TO_VFS_OP(VFS_OPEN)] != VFS_OP_DEFINED)
@@ -193,13 +195,38 @@
 		}
 	}
-	
-	/*
-	 * TODO:
-	 * 1. send the client the IPC_M_CONNECT_TO_ME call so that it makes a
-	 *    callback connection.
-	 * 2. add the fs_info into fs_head
-	 */
+
+	/*
+	 * Add fs_info to the list of registered FS's.
+	 */
+	list_append(&fs_info->fs_link, &fs_head);
+
+	/*
+	 * ACK receiving a properly formatted, non-duplicit vfs_info.
+	 */
+	ipc_answer_fast(callid, EOK, 0, 0);
+	
+	/*
+	 * Now we want the client to send us the IPC_M_CONNECT_TO_ME call so
+	 * that a callback connection is created and we have a phone through
+	 * which to forward VFS requests to it.
+	 */
+	callid = async_get_call(&call);
+	if (IPC_GET_METHOD(call) != IPC_M_CONNECT_TO_ME) {
+		list_remove(&fs_info->fs_link);
+		futex_up(&fs_head_futex);
+		free(fs_info);
+		ipc_answer_fast(callid, EINVAL, 0, 0);
+		ipc_answer_fast(rid, EINVAL, 0, 0);
+		return;
+	}
+	fs_info->phone = IPC_GET_ARG3(call);
+	ipc_answer_fast(callid, EOK, 0, 0);
 
 	futex_up(&fs_head_futex);
+
+	/*
+	 * That was it. The FS has been registered.
+	 */
+	ipc_answer_fast(rid, EOK, 0, 0);
 }
 
Index: uspace/srv/vfs/vfs.h
===================================================================
--- uspace/srv/vfs/vfs.h	(revision 2b20947f898985470f8ca5e86871dd5694b076a7)
+++ uspace/srv/vfs/vfs.h	(revision a0edf5f83740c6ba4b11f166e36e317d198be0e2)
@@ -44,4 +44,5 @@
 	VFS_MOUNT,
 	VFS_UNMOUNT,
+	VFS_LOOKUP,
 	VFS_OPEN,
 	VFS_CREATE,
@@ -84,4 +85,5 @@
 	link_t fs_link;
 	vfs_info_t vfs_info;
+	ipcarg_t phone;
 } fs_info_t;
 
