Index: uspace/srv/fs/ext4fs/ext4fs_ops.c
===================================================================
--- uspace/srv/fs/ext4fs/ext4fs_ops.c	(revision f49638edbaaecc88a823b18ce28fe67eb9d3bd5b)
+++ uspace/srv/fs/ext4fs/ext4fs_ops.c	(revision bf66ef4449472db94d23f414adce9ea2a7577ff4)
@@ -205,8 +205,4 @@
 	ext4_directory_iterator_t it;
 	int rc;
-	size_t name_size;
-	size_t component_size;
-	bool found = false;
-	uint32_t inode;
 
 	fs = eparent->instance->filesystem;
@@ -217,27 +213,4 @@
 	}
 
-	component_size = strlen(component);
-
-	if (ext4_superblock_has_feature_compatible(fs->superblock, EXT4_FEATURE_COMPAT_DIR_INDEX) &&
-			ext4_inode_has_flag(eparent->inode_ref->inode, EXT4_INODE_FLAG_INDEX)) {
-
-		rc = ext4_directory_dx_find_entry(&it, fs, eparent->inode_ref, component_size, component);
-
-		// Index isn't corrupted
-		if (rc != EXT4_ERR_BAD_DX_DIR) {
-
-			if (rc != EOK) {
-				return rc;
-			}
-
-			inode = ext4_directory_entry_ll_get_inode(it.current);
-
-			rc = ext4fs_node_get_core(rfn, eparent->instance, inode);
-			ext4_directory_iterator_fini(&it);
-			return rc;
-		}
-
-	}
-
 	rc = ext4_directory_iterator_init(&it, fs, eparent->inode_ref, 0);
 	if (rc != EOK) {
@@ -245,38 +218,19 @@
 	}
 
-	while (it.current != NULL) {
-		inode = ext4_directory_entry_ll_get_inode(it.current);
-
-		/* ignore empty directory entries */
-		if (inode != 0) {
-			name_size = ext4_directory_entry_ll_get_name_length(fs->superblock,
-				it.current);
-
-			if (name_size == component_size && bcmp(component, &it.current->name,
-				    name_size) == 0) {
-				rc = ext4fs_node_get_core(rfn, eparent->instance,
-					inode);
-				if (rc != EOK) {
-					ext4_directory_iterator_fini(&it);
-					return rc;
-				}
-				found = true;
-				break;
-			}
-		}
-
-		rc = ext4_directory_iterator_next(&it);
-		if (rc != EOK) {
-			ext4_directory_iterator_fini(&it);
-			return rc;
-		}
+	rc = ext4_directory_find_entry(&it, eparent->inode_ref, component);
+	if (rc != EOK) {
+		ext4_directory_iterator_fini(&it);
+		return rc;
+	}
+
+	uint32_t inode = ext4_directory_entry_ll_get_inode(it.current);
+
+	rc = ext4fs_node_get_core(rfn, eparent->instance, inode);
+	if (rc != EOK) {
+		ext4_directory_iterator_fini(&it);
+		return rc;
 	}
 
 	ext4_directory_iterator_fini(&it);
-
-	if (!found) {
-		return ENOENT;
-	}
-
 	return EOK;
 }
@@ -791,5 +745,4 @@
     ext4fs_instance_t *inst, ext4_inode_ref_t *inode_ref, size_t *rbytes)
 {
-
 	ext4_directory_iterator_t it;
 	aoff64_t next;
@@ -1151,8 +1104,14 @@
 static int ext4fs_destroy(service_id_t service_id, fs_index_t index)
 {
-	EXT4FS_DBG("not supported");
-
-	//TODO
-	return ENOTSUP;
+	int rc;
+	fs_node_t *fn;
+
+	rc = ext4fs_node_get(&fn, service_id, index);
+	if (rc != EOK) {
+		return rc;
+	}
+
+	/* Destroy the inode */
+	return ext4fs_destroy_node(fn);
 }
 
