Index: uspace/srv/vfs/Makefile
===================================================================
--- uspace/srv/vfs/Makefile	(revision 26f2af09087bccd53eb0c8a6bb24dfe65cc45156)
+++ uspace/srv/vfs/Makefile	(revision 6675c70c44fd7b7409aa5c3bb5d7d7ef801a79f3)
@@ -59,5 +59,5 @@
 
 $(OUTPUT): $(OBJECTS) $(LIBS)
-	$(LD) -T $(LIBC_PREFIX)/arch/$(ARCH)/_link.ld -e __entry_driver $(OBJECTS) $(LIBS) $(LFLAGS) -o $@ -Map $(OUTPUT).map
+	$(LD) -T $(LIBC_PREFIX)/arch/$(ARCH)/_link.ld $(OBJECTS) $(LIBS) $(LFLAGS) -o $@ -Map $(OUTPUT).map
 
 disasm:
Index: uspace/srv/vfs/vfs.c
===================================================================
--- uspace/srv/vfs/vfs.c	(revision 26f2af09087bccd53eb0c8a6bb24dfe65cc45156)
+++ uspace/srv/vfs/vfs.c	(revision 6675c70c44fd7b7409aa5c3bb5d7d7ef801a79f3)
@@ -40,4 +40,5 @@
 #include <async.h>
 #include <errno.h>
+#include <stdio.h>
 #include <stdlib.h>
 #include <string.h>
@@ -48,4 +49,7 @@
 #include "vfs.h"
 
+
+#define dprintf(...)	printf(__VA_ARGS__)
+
 atomic_t fs_head_futex = FUTEX_INITIALIZER;
 link_t fs_head;
@@ -65,13 +69,18 @@
 	 * characters [a-z]+[a-z0-9_-]*.
 	 */
-	if (!islower(info->name[0]))
-		return false;
+	if (!islower(info->name[0])) {
+		dprintf("The name doesn't start with a lowercase character.\n");
+		return false;
+	}
 	for (i = 1; i < FS_NAME_MAXLEN; i++) {
 		if (!(islower(info->name[i]) || isdigit(info->name[i])) &&
 		    (info->name[i] != '-') && (info->name[i] != '_')) {
-			if (info->name[i] == '\0')
+			if (info->name[i] == '\0') {
 				break;
-			else
+			} else {
+				dprintf("The name contains illegal "
+				    "characters.\n");
 				return false;
+			}
 		}
 	}
@@ -81,18 +90,32 @@
 	 * Check if the FS implements mandatory VFS operations.
 	 */
-	if (info->ops[IPC_METHOD_TO_VFS_OP(VFS_REGISTER)] != VFS_OP_DEFINED)
-		return false;
-	if (info->ops[IPC_METHOD_TO_VFS_OP(VFS_MOUNT)] != VFS_OP_DEFINED)
-		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)
-		return false;
-	if (info->ops[IPC_METHOD_TO_VFS_OP(VFS_CLOSE)] != VFS_OP_DEFINED)
-		return false;
-	if (info->ops[IPC_METHOD_TO_VFS_OP(VFS_READ)] != VFS_OP_DEFINED)
-		return false;
+	if (info->ops[IPC_METHOD_TO_VFS_OP(VFS_REGISTER)] != VFS_OP_DEFINED) {
+		dprintf("Operation VFS_REGISTER not defined by the client.\n");
+		return false;
+	}
+	if (info->ops[IPC_METHOD_TO_VFS_OP(VFS_MOUNT)] != VFS_OP_DEFINED) {
+		dprintf("Operation VFS_MOUNT not defined by the client.\n");
+		return false;
+	}
+	if (info->ops[IPC_METHOD_TO_VFS_OP(VFS_UNMOUNT)] != VFS_OP_DEFINED) {
+		dprintf("Operation VFS_UNMOUNT not defined by the client.\n");
+		return false;
+	}
+	if (info->ops[IPC_METHOD_TO_VFS_OP(VFS_LOOKUP)] != VFS_OP_DEFINED) {
+		dprintf("Operation VFS_LOOKUP not defined by the client.\n");
+		return false;
+	}
+	if (info->ops[IPC_METHOD_TO_VFS_OP(VFS_OPEN)] != VFS_OP_DEFINED) {
+		dprintf("Operation VFS_OPEN not defined by the client.\n");
+		return false;
+	}
+	if (info->ops[IPC_METHOD_TO_VFS_OP(VFS_CLOSE)] != VFS_OP_DEFINED) {
+		dprintf("Operation VFS_CLOSE not defined by the client.\n");
+		return false;
+	}
+	if (info->ops[IPC_METHOD_TO_VFS_OP(VFS_READ)] != VFS_OP_DEFINED) {
+		dprintf("Operation VFS_READ not defined by the client.\n");
+		return false;
+	}
 	
 	/*
@@ -100,8 +123,10 @@
 	 */
 	for (i = VFS_FIRST; i < VFS_LAST; i++) {
-		if ((IPC_METHOD_TO_VFS_OP(i) != VFS_OP_NULL) && 
-		    (IPC_METHOD_TO_VFS_OP(i) != VFS_OP_DEFAULT) && 
-		    (IPC_METHOD_TO_VFS_OP(i) != VFS_OP_DEFINED))
-			return false;	
+		if ((info->ops[IPC_METHOD_TO_VFS_OP(i)] != VFS_OP_NULL) && 
+		    (info->ops[IPC_METHOD_TO_VFS_OP(i)] != VFS_OP_DEFAULT) && 
+		    (info->ops[IPC_METHOD_TO_VFS_OP(i)] != VFS_OP_DEFINED)) {
+			dprintf("Operation info not understood.\n");
+			return false;
+		}
 	}
 	return true;
