diff options
Diffstat (limited to 'kernel/kernel/vfs/mount_table.cpp')
| -rw-r--r-- | kernel/kernel/vfs/mount_table.cpp | 17 |
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 { |
