Add ext2 VFS implementation
diff --git a/src/kernel/vfs.c b/src/kernel/vfs.c
index aef955b..e3c06a0 100644
--- a/src/kernel/vfs.c
+++ b/src/kernel/vfs.c
@@ -45,13 +45,13 @@
 	return node->vtable->readdir(node, index, out);
 }
 
-struct fs_node *fs_finddir(struct fs_node *node, char *name)
+struct fs_node *fs_finddir(struct fs_node *node, char *name, uint name_len)
 {
 	if (!node || !node->vtable || !node->vtable->finddir ||
 		(node->flags & 7) != FS_DIRECTORY)
 		return NULL;
 
-	return node->vtable->finddir(node, name);
+	return node->vtable->finddir(node, name, name_len);
 }
 
 bool root_readdir(struct fs_node *node, uint index, struct fs_dirent *out)
@@ -68,9 +68,9 @@
 		return false;
 }
 
-struct fs_node *root_finddir(struct fs_node *node, char *name)
+struct fs_node *root_finddir(struct fs_node *node, char *name, uint name_len)
 {
-	if (!strcmp(name, "dev"))
+	if (!strncmp(name, "dev", name_len))
 	{
 		return &dev;
 	}
@@ -90,12 +90,12 @@
 		return false;
 }
 
-struct fs_node *dev_finddir(struct fs_node *node, char *name)
+struct fs_node *dev_finddir(struct fs_node *node, char *name, uint name_len)
 {
 	if (node != &dev)
 		return NULL;
 
-	if (!strcmp(name, "initrd"))
+	if (!strncmp(name, "initrd", MIN(name_len, FS_MAX_NAME_LEN)))
 	{
 		return &initrd;
 	}