aboutsummaryrefslogtreecommitdiff
path: root/kernel/src/filesystem/vfs.cpp
diff options
context:
space:
mode:
authorLukas Oesch <lukasoesch20@gmail.com>2026-05-05 20:33:28 +0200
committerLukas Oesch <lukasoesch20@gmail.com>2026-05-05 20:33:28 +0200
commit7414148b662a33cf6c69f89b7b0c3162f6880d6c (patch)
treef526d73349a14ad234c6b08339c7dfce0c159b1a /kernel/src/filesystem/vfs.cpp
parenta0f1c6f2199f55d2faaa5d9eafa9f763b2b299e4 (diff)
downloadkernel-7414148b662a33cf6c69f89b7b0c3162f6880d6c.tar.xz
kernel-7414148b662a33cf6c69f89b7b0c3162f6880d6c.zip
refactoring mount_table lookup
Diffstat (limited to 'kernel/src/filesystem/vfs.cpp')
-rw-r--r--kernel/src/filesystem/vfs.cpp10
1 files changed, 4 insertions, 6 deletions
diff --git a/kernel/src/filesystem/vfs.cpp b/kernel/src/filesystem/vfs.cpp
index 7f21a5c..19f5f48 100644
--- a/kernel/src/filesystem/vfs.cpp
+++ b/kernel/src/filesystem/vfs.cpp
@@ -41,7 +41,6 @@ namespace kernel::filesystem
auto vfs::init_internal() -> void
{
- // Mount rootfs at / as the temporary base
auto root_fs = kstd::make_shared<rootfs::filesystem>();
root_fs->mount(nullptr);
@@ -140,8 +139,8 @@ namespace kernel::filesystem
kstd::shared_ptr<filesystem> const & fs) -> void
{
auto mount_path = mount_point_dentry->get_full_path();
-
auto parent_mount = m_mount_table.find_longest_prefix_mount(mount_path.view());
+
auto new_fs_root =
kstd::make_shared<dentry>(mount_point_dentry->get_parent(), fs->root_inode(), mount_point_dentry->get_name());
auto new_mount = kstd::make_shared<mount>(mount_point_dentry, new_fs_root, fs, mount_path.view(), parent_mount);
@@ -156,7 +155,7 @@ namespace kernel::filesystem
}
// TODO BA-FS26 refactor (get mount by path, no more prefix matching)
- auto current_mount = m_mount_table.find_longest_prefix_mount("/");
+ auto current_mount = m_mount_table.find_exact_mount("/");
if (!current_mount)
{
kapi::system::panic("[FILESYSTEM] no root mount found.");
@@ -217,8 +216,7 @@ namespace kernel::filesystem
}
else if (next_dentry->has_flag(dentry::dentry_flags::mounted))
{
- // TODO BA-FS26 really do it like this? or just call "get" without longes_prefix stuff
- current_mount = m_mount_table.find_longest_prefix_mount(next_dentry->get_full_path().view());
+ current_mount = m_mount_table.find_exact_mount(next_dentry->get_full_path().view());
if (!current_mount)
{
kapi::system::panic("[FILESYSTEM] mount for dentry with mounted flag not found.");
@@ -246,7 +244,7 @@ namespace kernel::filesystem
if (path::is_valid_absolute_path(symbolic_link_path))
{
- current_mount = m_mount_table.find_longest_prefix_mount("/");
+ current_mount = m_mount_table.find_exact_mount("/");
current_dentry = current_mount->root_dentry();
}
continue;