diff options
Diffstat (limited to 'kernel/kernel/vfs/mount_table.cpp')
| -rw-r--r-- | kernel/kernel/vfs/mount_table.cpp | 12 |
1 files changed, 11 insertions, 1 deletions
diff --git a/kernel/kernel/vfs/mount_table.cpp b/kernel/kernel/vfs/mount_table.cpp index 1609bc36..01127697 100644 --- a/kernel/kernel/vfs/mount_table.cpp +++ b/kernel/kernel/vfs/mount_table.cpp @@ -44,6 +44,16 @@ namespace kernel::vfs } auto const & mount = *mount_it; + return remove_mount(mount); + } + + auto mount_table::remove_mount(kstd::shared_ptr<mount> const & mount) -> kstd::result<void> + { + if (!mount) + { + return kstd::failure(errc::invalid_argument); + } + if (!mount->is_ready_to_unmount()) { return kstd::failure(errc::mount_busy); @@ -63,7 +73,7 @@ namespace kernel::vfs mount_dentry->unset_flag(dentry::dentry_flags::is_mount_point); } - m_mounts.erase(mount_it); + kstd::erase(m_mounts, mount); return kstd::success(); } |
