From 300403e3eb902ab09492b8ad5d8691297419c410 Mon Sep 17 00:00:00 2001 From: Cautreoxit Date: Mon, 28 Oct 2024 22:02:22 +0800 Subject: [PATCH] Implement sync for ext2 and exfat --- kernel/src/fs/exfat/inode.rs | 4 ++++ kernel/src/fs/ext2/impl_for_vfs/inode.rs | 8 ++++++-- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/kernel/src/fs/exfat/inode.rs b/kernel/src/fs/exfat/inode.rs index 612259ef8..1e6604189 100644 --- a/kernel/src/fs/exfat/inode.rs +++ b/kernel/src/fs/exfat/inode.rs @@ -1683,6 +1683,8 @@ impl Inode for ExfatInode { let fs_guard = fs.lock(); inner.sync_all(&fs_guard)?; + fs.block_device().sync()?; + Ok(()) } @@ -1692,6 +1694,8 @@ impl Inode for ExfatInode { let fs_guard = fs.lock(); inner.sync_data(&fs_guard)?; + fs.block_device().sync()?; + Ok(()) } diff --git a/kernel/src/fs/ext2/impl_for_vfs/inode.rs b/kernel/src/fs/ext2/impl_for_vfs/inode.rs index 9a92fbe9c..95e3db8bb 100644 --- a/kernel/src/fs/ext2/impl_for_vfs/inode.rs +++ b/kernel/src/fs/ext2/impl_for_vfs/inode.rs @@ -191,11 +191,15 @@ impl Inode for Ext2Inode { } fn sync_all(&self) -> Result<()> { - self.sync_all() + self.sync_all()?; + self.fs().block_device().sync()?; + Ok(()) } fn sync_data(&self) -> Result<()> { - self.sync_data() + self.sync_data()?; + self.fs().block_device().sync()?; + Ok(()) } fn fs(&self) -> Arc {