Index: uspace/srv/fs/fat/fat.c
===================================================================
--- uspace/srv/fs/fat/fat.c	(revision 861e7d17d96cb83a483323d486c1da00a6346431)
+++ uspace/srv/fs/fat/fat.c	(revision cad9c7229b14b0f744c8fbeabc9dfa53ac9bdb4c)
@@ -1,5 +1,5 @@
 /*
  * Copyright (c) 2006 Martin Decky
- * Copyright (c) 2007 Jakub Jermar
+ * Copyright (c) 2008 Jakub Jermar
  * All rights reserved.
  *
@@ -51,14 +51,17 @@
 	.name = "fat",
 	.ops = {
-		[IPC_METHOD_TO_VFS_OP(VFS_REGISTER)] = VFS_OP_DEFINED,
-		[IPC_METHOD_TO_VFS_OP(VFS_MOUNT)] = VFS_OP_DEFINED,
-		[IPC_METHOD_TO_VFS_OP(VFS_UNMOUNT)] = VFS_OP_DEFINED,
 		[IPC_METHOD_TO_VFS_OP(VFS_LOOKUP)] = VFS_OP_DEFINED,
 		[IPC_METHOD_TO_VFS_OP(VFS_OPEN)] = VFS_OP_DEFINED,
-		[IPC_METHOD_TO_VFS_OP(VFS_CREATE)] = VFS_OP_DEFINED,
 		[IPC_METHOD_TO_VFS_OP(VFS_CLOSE)] = VFS_OP_DEFINED,
 		[IPC_METHOD_TO_VFS_OP(VFS_READ)] = VFS_OP_DEFINED,
 		[IPC_METHOD_TO_VFS_OP(VFS_WRITE)] = VFS_OP_NULL,
-		[IPC_METHOD_TO_VFS_OP(VFS_SEEK)] = VFS_OP_DEFAULT
+		[IPC_METHOD_TO_VFS_OP(VFS_TRUNCATE)] = VFS_OP_NULL,
+		[IPC_METHOD_TO_VFS_OP(VFS_RENAME)] = VFS_OP_NULL,
+		[IPC_METHOD_TO_VFS_OP(VFS_OPENDIR)] = VFS_OP_NULL,
+		[IPC_METHOD_TO_VFS_OP(VFS_READDIR)] = VFS_OP_NULL,
+		[IPC_METHOD_TO_VFS_OP(VFS_CLOSEDIR)] = VFS_OP_NULL,
+		[IPC_METHOD_TO_VFS_OP(VFS_UNLINK)] = VFS_OP_NULL,
+		[IPC_METHOD_TO_VFS_OP(VFS_MOUNT)] = VFS_OP_NULL,
+		[IPC_METHOD_TO_VFS_OP(VFS_UNMOUNT)] = VFS_OP_NULL,
 	}
 };
@@ -102,7 +105,4 @@
 		callid = async_get_call(&call);
 		switch  (IPC_GET_METHOD(call)) {
-		case VFS_REGISTER:
-			ipc_answer_0(callid, EOK);
-			break;
 		case VFS_LOOKUP:
 			fat_lookup(callid, &call);
Index: uspace/srv/fs/tmpfs/tmpfs.c
===================================================================
--- uspace/srv/fs/tmpfs/tmpfs.c	(revision 861e7d17d96cb83a483323d486c1da00a6346431)
+++ uspace/srv/fs/tmpfs/tmpfs.c	(revision cad9c7229b14b0f744c8fbeabc9dfa53ac9bdb4c)
@@ -1,5 +1,5 @@
 /*
  * Copyright (c) 2006 Martin Decky
- * Copyright (c) 2007 Jakub Jermar
+ * Copyright (c) 2008 Jakub Jermar
  * All rights reserved.
  *
@@ -55,14 +55,17 @@
 	.name = "tmpfs",
 	.ops = {
-		[IPC_METHOD_TO_VFS_OP(VFS_REGISTER)] = VFS_OP_DEFINED,
-		[IPC_METHOD_TO_VFS_OP(VFS_MOUNT)] = VFS_OP_DEFINED,
-		[IPC_METHOD_TO_VFS_OP(VFS_UNMOUNT)] = VFS_OP_DEFINED,
 		[IPC_METHOD_TO_VFS_OP(VFS_LOOKUP)] = VFS_OP_DEFINED,
 		[IPC_METHOD_TO_VFS_OP(VFS_OPEN)] = VFS_OP_DEFINED,
-		[IPC_METHOD_TO_VFS_OP(VFS_CREATE)] = VFS_OP_DEFINED,
 		[IPC_METHOD_TO_VFS_OP(VFS_CLOSE)] = VFS_OP_DEFINED,
 		[IPC_METHOD_TO_VFS_OP(VFS_READ)] = VFS_OP_DEFINED,
 		[IPC_METHOD_TO_VFS_OP(VFS_WRITE)] = VFS_OP_DEFINED,
-		[IPC_METHOD_TO_VFS_OP(VFS_SEEK)] = VFS_OP_DEFAULT
+		[IPC_METHOD_TO_VFS_OP(VFS_TRUNCATE)] = VFS_OP_NULL,
+		[IPC_METHOD_TO_VFS_OP(VFS_RENAME)] = VFS_OP_NULL,
+		[IPC_METHOD_TO_VFS_OP(VFS_OPENDIR)] = VFS_OP_NULL,
+		[IPC_METHOD_TO_VFS_OP(VFS_READDIR)] = VFS_OP_NULL,
+		[IPC_METHOD_TO_VFS_OP(VFS_CLOSEDIR)] = VFS_OP_NULL,
+		[IPC_METHOD_TO_VFS_OP(VFS_UNLINK)] = VFS_OP_NULL,
+		[IPC_METHOD_TO_VFS_OP(VFS_MOUNT)] = VFS_OP_NULL,
+		[IPC_METHOD_TO_VFS_OP(VFS_UNMOUNT)] = VFS_OP_NULL,
 	}
 };
@@ -107,7 +110,4 @@
 		callid = async_get_call(&call);
 		switch  (IPC_GET_METHOD(call)) {
-		case VFS_REGISTER:
-			ipc_answer_0(callid, EOK);
-			break;
 		case VFS_LOOKUP:
 			tmpfs_lookup(callid, &call);
Index: uspace/srv/vfs/vfs.c
===================================================================
--- uspace/srv/vfs/vfs.c	(revision 861e7d17d96cb83a483323d486c1da00a6346431)
+++ uspace/srv/vfs/vfs.c	(revision cad9c7229b14b0f744c8fbeabc9dfa53ac9bdb4c)
@@ -103,9 +103,12 @@
 			vfs_seek(callid, &call);
 			break;
+		case VFS_TRUNCATE:
 		case VFS_UNMOUNT:
-		case VFS_CREATE:
 		case VFS_CLOSE:
 		case VFS_UNLINK:
 		case VFS_RENAME:
+		case VFS_OPENDIR:
+		case VFS_READDIR:
+		case VFS_CLOSEDIR:
 		default:
 			ipc_answer_0(callid, ENOTSUP);
Index: uspace/srv/vfs/vfs.h
===================================================================
--- uspace/srv/vfs/vfs.h	(revision 861e7d17d96cb83a483323d486c1da00a6346431)
+++ uspace/srv/vfs/vfs.h	(revision cad9c7229b14b0f744c8fbeabc9dfa53ac9bdb4c)
@@ -48,18 +48,29 @@
 
 typedef enum {
-	VFS_REGISTER = VFS_FIRST,
-	VFS_MOUNT,
-	VFS_UNMOUNT,
-	VFS_LOOKUP,
-	VFS_OPEN,
-	VFS_CREATE,
+	VFS_OPEN = VFS_FIRST,
 	VFS_CLOSE,
 	VFS_READ,
 	VFS_WRITE,
+	VFS_TRUNCATE,
+	VFS_RENAME,
+	VFS_OPENDIR,
+	VFS_READDIR,
+	VFS_CLOSEDIR,
+	VFS_UNLINK,
+	VFS_MOUNT,
+	VFS_UNMOUNT,
+	VFS_LAST_CMN,	/* keep this the last member of this enum */
+} vfs_request_cmn_t;
+
+typedef enum {
+	VFS_LOOKUP = VFS_LAST_CMN,
+	VFS_LAST_CLNT,	/* keep this the last member of this enum */
+} vfs_request_clnt_t;
+
+typedef enum {
+	VFS_REGISTER = VFS_LAST_CMN,
 	VFS_SEEK,
-	VFS_RENAME,
-	VFS_UNLINK,
-	VFS_LAST,		/* keep this the last member of the enum */
-} vfs_request_t;
+	VFS_LAST_SRV,	/* keep this the last member of this enum */
+} vfs_request_srv_t;
 
 
@@ -88,5 +99,5 @@
 	
 	/** Operations. */
-	vfs_op_t ops[VFS_LAST - VFS_FIRST];
+	vfs_op_t ops[VFS_LAST_CLNT - VFS_FIRST];
 } vfs_info_t;
 
Index: uspace/srv/vfs/vfs_ops.c
===================================================================
--- uspace/srv/vfs/vfs_ops.c	(revision 861e7d17d96cb83a483323d486c1da00a6346431)
+++ uspace/srv/vfs/vfs_ops.c	(revision cad9c7229b14b0f744c8fbeabc9dfa53ac9bdb4c)
@@ -746,16 +746,4 @@
 	 * Check if the FS implements mandatory VFS operations.
 	 */
-	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");
@@ -778,5 +766,5 @@
 	 * Check if each operation is either not defined, defined or default.
 	 */
-	for (i = VFS_FIRST; i < VFS_LAST; i++) {
+	for (i = VFS_FIRST; i < VFS_LAST_CLNT; i++) {
 		if ((info->ops[IPC_METHOD_TO_VFS_OP(i)] != VFS_OP_NULL) && 
 		    (info->ops[IPC_METHOD_TO_VFS_OP(i)] != VFS_OP_DEFAULT) && 
