Index: uspace/srv/fs/minixfs/mfs_dentry.c
===================================================================
--- uspace/srv/fs/minixfs/mfs_dentry.c	(revision ff2e72ed1fbd044c0067de5cf8153a28fc3eb0e9)
+++ uspace/srv/fs/minixfs/mfs_dentry.c	(revision 13ecdac9b4a04fc6ffafed05da3ad8784981cf58)
@@ -154,5 +154,5 @@
 	/*Search for an empty dentry*/
 
-	for (i = 2; ; ++i) {
+	for (i = 0; ; ++i) {
 		r = read_directory_entry(mnode, &d_info, i);
 		if (r != EOK)
Index: uspace/srv/fs/minixfs/mfs_ops.c
===================================================================
--- uspace/srv/fs/minixfs/mfs_ops.c	(revision ff2e72ed1fbd044c0067de5cf8153a28fc3eb0e9)
+++ uspace/srv/fs/minixfs/mfs_ops.c	(revision 13ecdac9b4a04fc6ffafed05da3ad8784981cf58)
@@ -265,9 +265,4 @@
 	on_error(r, return r);
 
-	if (flags & L_DIRECTORY) {
-		/*Not yet supported*/
-		return ENOTSUP;
-	}
-
 	/*Alloc a new inode*/
 	r = mfs_alloc_bit(inst, &inum, BMAP_INODE);
@@ -294,5 +289,9 @@
 	}
 
-	ino_i->i_mode = S_IFREG;
+	if (flags & L_DIRECTORY)
+		ino_i->i_mode = S_IFDIR;
+	else
+		ino_i->i_mode = S_IFREG;
+
 	ino_i->i_nlinks = 1;
 	ino_i->i_uid = 0;
@@ -527,5 +526,13 @@
 
 	int r = insert_dentry(parent, name, child->ino_i->index);
-
+	on_error(r, goto exit_error);
+
+	if (S_ISDIR(child->ino_i->i_mode)) {
+		r = insert_dentry(child, ".", child->ino_i->index);
+		on_error(r, goto exit_error);
+		r = insert_dentry(child, "..", parent->ino_i->index);
+	}
+
+exit_error:
 	return r;
 }
