fix: 修改过滤逻辑,避免某些存储空间由于磁盘类型探测失败而被错误过滤的情况 (#568)

This commit is contained in:
ᴀᴍᴛᴏᴀᴇʀ
2025-12-11 11:35:36 +08:00
committed by GitHub
parent 128ca49225
commit d1b279ed7f

View File

@@ -16,8 +16,8 @@ pub use log_helper::{LogHelper, MAX_HISTORY_LOGS};
use parking_lot::RwLock;
use serde::{Deserialize, Serialize};
use sysinfo::{
CpuRefreshKind, DiskKind, DiskRefreshKind, Disks, MemoryRefreshKind, Pid, ProcessRefreshKind, ProcessesToUpdate,
System, get_current_pid,
CpuRefreshKind, DiskRefreshKind, Disks, MemoryRefreshKind, Pid, ProcessRefreshKind, ProcessesToUpdate, System,
get_current_pid,
};
use tokio::sync::mpsc;
use tokio::{pin, select};
@@ -248,7 +248,13 @@ impl WebSocketHandler {
};
let (available, total) = disks
.iter()
.filter(|d| !matches!(d.kind(), DiskKind::Unknown(_)))
.filter(|d| {
d.available_space() > 0
&& d.total_space() > 0
// 简单过滤一些虚拟文件系统
&& !["overlay", "tmpfs", "sysfs", "proc"]
.contains(&d.file_system().to_string_lossy().as_ref())
})
.unique_by(|d| d.name())
.fold((0, 0), |(mut available, mut total), d| {
available += d.available_space();
@@ -326,6 +332,6 @@ impl SysInfoExt for System {
impl SysInfoExt for Disks {
fn refresh_needed(&mut self, _self_pid: Pid) {
self.refresh_specifics(true, DiskRefreshKind::nothing().with_storage().with_kind());
self.refresh_specifics(true, DiskRefreshKind::nothing().with_storage());
}
}