Index: uspace/srv/vfs/vfs_mount.c
===================================================================
--- uspace/srv/vfs/vfs_mount.c	(revision 2c2e0c695c78424862ff45bcd46b718e31113548)
+++ uspace/srv/vfs/vfs_mount.c	(revision b878df35b26c3ffd9e0cba6d2ed11dbf7ba0d58b)
@@ -194,4 +194,6 @@
 	futex_up(&rootfs_futex);
 	
+	free(buf);	/* The buffer is not needed anymore. */
+	
 	/*
 	 * At this point, we have all necessary pieces: file system and device
@@ -199,5 +201,27 @@
 	 * of the file system being mounted.
 	 */
-	
+
+	int phone = vfs_grab_phone(mp.fs_handle);
+	/* Later we can use ARG3 to pass mode/flags. */
+	aid_t req1 = async_send_3(phone, VFS_MOUNT, (ipcarg_t) mp.dev_handle,
+	    (ipcarg_t) mp.index, 0, NULL);
+	/* The second call uses the same method. */
+	aid_t req2 = async_send_3(phone, VFS_MOUNT,
+	    (ipcarg_t) mounted_root.fs_handle,
+	    (ipcarg_t) mounted_root.dev_handle, (ipcarg_t) mounted_root.index,
+	    NULL);
+
+	ipcarg_t rc1;
+	ipcarg_t rc2;
+	async_wait_for(req1, &rc1);
+	async_wait_for(req2, &rc2);
+	vfs_release_phone(phone);
+
+	if ((rc1 == EOK) && (rc2 == EOK))
+		ipc_answer_fast(rid, EOK, 0, 0);
+	else if (rc1 != EOK)
+		ipc_answer_fast(rid, rc1, 0, 0);
+	else
+		ipc_answer_fast(rid, rc2, 0, 0);
 }
 
