修复内核的clippy检查报错 (#637)

修复内核的clippy检查报错
---------

Co-authored-by: Samuel Dai <947309196@qq.com>
Co-authored-by: Donkey Kane <109840258+xiaolin2004@users.noreply.github.com>
Co-authored-by: themildwind <107623059+themildwind@users.noreply.github.com>
Co-authored-by: GnoCiYeH <heyicong@dragonos.org>
Co-authored-by: MemoryShore <105195940+MemoryShore@users.noreply.github.com>
Co-authored-by: 曾俊 <110876916+ZZJJWarth@users.noreply.github.com>
Co-authored-by: sun5etop <146408999+sun5etop@users.noreply.github.com>
Co-authored-by: hmt <114841534+1037827920@users.noreply.github.com>
Co-authored-by: laokengwt <143977175+laokengwt@users.noreply.github.com>
Co-authored-by: TTaq <103996388+TTaq@users.noreply.github.com>
Co-authored-by: Jomo <2512364506@qq.com>
Co-authored-by: Samuel Dai <samuka007@qq.com>
Co-authored-by: sspphh <112558065+sspphh@users.noreply.github.com>
This commit is contained in:
LoGin
2024-03-22 23:26:39 +08:00
committed by GitHub
parent 4695947e1b
commit b5b571e026
175 changed files with 1820 additions and 2155 deletions

View File

@ -1,3 +1,4 @@
use core::cmp::Ordering;
use core::intrinsics::unlikely;
use core::{any::Any, fmt::Debug};
use system_error::SystemError;
@ -177,11 +178,11 @@ impl LockedFATInode {
};
let inode: Arc<LockedFATInode> = Arc::new(LockedFATInode(SpinLock::new(FATInode {
parent: parent,
parent,
self_ref: Weak::default(),
children: BTreeMap::new(),
fs: Arc::downgrade(&fs),
inode_type: inode_type,
inode_type,
metadata: Metadata {
dev_id: 0,
inode_id: generate_inode_id(),
@ -195,7 +196,7 @@ impl LockedFATInode {
atime: TimeSpec::default(),
mtime: TimeSpec::default(),
ctime: TimeSpec::default(),
file_type: file_type,
file_type,
mode: ModeType::from_bits_truncate(0o777),
nlinks: 1,
uid: 0,
@ -330,11 +331,11 @@ impl FATFileSystem {
})));
let result: Arc<FATFileSystem> = Arc::new(FATFileSystem {
partition: partition,
partition,
bpb,
first_data_sector,
fs_info: Arc::new(LockedFATFsInfo::new(fs_info)),
root_inode: root_inode,
root_inode,
});
// 对root inode加锁并继续完成初始化工作
@ -384,11 +385,10 @@ impl FATFileSystem {
// FAT表项在逻辑块内的字节偏移量
let blk_offset = self.get_in_block_offset(fat_bytes_offset);
let mut v = Vec::<u8>::new();
v.resize(self.bpb.bytes_per_sector as usize, 0);
let mut v: Vec<u8> = vec![0; self.bpb.bytes_per_sector as usize];
self.partition
.disk()
.read_at(fat_ent_lba as usize, 1 * self.lba_per_sector(), &mut v)?;
.read_at(fat_ent_lba as usize, self.lba_per_sector(), &mut v)?;
let mut cursor = VecCursor::new(v);
cursor.seek(SeekFrom::SeekSet(blk_offset as i64))?;
@ -436,7 +436,7 @@ impl FATFileSystem {
let entry = cursor.read_u32()? & 0x0fffffff;
match entry {
_n if (current_cluster >= 0x0ffffff7 && current_cluster <= 0x0fffffff) => {
_n if (0x0ffffff7..=0x0fffffff).contains(&current_cluster) => {
// 当前簇号不是一个能被获得的簇(可能是文件系统出错了)
kerror!("FAT32 get fat entry: current cluster number [{}] is not an allocatable cluster number.", current_cluster);
FATEntry::Bad
@ -478,11 +478,10 @@ impl FATFileSystem {
// FAT表项在逻辑块内的字节偏移量
let blk_offset = self.get_in_block_offset(fat_bytes_offset);
let mut v = Vec::<u8>::new();
v.resize(self.bpb.bytes_per_sector as usize, 0);
let mut v: Vec<u8> = vec![0; self.bpb.bytes_per_sector as usize];
self.partition
.disk()
.read_at(fat_ent_lba, 1 * self.lba_per_sector(), &mut v)?;
.read_at(fat_ent_lba, self.lba_per_sector(), &mut v)?;
let mut cursor = VecCursor::new(v);
cursor.seek(SeekFrom::SeekSet(blk_offset as i64))?;
@ -565,10 +564,7 @@ impl FATFileSystem {
let end_cluster: Cluster = self.max_cluster_number();
let start_cluster: Cluster = match self.bpb.fat_type {
FATType::FAT32(_) => {
let next_free: u64 = match self.fs_info.0.lock().next_free() {
Some(x) => x,
None => 0xffffffff,
};
let next_free: u64 = self.fs_info.0.lock().next_free().unwrap_or(0xffffffff);
if next_free < end_cluster.cluster_num {
Cluster::new(next_free)
} else {
@ -771,7 +767,7 @@ impl FATFileSystem {
/// @brief 获取从start_cluster开始的簇链中第n个簇的信息。请注意下标从0开始
#[inline]
pub fn get_cluster_by_relative(&self, start_cluster: Cluster, n: usize) -> Option<Cluster> {
return self.cluster_iter(start_cluster).skip(n).next();
return self.cluster_iter(start_cluster).nth(n);
}
/// @brief 获取整个簇链的最后一个簇
@ -947,8 +943,7 @@ impl FATFileSystem {
// 由于FAT12的FAT表不大于6K因此直接读取6K
let num_lba = (6 * 1024) / LBA_SIZE;
let mut v: Vec<u8> = Vec::new();
v.resize(num_lba * LBA_SIZE, 0);
let mut v: Vec<u8> = vec![0; num_lba * LBA_SIZE];
self.partition.disk().read_at(lba, num_lba, &mut v)?;
let mut cursor: VecCursor = VecCursor::new(v);
@ -962,7 +957,7 @@ impl FATFileSystem {
packed_val & 0x0fff
};
if val == 0 {
return Ok(Cluster::new(cluster as u64));
return Ok(Cluster::new(cluster));
}
cluster += 1;
@ -993,8 +988,7 @@ impl FATFileSystem {
let lba = self.get_lba_from_offset(self.bytes_to_sector(part_bytes_offset));
let mut v: Vec<u8> = Vec::new();
v.resize(self.lba_per_sector() * LBA_SIZE, 0);
let mut v: Vec<u8> = vec![0; self.lba_per_sector() * LBA_SIZE];
self.partition
.disk()
.read_at(lba, self.lba_per_sector(), &mut v)?;
@ -1025,8 +1019,7 @@ impl FATFileSystem {
let lba = self.get_lba_from_offset(self.bytes_to_sector(part_bytes_offset));
let mut v: Vec<u8> = Vec::new();
v.resize(self.lba_per_sector() * LBA_SIZE, 0);
let mut v: Vec<u8> = vec![0; self.lba_per_sector() * LBA_SIZE];
self.partition
.disk()
.read_at(lba, self.lba_per_sector(), &mut v)?;
@ -1074,8 +1067,7 @@ impl FATFileSystem {
let lba = self.get_lba_from_offset(self.bytes_to_sector(fat_part_bytes_offset));
let mut v: Vec<u8> = Vec::new();
v.resize(LBA_SIZE, 0);
let mut v: Vec<u8> = vec![0; LBA_SIZE];
self.partition.disk().read_at(lba, 1, &mut v)?;
let mut cursor: VecCursor = VecCursor::new(v);
@ -1107,8 +1099,7 @@ impl FATFileSystem {
let lba = self.get_lba_from_offset(self.bytes_to_sector(fat_part_bytes_offset));
let mut v: Vec<u8> = Vec::new();
v.resize(LBA_SIZE, 0);
let mut v: Vec<u8> = vec![0; LBA_SIZE];
self.partition.disk().read_at(lba, 1, &mut v)?;
let mut cursor: VecCursor = VecCursor::new(v);
@ -1134,8 +1125,7 @@ impl FATFileSystem {
let lba = self.get_lba_from_offset(self.bytes_to_sector(f_offset));
// kdebug!("set entry, lba={lba}, in_block_offset={in_block_offset}");
let mut v: Vec<u8> = Vec::new();
v.resize(LBA_SIZE, 0);
let mut v: Vec<u8> = vec![0; LBA_SIZE];
self.partition.disk().read_at(lba, 1, &mut v)?;
let mut cursor: VecCursor = VecCursor::new(v);
@ -1222,8 +1212,7 @@ impl FATFsInfo {
in_disk_fs_info_offset: u64,
bytes_per_sec: usize,
) -> Result<Self, SystemError> {
let mut v = Vec::<u8>::new();
v.resize(bytes_per_sec, 0);
let mut v = vec![0; bytes_per_sec];
// 计算fs_info扇区在磁盘上的字节偏移量从磁盘读取数据
partition
@ -1231,9 +1220,10 @@ impl FATFsInfo {
.read_at(in_disk_fs_info_offset as usize / LBA_SIZE, 1, &mut v)?;
let mut cursor = VecCursor::new(v);
let mut fsinfo = FATFsInfo::default();
fsinfo.lead_sig = cursor.read_u32()?;
let mut fsinfo = FATFsInfo {
lead_sig: cursor.read_u32()?,
..Default::default()
};
cursor.seek(SeekFrom::SeekCurrent(480))?;
fsinfo.struc_sig = cursor.read_u32()?;
fsinfo.free_count = cursor.read_u32()?;
@ -1318,8 +1308,7 @@ impl FATFsInfo {
let lba = off as usize / LBA_SIZE;
let mut v: Vec<u8> = Vec::new();
v.resize(LBA_SIZE, 0);
let mut v: Vec<u8> = vec![0; LBA_SIZE];
partition.disk().read_at(lba, 1, &mut v)?;
let mut cursor: VecCursor = VecCursor::new(v);
@ -1347,8 +1336,7 @@ impl FATFsInfo {
let lba = off as usize / LBA_SIZE;
let mut v: Vec<u8> = Vec::new();
v.resize(LBA_SIZE, 0);
let mut v: Vec<u8> = vec![0; LBA_SIZE];
partition.disk().read_at(lba, 1, &mut v)?;
let mut cursor: VecCursor = VecCursor::new(v);
cursor.seek(SeekFrom::SeekSet(in_block_offset as i64))?;
@ -1473,25 +1461,29 @@ impl IndexNode for LockedFATInode {
match &mut guard.inode_type {
FATDirEntry::File(file) | FATDirEntry::VolId(file) => {
// 如果新的长度和旧的长度相同,那么就直接返回
if len == old_size {
return Ok(());
} else if len > old_size {
// 如果新的长度比旧的长度大,那么就在文件末尾添加空白
let mut buf: Vec<u8> = Vec::new();
let mut remain_size = len - old_size;
let buf_size = remain_size;
// let buf_size = core::cmp::min(remain_size, 512 * 1024);
buf.resize(buf_size, 0);
let mut offset = old_size;
while remain_size > 0 {
let write_size = core::cmp::min(remain_size, buf_size);
file.write(fs, &buf[0..write_size], offset as u64)?;
remain_size -= write_size;
offset += write_size;
match len.cmp(&old_size) {
Ordering::Equal => {
return Ok(());
}
Ordering::Greater => {
// 如果新的长度比旧的长度大,那么就在文件末尾添加空白
let mut buf: Vec<u8> = Vec::new();
let mut remain_size = len - old_size;
let buf_size = remain_size;
// let buf_size = core::cmp::min(remain_size, 512 * 1024);
buf.resize(buf_size, 0);
let mut offset = old_size;
while remain_size > 0 {
let write_size = core::cmp::min(remain_size, buf_size);
file.write(fs, &buf[0..write_size], offset as u64)?;
remain_size -= write_size;
offset += write_size;
}
}
Ordering::Less => {
file.truncate(fs, len as u64)?;
}
} else {
file.truncate(fs, len as u64)?;
}
guard.update_metadata();
return Ok(());
@ -1533,7 +1525,7 @@ impl IndexNode for LockedFATInode {
let name: String = ent.name();
// kdebug!("name={name}");
if guard.children.contains_key(&name.to_uppercase()) == false
if !guard.children.contains_key(&name.to_uppercase())
&& name != "."
&& name != ".."
{
@ -1581,7 +1573,7 @@ impl IndexNode for LockedFATInode {
let nod = guard.children.remove(&name.to_uppercase());
// 若删除缓存中为管道的文件,则不需要再到磁盘删除
if let Some(_) = nod {
if nod.is_some() {
let file_type = target_guard.metadata.file_type;
if file_type == FileType::Pipe {
return Ok(());
@ -1631,16 +1623,16 @@ impl IndexNode for LockedFATInode {
// 再从磁盘删除
let r: Result<(), SystemError> =
dir.remove(guard.fs.upgrade().unwrap().clone(), name, true);
if r.is_ok() {
return r;
} else {
let r = r.unwrap_err();
if r == SystemError::ENOTEMPTY {
// 如果要删除的是目录,且不为空,则删除动作未发生,重新加入缓存
guard.children.insert(name.to_uppercase(), target.clone());
drop(target_guard);
match r {
Ok(_) => return r,
Err(r) => {
if r == SystemError::ENOTEMPTY {
// 如果要删除的是目录,且不为空,则删除动作未发生,重新加入缓存
guard.children.insert(name.to_uppercase(), target.clone());
drop(target_guard);
}
return Err(r);
}
return Err(r);
}
}
@ -1771,7 +1763,7 @@ impl IndexNode for LockedFATInode {
// 判断需要创建的类型
if unlikely(mode.contains(ModeType::S_IFREG)) {
// 普通文件
return Ok(self.create(filename, FileType::File, mode)?);
return self.create(filename, FileType::File, mode);
}
let nod = LockedFATInode::new(