From 00aa2c8695b81944798010d81d600038e1f1ef3d Mon Sep 17 00:00:00 2001 From: Lukas Oesch Date: Sun, 10 May 2026 19:08:07 +0200 Subject: remove mount_path from mount struct (retrieve path from m_mount_dentry) --- kernel/src/filesystem/mount_table.cpp | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) (limited to 'kernel/src/filesystem/mount_table.cpp') diff --git a/kernel/src/filesystem/mount_table.cpp b/kernel/src/filesystem/mount_table.cpp index 965e83b..b67e05c 100644 --- a/kernel/src/filesystem/mount_table.cpp +++ b/kernel/src/filesystem/mount_table.cpp @@ -37,7 +37,9 @@ namespace kernel::filesystem kstd::vector> const & mounts) -> bool { return std::ranges::none_of(mounts, [&](auto const & other) { - return other != candidate && is_strict_prefix(other->get_mount_path(), candidate->get_mount_path()) && + // TODO BA-FS26 really correct? + return other != candidate && + is_strict_prefix(other->get_mount_path().view(), candidate->get_mount_path().view()) && !is_descendant_of(candidate, other); }); } @@ -80,6 +82,7 @@ namespace kernel::filesystem return operation_result::removed; } + // TODO BA-FS26 remove? auto mount_table::find_longest_prefix_mount(std::string_view path) const -> kstd::shared_ptr { kstd::shared_ptr mount_with_longest_prefix = nullptr; @@ -90,7 +93,7 @@ namespace kernel::filesystem auto mp = mount->get_mount_path(); // /a/b/c should match /a/b but not /a/bb or /a/b/c/d, / should match everything - bool is_prefix = path.starts_with(mp) && (mp == "/" || path.size() == mp.size() || path[mp.size()] == '/'); + bool is_prefix = path.starts_with(mp.view()) && (mp == "/" || path.size() == mp.size() || path[mp.size()] == '/'); bool visible = is_visible_mount(mount, m_mounts); if (is_prefix && visible && mp.size() >= best_len) -- cgit v1.2.3