From a3ef8f8ad5248e3424113871950eb9c80eeeb99e Mon Sep 17 00:00:00 2001 From: GnoCiYeH <118462160+GnoCiYeH@users.noreply.github.com> Date: Thu, 31 Aug 2023 19:52:32 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9RamFS=E7=9B=AE=E5=89=8D?= =?UTF-8?q?=E5=AD=98=E5=9C=A8=E7=9A=84BUG=20(#354)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * 修改RamFS目前存在的BUG --- kernel/src/filesystem/ramfs/mod.rs | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) diff --git a/kernel/src/filesystem/ramfs/mod.rs b/kernel/src/filesystem/ramfs/mod.rs index 3dd893b9..e2cef7c7 100644 --- a/kernel/src/filesystem/ramfs/mod.rs +++ b/kernel/src/filesystem/ramfs/mod.rs @@ -114,6 +114,33 @@ impl RamFS { } impl IndexNode for LockedRamFSInode { + fn truncate(&self, len: usize) -> Result<(), SystemError> { + let mut inode = self.0.lock(); + + //如果是文件夹,则报错 + if inode.metadata.file_type == FileType::Dir { + return Err(SystemError::EINVAL); + } + + //当前文件长度大于_len才进行截断,否则不操作 + if inode.data.len() > len { + inode.data.resize(len, 0); + } + return Ok(()); + } + + fn close(&self, _data: &mut FilePrivateData) -> Result<(), SystemError> { + return Ok(()); + } + + fn open( + &self, + _data: &mut FilePrivateData, + _mode: &super::vfs::file::FileMode, + ) -> Result<(), SystemError> { + return Ok(()); + } + fn read_at( &self, offset: usize,