Index: uspace/app/mkminix/mkminix.c
===================================================================
--- uspace/app/mkminix/mkminix.c	(revision b00a2f2f4e2298dfcb737f443d8206afa66ece64)
+++ uspace/app/mkminix/mkminix.c	(revision 8ceba1e4d85364d1f4f4715634a5ddcafb2219eb)
@@ -57,7 +57,8 @@
 #define USED	1
 
-#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 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 CONVERT_1K_OFF(off, bs)		((off) * ((bs) / MFS_MIN_BLOCKSIZE))
 
 typedef enum {
@@ -319,4 +320,5 @@
 	int rc;
 	long itable_off;
+	unsigned long itable_size;
 
 	itable_off = FIRST_ZONE(sb->block_size);
@@ -324,5 +326,6 @@
 
 	/*Convert to 1K offset*/
-	itable_off *= sb->block_size / MFS_MIN_BLOCKSIZE;
+	itable_off = CONVERT_1K_OFF(itable_off, sb->block_size);
+	itable_size = CONVERT_1K_OFF(sb->itable_size, sb->block_size);
 
 	itable_buf = malloc(sb->block_size);
@@ -333,5 +336,5 @@
 	memset(itable_buf, 0x00, sb->block_size);
 
-	for (i = 0; i < sb->itable_size * (sb->block_size / MFS_MIN_BLOCKSIZE); ++i, ++itable_off) {
+	for (i = 0; i < itable_size; ++i, ++itable_off) {
 		rc = block_write_direct(sb->handle, itable_off, 1, itable_buf);
 
@@ -386,5 +389,5 @@
 
 	/*Convert to 1K block offset*/
-	itable_off *= sb->block_size / MFS_MIN_BLOCKSIZE;
+	itable_off = CONVERT_1K_OFF(itable_off, sb->block_size);
 
 	const time_t sec = time(NULL);
@@ -570,18 +573,22 @@
 
 	/*Convert to 1K block offsets*/
-	ibmap_nblocks *= sb->block_size / MFS_BLOCKSIZE;
-	zbmap_nblocks *= sb->block_size / MFS_BLOCKSIZE;
+	ibmap_nblocks = CONVERT_1K_OFF(ibmap_nblocks, sb->block_size);
+	zbmap_nblocks = CONVERT_1K_OFF(zbmap_nblocks, sb->block_size);
 
 	ibmap_buf8 = (uint8_t *) ibmap_buf;
 	zbmap_buf8 = (uint8_t *) zbmap_buf;
 
+	int start_block = FIRST_ZONE(sb->block_size);
+
 	for (i = 0; i < ibmap_nblocks; ++i) {
-		if ((rc = block_write_direct(sb->handle, 2 + i,
+		if ((rc = block_write_direct(sb->handle, start_block + i,
 				1, (ibmap_buf8 + i * MFS_BLOCKSIZE))) != EOK)
 			return rc;
 	}
 
+	start_block = FIRST_ZONE(sb->block_size) + ibmap_nblocks;
+
 	for (i = 0; i < zbmap_nblocks; ++i) {
-		if ((rc = block_write_direct(sb->handle, 2 + ibmap_nblocks + i,
+		if ((rc = block_write_direct(sb->handle, start_block + i,
 				1, (zbmap_buf8 + i * MFS_BLOCKSIZE))) != EOK)
 			return rc;
Index: uspace/srv/fs/minixfs/mfs.c
===================================================================
--- uspace/srv/fs/minixfs/mfs.c	(revision b00a2f2f4e2298dfcb737f443d8206afa66ece64)
+++ uspace/srv/fs/minixfs/mfs.c	(revision 8ceba1e4d85364d1f4f4715634a5ddcafb2219eb)
@@ -99,5 +99,8 @@
 		default:
 		case IPC_M_PHONE_HUNGUP:
-			return;		
+			return;
+		case VFS_OUT_MOUNTED:
+			mfs_mounted(callid, &call);
+			break;
 		}
 	}
Index: uspace/srv/fs/minixfs/mfs_super.c
===================================================================
--- uspace/srv/fs/minixfs/mfs_super.c	(revision b00a2f2f4e2298dfcb737f443d8206afa66ece64)
+++ uspace/srv/fs/minixfs/mfs_super.c	(revision 8ceba1e4d85364d1f4f4715634a5ddcafb2219eb)
@@ -40,5 +40,6 @@
 #include "../../vfs/vfs.h"
 
-static bool check_magic_number(int16_t magic, bool *native, mfs_version_t *version);
+static bool check_magic_number(uint16_t magic, bool *native,
+				mfs_version_t *version, bool *longfilenames);
 
 void mfs_mounted(ipc_callid_t rid, ipc_call_t *request)
@@ -47,5 +48,5 @@
 	enum cache_mode cmode;	
 	struct mfs3_superblock *sp;
-	bool native;
+	bool native, longnames;
 	mfs_version_t version;
 
@@ -85,5 +86,5 @@
 	sp = block_bb_get(devmap_handle);
 
-	if (!check_magic_number(sp->s_magic, &native, &version)) {
+	if (!check_magic_number(sp->s_magic, &native, &version, &longnames)) {
 		/*Magic number is invalid!*/
 		block_fini(devmap_handle);
@@ -93,13 +94,26 @@
 }
 
-static bool check_magic_number(int16_t magic, bool *native, mfs_version_t *version)
+static bool check_magic_number(uint16_t magic, bool *native,
+				mfs_version_t *version, bool *longfilenames)
 {
+	*longfilenames = false;
+
 	if (magic == MFS_MAGIC_V1 || magic == MFS_MAGIC_V1R) {
 		*native = magic == MFS_MAGIC_V1;
 		*version = MFS_VERSION_V1;
 		return true;
+	} else if (magic == MFS_MAGIC_V1L || magic == MFS_MAGIC_V1LR) {
+		*native = magic == MFS_MAGIC_V1L;
+		*version = MFS_VERSION_V1;
+		*longfilenames = true;
+		return true;
 	} else if (magic == MFS_MAGIC_V2 || magic == MFS_MAGIC_V2R) {
 		*native = magic == MFS_MAGIC_V2;
 		*version = MFS_VERSION_V2;
+		return true;
+	} else if (magic == MFS_MAGIC_V2L || magic == MFS_MAGIC_V2LR) {
+		*native = magic == MFS_MAGIC_V2L;
+		*version = MFS_VERSION_V2;
+		*longfilenames = true;
 		return true;
 	} else if (magic == MFS_MAGIC_V3 || magic == MFS_MAGIC_V3R) {
