Index: uspace/app/mkminix/mkminix.c
===================================================================
--- uspace/app/mkminix/mkminix.c	(revision ccbc5b56e25856b61f48d1c5d08df98b47939062)
+++ uspace/app/mkminix/mkminix.c	(revision 92dd5c81a89fafffe5c80dda47f066c9573f63a9)
@@ -58,5 +58,5 @@
 #define UPPER(n, size) 			(((n) / (size)) + (((n) % (size)) != 0))
 #define NEXT_DENTRY(p, dirsize)		(p += dirsize)
-#define FIRST_ZONE(bs)			((MFS_BOOTBLOCK_SIZE + MFS_SUPERBLOCK_SIZE) / (bs))
+#define FIRST_ZONE(bs)			(1 + (bs) / MFS_MIN_BLOCKSIZE)
 #define CONVERT_1K_OFF(off, bs)		((off) * ((bs) / MFS_MIN_BLOCKSIZE))
 
@@ -329,5 +329,6 @@
 
 	/*Convert to 1K offset*/
-	itable_off = CONVERT_1K_OFF(itable_off, sb->block_size) + 2;
+	itable_off = CONVERT_1K_OFF(itable_off, sb->block_size) +
+					FIRST_ZONE(sb->block_size);
 	itable_size = CONVERT_1K_OFF(sb->itable_size, sb->block_size);
 
@@ -392,5 +393,6 @@
 
 	/*Convert to 1K block offset*/
-	itable_off = CONVERT_1K_OFF(itable_off, sb->block_size) + 2;
+	itable_off = CONVERT_1K_OFF(itable_off, sb->block_size) +
+					FIRST_ZONE(sb->block_size);
 
 	const time_t sec = time(NULL);
@@ -468,5 +470,5 @@
 
 	/*Compute first data zone position*/
-	sb->first_data_zone = FIRST_ZONE(sb->block_size) + sb->itable_size + 
+	sb->first_data_zone = 2 + sb->itable_size + 
 				sb->zbmap_blocks + sb->ibmap_blocks;
 
@@ -582,5 +584,5 @@
 	zbmap_buf8 = (uint8_t *) zbmap_buf;
 
-	int start_block = 2;
+	int start_block = FIRST_ZONE(sb->block_size);
 
 	for (i = 0; i < ibmap_nblocks; ++i) {
@@ -590,5 +592,5 @@
 	}
 
-	start_block = 2 + ibmap_nblocks;
+	start_block = FIRST_ZONE(sb->block_size) + ibmap_nblocks;
 
 	for (i = 0; i < zbmap_nblocks; ++i) {
Index: uspace/srv/fs/minixfs/mfs.c
===================================================================
--- uspace/srv/fs/minixfs/mfs.c	(revision ccbc5b56e25856b61f48d1c5d08df98b47939062)
+++ uspace/srv/fs/minixfs/mfs.c	(revision 92dd5c81a89fafffe5c80dda47f066c9573f63a9)
@@ -97,9 +97,15 @@
 		callid = async_get_call(&call);
 		switch  (IPC_GET_IMETHOD(call)) {
-		default:
 		case IPC_M_PHONE_HUNGUP:
 			return;
 		case VFS_OUT_MOUNTED:
+			mfsdebug("Mount request received\n");
 			mfs_mounted(callid, &call);
+			break;
+		case VFS_OUT_MOUNT:
+			mfsdebug("Mounting...\n");
+			break;
+		default:
+			async_answer_0(callid, ENOTSUP);
 			break;
 		}
Index: uspace/srv/fs/minixfs/mfs.h
===================================================================
--- uspace/srv/fs/minixfs/mfs.h	(revision ccbc5b56e25856b61f48d1c5d08df98b47939062)
+++ uspace/srv/fs/minixfs/mfs.h	(revision 92dd5c81a89fafffe5c80dda47f066c9573f63a9)
@@ -37,4 +37,12 @@
 #include "../../vfs/vfs.h"
 
+#define DEBUG_MODE
+
+#ifdef DEBUG_MODE
+#define mfsdebug(...)	printf(__VA_ARGS__)
+#else
+#define mfsdebug(...)
+#endif
+
 typedef enum {
 	MFS_VERSION_V1 = 1,
Index: uspace/srv/fs/minixfs/mfs_super.c
===================================================================
--- uspace/srv/fs/minixfs/mfs_super.c	(revision ccbc5b56e25856b61f48d1c5d08df98b47939062)
+++ uspace/srv/fs/minixfs/mfs_super.c	(revision 92dd5c81a89fafffe5c80dda47f066c9573f63a9)
@@ -32,4 +32,5 @@
 
 #include <libfs.h>
+#include <stdio.h>
 #include <stdlib.h>
 #include <libblock.h>
@@ -47,5 +48,5 @@
 	devmap_handle_t devmap_handle = (devmap_handle_t) IPC_GET_ARG1(*request);
 	enum cache_mode cmode;	
-	struct mfs3_superblock *sp;
+	struct mfs_superblock *sp;
 	bool native, longnames;
 	mfs_version_t version;
@@ -56,4 +57,5 @@
 	
 	if (rc != EOK) {
+		mfsdebug("Can't accept async data write\n");
 		async_answer_0(rid, rc);
 		return;
@@ -69,12 +71,15 @@
 
 	/* initialize libblock */
-	rc = block_init(devmap_handle, MFS_SUPERBLOCK_SIZE);
+	rc = block_init(devmap_handle, 1024);
 	if (rc != EOK) {
+		mfsdebug("libblock initialization failed\n");
 		async_answer_0(rid, rc);
 		return;
 	}
 
-	/* prepare the superblock */
-	rc = block_bb_read(devmap_handle, MFS_SUPERBLOCK);
+	sp = malloc(MFS_SUPERBLOCK_SIZE);
+
+	/* Read the superblock */
+	rc = block_read_direct(devmap_handle, MFS_SUPERBLOCK << 1, 1, sp);
 	if (rc != EOK) {
 		block_fini(devmap_handle);
@@ -83,13 +88,14 @@
 	}
 
-	/* get the buffer with the superblock */
-	sp = block_bb_get(devmap_handle);
-
 	if (!check_magic_number(sp->s_magic, &native, &version, &longnames)) {
 		/*Magic number is invalid!*/
+		mfsdebug("magic number not recognized\n");
 		block_fini(devmap_handle);
 		async_answer_0(rid, ENOTSUP);
 		return;
 	}
+
+	mfsdebug("magic number recognized\n");
+	free(sp);
 }
 
@@ -98,4 +104,6 @@
 {
 	*longfilenames = false;
+
+	mfsdebug("magic = %d\n", magic);
 
 	if (magic == MFS_MAGIC_V1 || magic == MFS_MAGIC_V1R) {
