Index: uspace/srv/fs/minixfs/mfs.h
===================================================================
--- uspace/srv/fs/minixfs/mfs.h	(revision ae8541da3ee35186a52ea375e31205d5d060745b)
+++ uspace/srv/fs/minixfs/mfs.h	(revision 87d442236aa639a2298f5e26a20306bc7d82cef6)
@@ -126,4 +126,7 @@
 	/*The following fields do not exist on disk but only in memory*/
 	bool dirty;
+	unsigned index;
+	/*Pointer to the node at witch the dentry belongs*/
+	struct mfs_node *node;
 };
 
@@ -166,4 +169,7 @@
 read_directory_entry(struct mfs_node *mnode, unsigned index);
 
+extern int
+write_dentry(struct mfs_dentry_info *d_info);
+
 /*mfs_balloc.c*/
 extern int
Index: uspace/srv/fs/minixfs/mfs_dentry.c
===================================================================
--- uspace/srv/fs/minixfs/mfs_dentry.c	(revision ae8541da3ee35186a52ea375e31205d5d060745b)
+++ uspace/srv/fs/minixfs/mfs_dentry.c	(revision 87d442236aa639a2298f5e26a20306bc7d82cef6)
@@ -80,4 +80,6 @@
 
 	d_info->dirty = false;
+	d_info->index = index;
+	d_info->node = mnode;
 	return d_info;
 
@@ -87,4 +89,48 @@
 }
 
+int
+write_dentry(struct mfs_dentry_info *d_info)
+{
+	struct mfs_node *mnode = d_info->node;
+	struct mfs_sb_info *sbi = mnode->instance->sbi;
+	const unsigned d_off_bytes = d_info->index * sbi->dirsize;
+	const unsigned dirs_per_block = sbi->block_size / sbi->dirsize;
+	block_t *b;
+	uint32_t block;
+	int r;
+
+	r = read_map(&block, mnode, d_off_bytes);
+	if (r != EOK)
+		goto out;
+
+	r = block_get(&b, mnode->instance->handle, block, BLOCK_FLAGS_NONE);
+	if (r != EOK)
+		goto out;
+
+	const size_t name_len = str_size(d_info->d_name);
+	uint8_t *ptr = b->data;
+	ptr += (d_info->index % dirs_per_block) * sbi->dirsize;
+
+	if (sbi->fs_version == MFS_VERSION_V3) {
+		struct mfs3_dentry *dentry;
+		dentry = (struct mfs3_dentry *) ptr;
+
+		dentry->d_inum = conv32(sbi->native, d_info->d_inum);
+		memcpy(dentry->d_name, d_info->d_name, name_len);
+	} else {
+		struct mfs_dentry *dentry;
+		dentry = (struct mfs_dentry *) ptr;
+
+		dentry->d_inum = conv16(sbi->native, d_info->d_inum);
+		memcpy(dentry->d_name, d_info->d_name, name_len);
+	}
+
+	b->dirty = true;
+	block_put(b);
+
+out:
+	return r;
+}
+
 /**
  * @}
