Index: uspace/srv/fs/minixfs/Makefile
===================================================================
--- uspace/srv/fs/minixfs/Makefile	(revision 7d043242a562d0a28791d5a2917977ab70c6ed27)
+++ uspace/srv/fs/minixfs/Makefile	(revision f213ae71b29e8f675093e72eb899dd577948e864)
@@ -36,4 +36,5 @@
 	mfs.c \
 	mfs_ops.c \
+	mfs_inode.c \
 	mfs_utils.c
 
Index: uspace/srv/fs/minixfs/mfs.h
===================================================================
--- uspace/srv/fs/minixfs/mfs.h	(revision 7d043242a562d0a28791d5a2917977ab70c6ed27)
+++ uspace/srv/fs/minixfs/mfs.h	(revision f213ae71b29e8f675093e72eb899dd577948e864)
@@ -98,4 +98,5 @@
 };
 
+/*mfs_ops.c*/
 extern void mfs_mounted(ipc_callid_t rid, ipc_call_t *request);
 extern void mfs_mount(ipc_callid_t rid, ipc_call_t *request);
@@ -106,4 +107,8 @@
 				struct mfs_instance **instance);
 
+/*mfs_inode.c*/
+struct mfs_inode *mfs_read_inode_raw(const struct mfs_instance *instance, 
+					uint32_t inum);
+
 #endif
 
Index: uspace/srv/fs/minixfs/mfs_inode.c
===================================================================
--- uspace/srv/fs/minixfs/mfs_inode.c	(revision f213ae71b29e8f675093e72eb899dd577948e864)
+++ uspace/srv/fs/minixfs/mfs_inode.c	(revision f213ae71b29e8f675093e72eb899dd577948e864)
@@ -0,0 +1,44 @@
+#include <stdlib.h>
+#include <mem.h>
+#include "mfs.h"
+#include "mfs_utils.h"
+
+struct mfs_inode *mfs_read_inode_raw(const struct mfs_instance *instance, 
+					uint32_t inum)
+{
+	struct mfs_inode *ino;
+	struct mfs_sb_info *sbi;
+	block_t *b;
+	int i;
+
+	const size_t ino_size = sizeof(struct mfs_inode);
+
+	ino = (struct mfs_inode *) malloc(ino_size);
+
+	if (!ino)
+		return NULL;
+
+	sbi = instance->sbi;
+
+	block_get(&b, instance->handle, 2 + inum / V1_INODES_PER_BLOCK,
+			BLOCK_FLAGS_NONE);
+
+	memcpy(ino, (struct mfs_ino *) (((uint8_t *) b->data) + 
+					inum * ino_size), ino_size);
+
+	ino->i_mode = conv16(sbi->native, ino->i_mode);
+	ino->i_uid = conv16(sbi->native, ino->i_uid);
+	ino->i_size = conv32(sbi->native, ino->i_size);
+	ino->i_mtime = conv32(sbi->native, ino->i_mtime);
+
+	for (i = 0; i < V1_NR_DIRECT_ZONES; ++i)
+		ino->i_dzone[i] = conv16(sbi->native, ino->i_dzone[i]);
+
+	for (i = 0; i < V1_NR_INDIRECT_ZONES; ++i)
+		ino->i_izone[i] = conv16(sbi->native, ino->i_izone[i]);
+
+	block_put(b);
+
+	return ino;
+}
+
