mirror of
https://github.com/DragonOS-Community/DragonOS.git
synced 2025-06-21 00:06:32 +00:00
修复内核的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:
@ -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(¤t_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(
|
||||
|
Reference in New Issue
Block a user