summaryrefslogtreecommitdiff
path: root/src/main.rs
diff options
context:
space:
mode:
authorChuyan Zhang <me@zcy.moe>2023-11-19 01:03:19 -0800
committerChuyan Zhang <me@zcy.moe>2023-11-19 01:03:19 -0800
commit8a45cd95353ae9fe1286dbc4fcd36faaa66c9f82 (patch)
treeaf7687f74197ec338f57dc0cd174f1c32bb60af2 /src/main.rs
parent886df6daf6bb6b922276157dba1cc099e897a9ea (diff)
downloadmyfs-8a45cd95353ae9fe1286dbc4fcd36faaa66c9f82.tar.gz
myfs-8a45cd95353ae9fe1286dbc4fcd36faaa66c9f82.zip
Layer 1 test not passing
Diffstat (limited to 'src/main.rs')
-rw-r--r--src/main.rs25
1 files changed, 16 insertions, 9 deletions
diff --git a/src/main.rs b/src/main.rs
index e01d352..a5ec616 100644
--- a/src/main.rs
+++ b/src/main.rs
@@ -1,7 +1,8 @@
mod block_device;
mod disk;
-mod memory;
mod filesystem;
+mod memory;
+mod tests;
mod utils;
use clap::Parser;
@@ -12,12 +13,14 @@ use std::num::NonZeroUsize;
use std::sync::Arc;
use std::time::Duration;
-use memory::cached_block::CachedBlock;
-use disk::data_block::DataBlock;
+use crate::disk::block::InodeBlock;
use crate::disk::inode::InodeMode;
-use block_device::{BLOCK_SIZE, BlockDevice, memory_disk::MemoryDisk};
+use crate::memory::cached_block::BlockCache;
+use block_device::{memory_disk::MemoryDisk, BlockDevice, BLOCK_SIZE};
use disk::bitmap::Bitmap;
+use disk::block::DataBlock;
use disk::inode::INODE_SIZE;
+use memory::cached_block::CachedBlock;
use users::{get_current_gid, get_current_uid};
#[derive(Parser, Debug)]
@@ -61,8 +64,10 @@ struct AyaFS {
inode_start_block: usize,
data_start_block: usize,
- // cached_inodes: LruCache<usize, CachedInode>,
- cached_blocks: LruCache<usize, CachedBlock<DataBlock>>,
+ cached_inodes: BlockCache<InodeBlock>,
+ cached_blocks: BlockCache<DataBlock>,
+ // cached_inodes: LruCache<usize, CachedBlock<InodeBlock>>,
+ // cached_blocks: LruCache<usize, CachedBlock<DataBlock>>,
}
impl AyaFS {
@@ -103,7 +108,7 @@ impl AyaFS {
let _ = inode_bitmap.allocate().unwrap(); // inode block 0 is not usable
let mut fs = Self {
- device,
+ device: device.clone(),
data_bitmap,
inode_bitmap,
inode_start_block: data_bitmap_block_number + inode_bitmap_block_number + 1,
@@ -111,8 +116,10 @@ impl AyaFS {
+ inode_bitmap_block_number
+ inode_block_number
+ 1,
+ cached_inodes: BlockCache::new(device.clone(), 256),
+ cached_blocks: BlockCache::new(device.clone(), 256),
// cached_inodes: LruCache::new(NonZeroUsize::new(256).unwrap()),
- cached_blocks: LruCache::new(NonZeroUsize::new(256).unwrap()),
+ // cached_blocks: LruCache::new(NonZeroUsize::new(256).unwrap()),
};
fs.create_inode(
@@ -137,7 +144,7 @@ fn main() {
MountOption::AutoUnmount,
MountOption::AllowRoot,
];
- let mem_disk = Arc::new(MemoryDisk::new());
+ let mem_disk = Arc::new(MemoryDisk::new(16384));
let filesystem = AyaFS::new(mem_disk, 16384);
fuser::mount2(filesystem, mount_point, &options).unwrap();