Index: uspace/srv/fs/mfs/mfs_balloc.c
===================================================================
--- uspace/srv/fs/mfs/mfs_balloc.c	(revision 4c53333ff309112f566af4b6b4e3237101782451)
+++ uspace/srv/fs/mfs/mfs_balloc.c	(revision 64e63ce189ef9ee6cfebc24570651155fd68b352)
@@ -202,5 +202,5 @@
 		start_block = 2;
 		nblocks = sbi->ibmap_blocks;
-		limit = sbi->ninodes;
+		limit = sbi->ninodes - 1;
 	}
 	bits_per_block = sbi->block_size * 8;
Index: uspace/srv/fs/mfs/mfs_dentry.c
===================================================================
--- uspace/srv/fs/mfs/mfs_dentry.c	(revision 4c53333ff309112f566af4b6b4e3237101782451)
+++ uspace/srv/fs/mfs/mfs_dentry.c	(revision 64e63ce189ef9ee6cfebc24570651155fd68b352)
@@ -240,6 +240,8 @@
 				goto out;
 			r = mfs_write_map(mnode, pos, b, &dummy);
-			if (r != EOK)
+			if (r != EOK) {
+				mfs_free_zone(mnode->instance, b);
 				goto out;
+			}
 		}
 
Index: uspace/srv/fs/mfs/mfs_ops.c
===================================================================
--- uspace/srv/fs/mfs/mfs_ops.c	(revision 4c53333ff309112f566af4b6b4e3237101782451)
+++ uspace/srv/fs/mfs/mfs_ops.c	(revision 64e63ce189ef9ee6cfebc24570651155fd68b352)
@@ -419,4 +419,5 @@
 	free(ino_i);
 out_err:
+	mfs_free_inode(inst, inum);
 	return r;
 }
@@ -674,4 +675,5 @@
 		r = mfs_insert_dentry(child, "..", parent->ino_i->index);
 		if (r != EOK) {
+			mfs_remove_dentry(child, ".");
 			destroy_dentry = true;
 			goto exit;
@@ -925,6 +927,8 @@
 		
 		r = mfs_write_map(mnode, pos, block, &dummy);
-		if (r != EOK)
+		if (r != EOK) {
+			mfs_free_zone(mnode->instance, block);
 			goto out_err;
+		}
 
 		flags = BLOCK_FLAGS_NOREAD;
