This commit is contained in:
Akizon77
2026-03-10 17:56:03 +08:00
parent bb1e01459b
commit b1c863bacd

View File

@@ -171,11 +171,33 @@ func DiskList() ([]string, error) {
if err != nil { if err != nil {
return nil, err return nil, err
} }
// 同一物理设备只保留路径最短的根挂载点
deviceMap := make(map[string]disk.PartitionStat)
for _, part := range usage { for _, part := range usage {
if isPhysicalDisk(part) { if isPhysicalDisk(part) {
diskList = append(diskList, fmt.Sprintf("%s (%s)", part.Mountpoint, part.Fstype)) deviceID := part.Device
// ZFS去重: 基于 pool 名称
if strings.ToLower(part.Fstype) == "zfs" {
if idx := strings.Index(deviceID, "/"); idx != -1 {
deviceID = deviceID[:idx]
}
}
if existing, ok := deviceMap[deviceID]; ok {
// 优先保留路径更短的挂载点 (e.g., /volume1 优于 /volume1/@appdata/...)
if len(part.Mountpoint) < len(existing.Mountpoint) {
deviceMap[deviceID] = part
}
} else {
deviceMap[deviceID] = part
}
} }
} }
for _, part := range deviceMap {
diskList = append(diskList, fmt.Sprintf("%s (%s)", part.Mountpoint, part.Fstype))
}
} }
return diskList, nil return diskList, nil
} }