From feab4cd81f2bbc89e55353a54df2575b9c21b514 Mon Sep 17 00:00:00 2001 From: Marcel Braun Date: Sun, 10 May 2026 20:07:51 +0200 Subject: Add method that returns the next ancestor with mount flag set --- kernel/include/kernel/filesystem/dentry.hpp | 6 ++++++ kernel/src/filesystem/dentry.cpp | 10 ++++++++++ 2 files changed, 16 insertions(+) diff --git a/kernel/include/kernel/filesystem/dentry.hpp b/kernel/include/kernel/filesystem/dentry.hpp index 226f2b9..1d99a25 100644 --- a/kernel/include/kernel/filesystem/dentry.hpp +++ b/kernel/include/kernel/filesystem/dentry.hpp @@ -60,6 +60,12 @@ namespace kernel::filesystem */ [[nodiscard]] auto get_absolute_path() const -> kstd::string; + /** + @brief traverse parent dentries until dentry with mount flag is found. + @return The found dentry. + */ + [[nodiscard]] auto get_ancestor_with_mount_flag() const -> kstd::shared_ptr; + /** @brief Add a @p child dentry. @param child The child dentry to add. diff --git a/kernel/src/filesystem/dentry.cpp b/kernel/src/filesystem/dentry.cpp index a77ce23..6945a27 100644 --- a/kernel/src/filesystem/dentry.cpp +++ b/kernel/src/filesystem/dentry.cpp @@ -66,6 +66,16 @@ namespace kernel::filesystem return path; } + auto dentry::get_ancestor_with_mount_flag() const -> kstd::shared_ptr + { + auto parent = m_parent; + while (parent && !parent->has_flag(dentry_flags::mounted)) + { + parent = parent->get_parent(); + } + return parent; + } + auto dentry::add_child(kstd::shared_ptr const & child) -> void { m_children.push_back(child); -- cgit v1.2.3