From b61188889d0d8a72ef99bd63b6c3b53cdd882277 Mon Sep 17 00:00:00 2001 From: LI Qing Date: Mon, 15 Nov 2021 12:50:45 +0800 Subject: [PATCH] Update mountfs --- deps/sefs | 2 +- src/libos/src/fs/rootfs.rs | 14 +++++++++----- 2 files changed, 10 insertions(+), 6 deletions(-) diff --git a/deps/sefs b/deps/sefs index 5fd86adb..6eaf1d2f 160000 --- a/deps/sefs +++ b/deps/sefs @@ -1 +1 @@ -Subproject commit 5fd86adbfa0b173d10d5afebd871a237bf25f688 +Subproject commit 6eaf1d2f50327631cf62a965f30d56ce40934c76 diff --git a/src/libos/src/fs/rootfs.rs b/src/libos/src/fs/rootfs.rs index 0231d364..f2dd140f 100644 --- a/src/libos/src/fs/rootfs.rs +++ b/src/libos/src/fs/rootfs.rs @@ -75,7 +75,7 @@ pub fn open_root_fs_according_to( } pub fn mount_nonroot_fs_according_to( - root: &MNode, + root: &Arc, mount_configs: &Vec, user_key: &Option, ) -> Result<()> { @@ -123,11 +123,15 @@ pub fn mount_nonroot_fs_according_to( Ok(()) } -pub fn mount_fs_at(fs: Arc, parent_inode: &MNode, abs_path: &Path) -> Result<()> { - let mut mount_dir = parent_inode.find(false, ".")?; +pub fn mount_fs_at( + fs: Arc, + parent_inode: &Arc, + abs_path: &Path, +) -> Result<()> { + let mut mount_dir = parent_inode.find(".")?; // The first component of abs_path is the RootDir, skip it. for dirname in abs_path.iter().skip(1) { - mount_dir = match mount_dir.find(false, dirname.to_str().unwrap()) { + mount_dir = match mount_dir.find(dirname.to_str().unwrap()) { Ok(existing_dir) => { if existing_dir.metadata()?.type_ != FileType::Dir { return_errno!(EIO, "not a directory"); @@ -137,7 +141,7 @@ pub fn mount_fs_at(fs: Arc, parent_inode: &MNode, abs_path: &Pat Err(_) => return_errno!(ENOENT, "Mount point does not exist"), }; } - mount_dir.mount(fs); + mount_dir.downcast_ref::().unwrap().mount(fs); Ok(()) }