@@ -120,4 +145,7 @@
 	size_t size;
 
+	dprintf("Processing VFS_REGISTER request received from %p.\n",
+		request->in_phone_hash);
+
 	/*
 	 * The first call has to be IPC_M_DATA_SEND in which we receive the
@@ -127,9 +155,12 @@
 		/*
 		 * The client doesn't obey the same protocol as we do.
-		 */ 
+		 */
+		dprintf("Receiving of VFS info failed.\n");
 		ipc_answer_fast(callid, EINVAL, 0, 0);
 		ipc_answer_fast(rid, EINVAL, 0, 0);
 		return;
 	}
+	
+	dprintf("VFS info received, size = %d\n", size);
 	
 	/*
@@ -142,4 +173,5 @@
 		 * the info structure.
 		 */
+		dprintf("Received VFS info has bad size.\n");
 		ipc_answer_fast(callid, EINVAL, 0, 0);
 		ipc_answer_fast(rid, EINVAL, 0, 0);
@@ -153,4 +185,5 @@
 	fs_info = (fs_info_t *) malloc(sizeof(fs_info_t));
 	if (!fs_info) {
+		dprintf("Could not allocate memory for FS info.\n");
 		ipc_answer_fast(callid, ENOMEM, 0, 0);
 		ipc_answer_fast(rid, ENOMEM, 0, 0);
@@ -160,5 +193,7 @@
 		
 	rc = ipc_data_deliver(callid, &call, &fs_info->vfs_info, size);
-	if (!rc) {
+	if (rc != EOK) {
+		dprintf("Failed to deliver the VFS info into our AS, rc=%d.\n",
+		    rc);
 		free(fs_info);
 		ipc_answer_fast(callid, rc, 0, 0);
@@ -166,4 +201,6 @@
 		return;
 	}
+
+	dprintf("VFS info delivered.\n");
 		
 	if (!vfs_info_sane(&fs_info->vfs_info)) {
@@ -188,4 +225,5 @@
 			 * We already register a fs like this.
 			 */
+			dprintf("FS is already registered.\n");
 			futex_up(&fs_head_futex);
 			free(fs_info);
@@ -199,4 +237,5 @@
 	 * Add fs_info to the list of registered FS's.
 	 */
+	dprintf("Adding FS into the registered list.\n");
 	list_append(&fs_info->fs_link, &fs_head);
 
@@ -213,4 +252,5 @@
 	callid = async_get_call(&call);
 	if (IPC_GET_METHOD(call) != IPC_M_CONNECT_TO_ME) {
+		dprintf("Unexpected call, method = %d\n", IPC_GET_METHOD(call));
 		list_remove(&fs_info->fs_link);
 		futex_up(&fs_head_futex);
@@ -223,4 +263,6 @@
 	ipc_answer_fast(callid, EOK, 0, 0);
 
+	dprintf("Callback connection to FS created.\n");
+
 	futex_up(&fs_head_futex);
 
@@ -229,4 +271,6 @@
 	 */
 	ipc_answer_fast(rid, EOK, 0, 0);
+	dprintf("\"%s\" filesystem successfully registered.\n",
+	    fs_info->vfs_info.name);
 }
 
@@ -234,4 +278,6 @@
 {
 	bool keep_on_going = 1;
+
+	printf("Connection opened from %p\n", icall->in_phone_hash);
 
 	/*
@@ -256,4 +302,6 @@
 
 		callid = async_get_call(&call);
+
+		printf("Received call, method=%d\n", IPC_GET_METHOD(call));
 		
 		switch (IPC_GET_METHOD(call)) {
@@ -287,4 +335,6 @@
 	ipcarg_t phonead;
 
+	printf("VFS: HelenOS VFS server\n");
+
 	list_initialize(&fs_head);
 	async_set_client_connection(vfs_connection);
