summaryrefslogtreecommitdiff
path: root/ayafs/src/utils/mod.rs
diff options
context:
space:
mode:
Diffstat (limited to 'ayafs/src/utils/mod.rs')
-rw-r--r--ayafs/src/utils/mod.rs92
1 files changed, 0 insertions, 92 deletions
diff --git a/ayafs/src/utils/mod.rs b/ayafs/src/utils/mod.rs
deleted file mode 100644
index 468ebdb..0000000
--- a/ayafs/src/utils/mod.rs
+++ /dev/null
@@ -1,92 +0,0 @@
-mod constants;
-pub mod permissions;
-
-use crate::block_device::BLOCK_SIZE;
-use crate::disk::inode::{Inode, INODE_SIZE};
-use crate::{AyaFS, INODE_PER_BLOCK};
-use fuser::{FileAttr, FileType};
-use std::time::{Duration, SystemTime, UNIX_EPOCH};
-
-pub(crate) fn time_now() -> u32 {
- SystemTime::now()
- .duration_since(UNIX_EPOCH)
- .expect("How can current time be earlier than UNIX_EPOCH?")
- .as_secs() as u32
-}
-
-pub(crate) fn from_systime(system_time: SystemTime) -> u32 {
- system_time
- .duration_since(UNIX_EPOCH)
- .expect("How can current time be earlier than UNIX_EPOCH?")
- .as_secs() as u32
-}
-
-pub(crate) fn to_systime(time: u32) -> SystemTime {
- UNIX_EPOCH + Duration::from_secs(time as u64)
-}
-
-// File type code, one of:
-// 0x0 Unknown.
-// 0x1 Regular file.
-// 0x2 Directory.
-// 0x3 Character device file.
-// 0x4 Block device file.
-// 0x5 FIFO.
-// 0x6 Socket.
-// 0x7 Symbolic link.
-
-pub(crate) fn from_filetype(file_type: FileType) -> u8 {
- match file_type {
- FileType::NamedPipe => 0x5,
- FileType::CharDevice => 0x3,
- FileType::BlockDevice => 0x4,
- FileType::Directory => 0x2,
- FileType::RegularFile => 0x1,
- FileType::Symlink => 0x7,
- FileType::Socket => 0x6,
- }
-}
-
-pub(crate) fn to_filetype(file_type: u8) -> Option<FileType> {
- match file_type {
- 0x0 => None,
- 0x1 => Some(FileType::RegularFile),
- 0x2 => Some(FileType::Directory),
- 0x3 => Some(FileType::CharDevice),
- 0x4 => Some(FileType::BlockDevice),
- 0x5 => Some(FileType::NamedPipe),
- 0x6 => Some(FileType::Socket),
- 0x7 => Some(FileType::Symlink),
- _ => panic!("bad filetype"),
- }
-}
-
-pub(crate) fn to_fileattr(inode_index: usize, inode: &Inode) -> FileAttr {
- FileAttr {
- ino: inode_index as u64,
- size: inode.size as u64,
- blocks: inode.n_blocks as u64,
- atime: to_systime(inode.atime),
- mtime: to_systime(inode.mtime),
- ctime: to_systime(inode.ctime),
- crtime: to_systime(inode.crtime),
- kind: inode.mode.into(),
- perm: inode.mode.perm(),
- nlink: inode.n_links as u32,
- uid: inode.uid,
- gid: inode.gid,
- rdev: 0,
- blksize: BLOCK_SIZE as u32,
- flags: inode.flags,
- }
-}
-
-impl AyaFS {
- /// 输入 inode 编号, 返回它对应的 block number 和 block 内 offset
- pub(crate) fn locate_inode(&self, inode_index: usize) -> (usize, usize) {
- let block_number =
- inode_index / INODE_PER_BLOCK + 1 + self.inode_bitmap.length + self.data_bitmap.length;
- let block_offset = inode_index % INODE_PER_BLOCK * INODE_SIZE;
- (block_number, block_offset)
- }
-}