diff options
Diffstat (limited to 'kernel/kernel/filesystem/filesystem.cpp')
| -rw-r--r-- | kernel/kernel/filesystem/filesystem.cpp | 23 |
1 files changed, 8 insertions, 15 deletions
diff --git a/kernel/kernel/filesystem/filesystem.cpp b/kernel/kernel/filesystem/filesystem.cpp index 84bbdef6..1d222888 100644 --- a/kernel/kernel/filesystem/filesystem.cpp +++ b/kernel/kernel/filesystem/filesystem.cpp @@ -8,11 +8,13 @@ #include <kstd/result.hpp> #include <kstd/system_error.hpp> +#include <utility> + namespace kernel::filesystem { auto filesystem::probe_and_mount(kstd::shared_ptr<inode> const & backing_inode) - -> kstd::result<kstd::shared_ptr<filesystem>> + -> kstd::result<std::pair<kstd::shared_ptr<filesystem>, kstd::shared_ptr<inode>>> { for (auto & type : type_registry::get().all()) { @@ -22,27 +24,18 @@ namespace kernel::filesystem } auto fs = type->make_instance(); - - if (fs->mount(backing_inode)) + auto root = fs->mount(backing_inode); + if (!root) { - return fs; + continue; } + + return std::pair{fs, *root}; } return kstd::failure(vfs_errc::unsupported_filesystem); } - auto filesystem::mount(kstd::shared_ptr<inode> const & backing_inode) -> kstd::result<void> - { - m_backing_inode = backing_inode; - return kstd::success(); - } - - auto filesystem::root_inode() const -> kstd::shared_ptr<inode> const & - { - return m_root_inode; - } - auto filesystem::backing_inode() const -> kstd::shared_ptr<inode> const & { return m_backing_inode; |
