Index: uspace/srv/fs/ext2fs/ext2fs_ops.c
===================================================================
--- uspace/srv/fs/ext2fs/ext2fs_ops.c	(revision 84226f08911bd7c43fa1489fdd2d0ae646108869)
+++ uspace/srv/fs/ext2fs/ext2fs_ops.c	(revision e2abab03ea85b6e5d4c8c5cee624a1f613cfbfbe)
@@ -71,4 +71,7 @@
 } ext2fs_node_t;
 
+/*
+ * Forward declarations of auxiliary functions
+ */
 static int ext2fs_instance_get(devmap_handle_t, ext2fs_instance_t **);
 static void ext2fs_read_directory(ipc_callid_t, ipc_callid_t, aoff64_t,
@@ -77,4 +80,5 @@
 	size_t, ext2fs_instance_t *, ext2_inode_ref_t *);
 static bool ext2fs_is_dots(const uint8_t *, size_t);
+static int ext2fs_node_get_core(fs_node_t **, ext2fs_instance_t *, fs_index_t);
 
 /*
@@ -203,6 +207,5 @@
 			if (name_size == component_size && bcmp(component, &it.current->name,
 				    name_size) == 0) {
-				// FIXME: this may be done better (give instance as param)
-				rc = ext2fs_node_get(rfn, eparent->instance->devmap_handle,
+				rc = ext2fs_node_get_core(rfn, eparent->instance,
 					it.current->inode);
 				if (rc != EOK) {
@@ -235,8 +238,23 @@
 {
 	EXT2FS_DBG("(-,%u,%u)", devmap_handle, index);
+	
+	ext2fs_instance_t *inst = NULL;
+	int rc;
+	
+	rc = ext2fs_instance_get(devmap_handle, &inst);
+	if (rc != EOK) {
+		return rc;
+	}
+	
+	return ext2fs_node_get_core(rfn, inst, index);
+}
+
+int ext2fs_node_get_core(fs_node_t **rfn, ext2fs_instance_t *inst,
+		fs_index_t index)
+{
 	int rc;
 	fs_node_t *node = NULL;
 	ext2fs_node_t *enode = NULL;
-	ext2fs_instance_t *inst = NULL;
+	
 	ext2_inode_ref_t *inode_ref = NULL;
 
@@ -250,15 +268,7 @@
 		free(enode);
 		return ENOMEM;
-	}
-	
+	}	
 	fs_node_initialize(node);
 
-	rc = ext2fs_instance_get(devmap_handle, &inst);
-	if (rc != EOK) {
-		free(enode);
-		free(node);
-		return rc;
-	}
-		
 	rc = ext2_filesystem_get_inode_ref(inst->filesystem, index, &inode_ref);
 	if (rc != EOK) {
