Fix get_attr

This commit is contained in:
oupson 2022-10-06 11:14:36 +02:00
parent c7d8108787
commit 5cfbba8c9b
Signed by: oupson
GPG Key ID: 3BD88615552EFCB7
1 changed files with 14 additions and 9 deletions

View File

@ -1,11 +1,10 @@
use std::{ use std::{
collections::BTreeMap, collections::BTreeMap,
ffi::OsStr, ffi::OsStr,
fs::FileType as StdFileType, ops::Add,
os::unix::prelude::{FileTypeExt, MetadataExt, OsStrExt, PermissionsExt}, os::unix::prelude::{FileTypeExt, MetadataExt, OsStrExt, PermissionsExt},
path::{Path, PathBuf}, path::{Path, PathBuf},
sync::atomic::{AtomicU64, Ordering}, time::{Duration, UNIX_EPOCH},
time::{Duration, SystemTime},
}; };
use fuser::{FileAttr, FileType, Filesystem, FUSE_ROOT_ID}; use fuser::{FileAttr, FileType, Filesystem, FUSE_ROOT_ID};
@ -98,21 +97,27 @@ impl EncryptedFs {
let file_type = Self::get_file_type(meta.file_type()); let file_type = Self::get_file_type(meta.file_type());
let file_size = if meta.is_file() {
EncryptedFs::get_real_size(meta.size())
} else {
meta.size()
};
FileAttr { FileAttr {
ino, ino,
size: EncryptedFs::get_real_size(meta.size()), size: file_size,
blocks: BLOCK_SIZE / meta.size(), blocks: (file_size + BLOCK_SIZE - 1) / BLOCK_SIZE,
atime: meta.accessed().unwrap(), atime: meta.accessed().unwrap(),
mtime: meta.modified().unwrap(), mtime: meta.modified().unwrap(),
ctime: SystemTime::now(), //SystemTime::from(meta.ctime()), ctime: UNIX_EPOCH.add(Duration::new(meta.ctime() as u64, 0)),
crtime: SystemTime::now(), crtime: UNIX_EPOCH.add(Duration::new(meta.ctime() as u64, 0)),
kind: file_type, kind: file_type,
perm: meta.permissions().mode() as u16, perm: meta.permissions().mode() as u16,
nlink: meta.nlink() as u32, nlink: meta.nlink() as u32,
uid: meta.uid(), uid: meta.uid(),
gid: meta.gid(), gid: meta.gid(),
rdev: meta.rdev() as u32, rdev: 0,
blksize: meta.blksize() as u32, blksize: BLOCK_SIZE as u32,
flags: 0, flags: 0,
} }
} }