From 71187d865e5f13c354fb5df310554327c2b548b1 Mon Sep 17 00:00:00 2001 From: Andreas Kling Date: Sun, 5 Sep 2021 14:46:44 +0200 Subject: [PATCH] Kernel: Tidy up VirtualFileSystem::mount_root() a little bit - Return KResult instead of bool - Use TRY() --- Kernel/FileSystem/VirtualFileSystem.cpp | 13 +++++-------- Kernel/FileSystem/VirtualFileSystem.h | 2 +- Kernel/init.cpp | 2 +- 3 files changed, 7 insertions(+), 10 deletions(-) diff --git a/Kernel/FileSystem/VirtualFileSystem.cpp b/Kernel/FileSystem/VirtualFileSystem.cpp index 42b07b448b..1716644c42 100644 --- a/Kernel/FileSystem/VirtualFileSystem.cpp +++ b/Kernel/FileSystem/VirtualFileSystem.cpp @@ -111,11 +111,11 @@ KResult VirtualFileSystem::unmount(Inode& guest_inode) }); } -bool VirtualFileSystem::mount_root(FileSystem& fs) +KResult VirtualFileSystem::mount_root(FileSystem& fs) { if (m_root_inode) { dmesgln("VirtualFileSystem: mount_root can't mount another root"); - return false; + return EEXIST; } Mount mount { fs, nullptr, root_mount_flags }; @@ -123,7 +123,7 @@ bool VirtualFileSystem::mount_root(FileSystem& fs) auto& root_inode = fs.root_inode(); if (!root_inode.is_directory()) { dmesgln("VirtualFileSystem: root inode ({}) for / is not a directory :(", root_inode.identifier()); - return false; + return ENOTDIR; } m_root_inode = root_inode; @@ -133,11 +133,8 @@ bool VirtualFileSystem::mount_root(FileSystem& fs) mounts.append(move(mount)); }); - auto custody_or_error = Custody::try_create(nullptr, "", *m_root_inode, root_mount_flags); - if (custody_or_error.is_error()) - return false; - m_root_custody = custody_or_error.release_value(); - return true; + m_root_custody = TRY(Custody::try_create(nullptr, "", *m_root_inode, root_mount_flags)); + return KSuccess; } auto VirtualFileSystem::find_mount_for_host(InodeIdentifier id) -> Mount* diff --git a/Kernel/FileSystem/VirtualFileSystem.h b/Kernel/FileSystem/VirtualFileSystem.h index e0a7e772ef..262ef63dd9 100644 --- a/Kernel/FileSystem/VirtualFileSystem.h +++ b/Kernel/FileSystem/VirtualFileSystem.h @@ -42,7 +42,7 @@ public: VirtualFileSystem(); ~VirtualFileSystem(); - bool mount_root(FileSystem&); + KResult mount_root(FileSystem&); KResult mount(FileSystem&, Custody& mount_point, int flags); KResult bind_mount(Custody& source, Custody& mount_point, int flags); KResult remount(Custody& mount_point, int new_flags); diff --git a/Kernel/init.cpp b/Kernel/init.cpp index ebb84c030b..b4d7821fb3 100644 --- a/Kernel/init.cpp +++ b/Kernel/init.cpp @@ -320,7 +320,7 @@ void init_stage2(void*) SB16::detect(); StorageManagement::initialize(kernel_command_line().root_device(), kernel_command_line().is_force_pio()); - if (!VirtualFileSystem::the().mount_root(StorageManagement::the().root_filesystem())) { + if (VirtualFileSystem::the().mount_root(StorageManagement::the().root_filesystem()).is_error()) { PANIC("VirtualFileSystem::mount_root failed"); }