Kernel: Misc tweaks
This commit is contained in:
parent
ec4902d1dd
commit
d395b93b15
Notes:
sideshowbarker
2024-07-19 06:00:26 +09:00
Author: https://github.com/bugaevc Commit: https://github.com/SerenityOS/serenity/commit/d395b93b150 Pull-request: https://github.com/SerenityOS/serenity/pull/2430 Reviewed-by: https://github.com/alimpfard
3 changed files with 8 additions and 5 deletions
|
@ -70,6 +70,8 @@ InodeIdentifier VFS::root_inode_id() const
|
|||
|
||||
KResult VFS::mount(FS& file_system, Custody& mount_point, int flags)
|
||||
{
|
||||
LOCKER(m_lock);
|
||||
|
||||
auto& inode = mount_point.inode();
|
||||
dbg() << "VFS: Mounting " << file_system.class_name() << " at " << mount_point.absolute_path() << " (inode: " << inode.identifier() << ") with flags " << flags;
|
||||
// FIXME: check that this is not already a mount point
|
||||
|
@ -80,6 +82,8 @@ KResult VFS::mount(FS& file_system, Custody& mount_point, int flags)
|
|||
|
||||
KResult VFS::bind_mount(Custody& source, Custody& mount_point, int flags)
|
||||
{
|
||||
LOCKER(m_lock);
|
||||
|
||||
dbg() << "VFS: Bind-mounting " << source.absolute_path() << " at " << mount_point.absolute_path();
|
||||
// FIXME: check that this is not already a mount point
|
||||
Mount mount { source.inode(), mount_point, flags };
|
||||
|
|
|
@ -132,8 +132,7 @@ private:
|
|||
Lock m_lock { "VFSLock" };
|
||||
|
||||
RefPtr<Inode> m_root_inode;
|
||||
Vector<Mount> m_mounts;
|
||||
|
||||
Vector<Mount, 16> m_mounts;
|
||||
RefPtr<Custody> m_root_custody;
|
||||
};
|
||||
|
||||
|
|
|
@ -4088,7 +4088,7 @@ int Process::sys$mount(const Syscall::SC_mount_params* user_params)
|
|||
auto target = validate_and_copy_string_from_user(params.target);
|
||||
auto fs_type = validate_and_copy_string_from_user(params.fs_type);
|
||||
|
||||
if (target.is_null() || fs_type.is_null())
|
||||
if (target.is_null())
|
||||
return -EFAULT;
|
||||
|
||||
auto description = file_description(source_fd);
|
||||
|
@ -4103,8 +4103,6 @@ int Process::sys$mount(const Syscall::SC_mount_params* user_params)
|
|||
|
||||
auto& target_custody = custody_or_error.value();
|
||||
|
||||
RefPtr<FS> fs;
|
||||
|
||||
if (params.flags & MS_BIND) {
|
||||
// We're doing a bind mount.
|
||||
if (description.is_null())
|
||||
|
@ -4116,6 +4114,8 @@ int Process::sys$mount(const Syscall::SC_mount_params* user_params)
|
|||
return VFS::the().bind_mount(*description->custody(), target_custody, params.flags);
|
||||
}
|
||||
|
||||
RefPtr<FS> fs;
|
||||
|
||||
if (fs_type == "ext2" || fs_type == "Ext2FS") {
|
||||
if (description.is_null())
|
||||
return -EBADF;
|
||||
|
|
Loading…
Add table
Reference in a new issue