Index: uspace/srv/fs/minixfs/mfs_ops.c
===================================================================
--- uspace/srv/fs/minixfs/mfs_ops.c	(revision 3a5ee6cb447a92567d7999bbc4bd0ae7bf1ad572)
+++ uspace/srv/fs/minixfs/mfs_ops.c	(revision bbd4c725136443faef2d5737a2b6387fb04f81c1)
@@ -161,5 +161,5 @@
 
 	/* initialize libblock */
-	rc = block_init(EXCHANGE_SERIALIZE, service_id, 2048);
+	rc = block_init(EXCHANGE_SERIALIZE, service_id, 4096);
 	if (rc != EOK)
 		return rc;
@@ -175,4 +175,5 @@
 	instance = malloc(sizeof(*instance));
 	if (!instance) {
+		free(sbi);
 		block_fini(service_id);
 		return ENOMEM;
@@ -307,4 +308,6 @@
 	struct mfs_instance *inst;
 
+	mfsdebug("%s()\n", __FUNCTION__);
+
 	int r = mfs_instance_get(service_id, &inst);
 	if (r != EOK)
@@ -372,10 +375,12 @@
 	}
 
-	if (flags & L_DIRECTORY)
+	if (flags & L_DIRECTORY) {
 		ino_i->i_mode = S_IFDIR;
-	else
+		ino_i->i_nlinks = 2; /*This accounts for the '.' dentry*/
+	} else {
 		ino_i->i_mode = S_IFREG;
-
-	ino_i->i_nlinks = 1;
+		ino_i->i_nlinks = 1;
+	}
+
 	ino_i->i_uid = 0;
 	ino_i->i_gid = 0;
@@ -546,6 +551,10 @@
 	mfsdebug("%s()\n", __FUNCTION__);
 
-	assert(mnode);
-	assert(mnode->ino_i);
+	if (S_ISDIR(mnode->ino_i->i_mode)) {
+		if (mnode->ino_i->i_nlinks > 1)
+			return 1;
+		else
+			return 0;
+	}
 
 	return mnode->ino_i->i_nlinks;
@@ -662,11 +671,11 @@
 		if (r != EOK)
 			goto exit_error;
-		//child->ino_i->i_nlinks++;
-		//child->ino_i->dirty = true;
+
 		r = mfs_insert_dentry(child, "..", parent->ino_i->index);
 		if (r != EOK)
 			goto exit_error;
-		//parent->ino_i->i_nlinks++;
-		//parent->ino_i->dirty = true;
+
+		parent->ino_i->i_nlinks++;
+		parent->ino_i->dirty = true;
 	}
 
@@ -702,11 +711,14 @@
 
 	assert(chino->i_nlinks >= 1);
-	--chino->i_nlinks;
-/*
-	if (chino->i_nlinks == 0 && S_ISDIR(chino->i_mode)) {
+	chino->i_nlinks--;
+	mfsdebug("Links: %d\n", chino->i_nlinks);
+
+	if (chino->i_nlinks <= 1 && S_ISDIR(chino->i_mode)) {
+		/* The child directory will be destroyed, decrease the
+		 * parent hard links counter.
+		 */
 		parent->ino_i->i_nlinks--;
 		parent->ino_i->dirty = true;
 	}
-*/
 
 	chino->dirty = true;
