|
@@ -12,6 +12,7 @@ use alloc::{
|
|
|
use system_error::SystemError;
|
|
|
|
|
|
use crate::{
|
|
|
+ arch::mm::PageMapper,
|
|
|
driver::base::device::device_number::DeviceNumber,
|
|
|
filesystem::vfs::ROOT_INODE,
|
|
|
libs::{
|
|
@@ -19,6 +20,7 @@ use crate::{
|
|
|
rwlock::RwLock,
|
|
|
spinlock::{SpinLock, SpinLockGuard},
|
|
|
},
|
|
|
+ mm::{fault::PageFaultMessage, VmFaultReason},
|
|
|
};
|
|
|
|
|
|
use super::{
|
|
@@ -553,6 +555,21 @@ impl FileSystem for MountFS {
|
|
|
fn super_block(&self) -> SuperBlock {
|
|
|
SuperBlock::new(Magic::MOUNT_MAGIC, MOUNTFS_BLOCK_SIZE, MOUNTFS_MAX_NAMELEN)
|
|
|
}
|
|
|
+
|
|
|
+ unsafe fn fault(&self, pfm: &mut PageFaultMessage, mapper: &mut PageMapper) -> VmFaultReason {
|
|
|
+ self.inner_filesystem.fault(pfm, mapper)
|
|
|
+ }
|
|
|
+
|
|
|
+ unsafe fn map_pages(
|
|
|
+ &self,
|
|
|
+ pfm: &mut PageFaultMessage,
|
|
|
+ mapper: &mut PageMapper,
|
|
|
+ start_pgoff: usize,
|
|
|
+ end_pgoff: usize,
|
|
|
+ ) -> VmFaultReason {
|
|
|
+ self.inner_filesystem
|
|
|
+ .map_pages(pfm, mapper, start_pgoff, end_pgoff)
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
/// MountList
|