From 540fca5c9e1947632f9adf0fea27ce0947eb8b41 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Fabian=20Gr=C3=BCnbichler?= Date: Thu, 30 Dec 2021 14:35:24 +0100 Subject: [PATCH] tree-wide: cleanup manual map/flatten MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit found with clippy, best viewed with `-w` ;) Signed-off-by: Fabian Grünbichler --- pbs-datastore/src/datastore.rs | 25 +++++----- pbs-fuse-loop/src/fuse_loop.rs | 12 ++--- .../src/proxmox_restore_daemon/api.rs | 48 +++++++++---------- src/api2/backup/environment.rs | 5 +- src/api2/node/syslog.rs | 6 +-- src/tools/disks/mod.rs | 15 ++---- 6 files changed, 44 insertions(+), 67 deletions(-) diff --git a/pbs-datastore/src/datastore.rs b/pbs-datastore/src/datastore.rs index fb262fdc..37ef753e 100644 --- a/pbs-datastore/src/datastore.rs +++ b/pbs-datastore/src/datastore.rs @@ -232,21 +232,18 @@ impl DataStore { wanted_files.insert(CLIENT_LOG_BLOB_NAME.to_string()); manifest.files().iter().for_each(|item| { wanted_files.insert(item.filename.clone()); }); - for item in proxmox_sys::fs::read_subdir(libc::AT_FDCWD, &full_path)? { - if let Ok(item) = item { - if let Some(file_type) = item.file_type() { - if file_type != nix::dir::Type::File { continue; } - } - let file_name = item.file_name().to_bytes(); - if file_name == b"." || file_name == b".." { continue; }; - - if let Ok(name) = std::str::from_utf8(file_name) { - if wanted_files.contains(name) { continue; } - } - println!("remove unused file {:?}", item.file_name()); - let dirfd = item.parent_fd(); - let _res = unsafe { libc::unlinkat(dirfd, item.file_name().as_ptr(), 0) }; + for item in proxmox_sys::fs::read_subdir(libc::AT_FDCWD, &full_path)?.flatten() { + if let Some(file_type) = item.file_type() { + if file_type != nix::dir::Type::File { continue; } + } + let file_name = item.file_name().to_bytes(); + if file_name == b"." || file_name == b".." { continue; }; + if let Ok(name) = std::str::from_utf8(file_name) { + if wanted_files.contains(name) { continue; } } + println!("remove unused file {:?}", item.file_name()); + let dirfd = item.parent_fd(); + let _res = unsafe { libc::unlinkat(dirfd, item.file_name().as_ptr(), 0) }; } Ok(()) diff --git a/pbs-fuse-loop/src/fuse_loop.rs b/pbs-fuse-loop/src/fuse_loop.rs index 6a9e8bff..a763c308 100644 --- a/pbs-fuse-loop/src/fuse_loop.rs +++ b/pbs-fuse-loop/src/fuse_loop.rs @@ -365,13 +365,11 @@ fn unmap_from_backing(backing_file: &Path, loopdev: Option<&str>) -> Result<(), pub fn find_all_mappings() -> Result)>, Error> { // get map of all /dev/loop mappings belonging to us let mut loopmap = HashMap::new(); - for ent in proxmox_sys::fs::scan_subdir(libc::AT_FDCWD, Path::new("/dev/"), &LOOPDEV_REGEX)? { - if let Ok(ent) = ent { - let loopdev = format!("/dev/{}", ent.file_name().to_string_lossy()); - if let Ok(file) = get_backing_file(&loopdev) { - // insert filename only, strip RUN_DIR/ - loopmap.insert(file[RUN_DIR.len() + 1..].to_owned(), loopdev); - } + for ent in proxmox_sys::fs::scan_subdir(libc::AT_FDCWD, Path::new("/dev/"), &LOOPDEV_REGEX)?.flatten() { + let loopdev = format!("/dev/{}", ent.file_name().to_string_lossy()); + if let Ok(file) = get_backing_file(&loopdev) { + // insert filename only, strip RUN_DIR/ + loopmap.insert(file[RUN_DIR.len() + 1..].to_owned(), loopdev); } } diff --git a/proxmox-restore-daemon/src/proxmox_restore_daemon/api.rs b/proxmox-restore-daemon/src/proxmox_restore_daemon/api.rs index 081e4576..4c755210 100644 --- a/proxmox-restore-daemon/src/proxmox_restore_daemon/api.rs +++ b/proxmox-restore-daemon/src/proxmox_restore_daemon/api.rs @@ -158,34 +158,30 @@ fn list( } DirEntryAttribute::Directory { .. } => { // list on directory, return all contained files/dirs - for f in read_subdir(libc::AT_FDCWD, &vm_path)? { - if let Ok(f) = f { - let name = f.file_name().to_bytes(); - let path = &Path::new(OsStr::from_bytes(name)); - if path.components().count() == 1 { - // ignore '.' and '..' - match path.components().next().unwrap() { - std::path::Component::CurDir - | std::path::Component::ParentDir => continue, - _ => {} - } - } - - let mut full_vm_path = PathBuf::new(); - full_vm_path.push(&vm_path); - full_vm_path.push(path); - let mut full_path = PathBuf::new(); - full_path.push(param_path_buf); - full_path.push(path); - - let entry = get_dir_entry(&full_vm_path); - if let Ok(entry) = entry { - res.push(ArchiveEntry::new( - full_path.as_os_str().as_bytes(), - Some(&entry), - )); + for f in read_subdir(libc::AT_FDCWD, &vm_path)?.flatten() { + let name = f.file_name().to_bytes(); + let path = &Path::new(OsStr::from_bytes(name)); + if path.components().count() == 1 { + // ignore '.' and '..' + match path.components().next().unwrap() { + std::path::Component::CurDir + | std::path::Component::ParentDir => continue, + _ => {} } } + let mut full_vm_path = PathBuf::new(); + full_vm_path.push(&vm_path); + full_vm_path.push(path); + let mut full_path = PathBuf::new(); + full_path.push(param_path_buf); + full_path.push(path); + let entry = get_dir_entry(&full_vm_path); + if let Ok(entry) = entry { + res.push(ArchiveEntry::new( + full_path.as_os_str().as_bytes(), + Some(&entry), + )); + } } } _ => unreachable!(), diff --git a/src/api2/backup/environment.rs b/src/api2/backup/environment.rs index fc1b30e8..3e23840f 100644 --- a/src/api2/backup/environment.rs +++ b/src/api2/backup/environment.rs @@ -246,10 +246,7 @@ impl BackupEnvironment { pub fn lookup_chunk(&self, digest: &[u8; 32]) -> Option { let state = self.state.lock().unwrap(); - match state.known_chunks.get(digest) { - Some(len) => Some(*len), - None => None, - } + state.known_chunks.get(digest).map(|len| *len) } /// Store the writer with an unique ID diff --git a/src/api2/node/syslog.rs b/src/api2/node/syslog.rs index 08dc5edb..443a8b75 100644 --- a/src/api2/node/syslog.rs +++ b/src/api2/node/syslog.rs @@ -134,11 +134,7 @@ fn get_syslog( mut rpcenv: &mut dyn RpcEnvironment, ) -> Result { - let service = if let Some(service) = param["service"].as_str() { - Some(crate::api2::node::services::real_service_name(service)) - } else { - None - }; + let service = param["service"].as_str().map(|service| crate::api2::node::services::real_service_name(service)); let (count, lines) = dump_journal( param["start"].as_u64(), diff --git a/src/tools/disks/mod.rs b/src/tools/disks/mod.rs index 867aa624..2f7d8ce6 100644 --- a/src/tools/disks/mod.rs +++ b/src/tools/disks/mod.rs @@ -982,21 +982,14 @@ pub fn create_file_system(disk: &Disk, fs_type: FileSystemType) -> Result<(), Er /// Block device name completion helper pub fn complete_disk_name(_arg: &str, _param: &HashMap) -> Vec { - let mut list = Vec::new(); - let dir = match proxmox_sys::fs::scan_subdir(libc::AT_FDCWD, "/sys/block", &BLOCKDEVICE_NAME_REGEX) { Ok(dir) => dir, - Err(_) => return list, + Err(_) => return vec![], }; - for item in dir { - if let Ok(item) = item { - let name = item.file_name().to_str().unwrap().to_string(); - list.push(name); - } - } - - list + dir.flatten().map(|item| { + item.file_name().to_str().unwrap().to_string() + }).collect() } /// Read the FS UUID (parse blkid output) -- 2.39.5