aboutsummaryrefslogtreecommitdiff
path: root/kernel/kernel/vfs/mount_table.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'kernel/kernel/vfs/mount_table.cpp')
-rw-r--r--kernel/kernel/vfs/mount_table.cpp17
1 files changed, 17 insertions, 0 deletions
diff --git a/kernel/kernel/vfs/mount_table.cpp b/kernel/kernel/vfs/mount_table.cpp
index 43dff516..c7198396 100644
--- a/kernel/kernel/vfs/mount_table.cpp
+++ b/kernel/kernel/vfs/mount_table.cpp
@@ -83,6 +83,23 @@ namespace kernel::vfs
return (mount_it != m_mounts.end()) ? *mount_it : nullptr;
}
+ auto mount_table::houses_mounts(kstd::shared_ptr<dentry> parent) const -> bool
+ {
+ return std::ranges::any_of(m_mounts, [&](auto const & mount) {
+ auto const dentry = mount->mount_dentry();
+ return dentry && dentry->parent() == parent;
+ });
+ }
+
+ auto mount_table::find_mount_at(kstd::shared_ptr<dentry> parent, std::string_view name) -> kstd::shared_ptr<mount>
+ {
+ auto found = std::ranges::find_last_if(m_mounts, [&](auto const & mount) {
+ auto const & dentry = mount->mount_dentry();
+ return dentry && dentry->parent() == parent && dentry->name() == name;
+ });
+ return found.begin() != std::ranges::end(m_mounts) ? *found.begin() : nullptr;
+ }
+
auto mount_table::move_mount(kstd::shared_ptr<mount> const & mount, kstd::shared_ptr<dentry> const & mount_point,
kstd::shared_ptr<struct mount> const & parent) -> void
{