From 0afc1d761b23315e6172e7c9c5f88d7158840777 Mon Sep 17 00:00:00 2001 From: Michael Chus Date: Thu, 23 Apr 2026 22:58:07 +0300 Subject: [PATCH] Fix empty disk mount detection --- internal/disk/disk.go | 3 +-- internal/watcher/watcher.go | 15 ++++++++++++--- 2 files changed, 13 insertions(+), 5 deletions(-) diff --git a/internal/disk/disk.go b/internal/disk/disk.go index f22ccdc..6ca17d8 100644 --- a/internal/disk/disk.go +++ b/internal/disk/disk.go @@ -32,8 +32,7 @@ const idFile = "disk.id" func Probe(mountPath string) (DiskInfo, error) { info := DiskInfo{MountPath: mountPath, State: DiskAbsent} - entries, err := os.ReadDir(mountPath) - if err != nil || len(entries) == 0 { + if _, err := os.ReadDir(mountPath); err != nil { return info, nil } diff --git a/internal/watcher/watcher.go b/internal/watcher/watcher.go index 1344923..d690164 100644 --- a/internal/watcher/watcher.go +++ b/internal/watcher/watcher.go @@ -5,6 +5,7 @@ import ( "os" "path/filepath" "sort" + "strings" "sync" "time" @@ -122,14 +123,15 @@ func (w *Watcher) probe() { } func discoverDisks(root string) map[string]disk.DiskInfo { + disks := make(map[string]disk.DiskInfo) + entries, err := os.ReadDir(root) if err != nil { - return map[string]disk.DiskInfo{} + return disks } - disks := make(map[string]disk.DiskInfo) for _, entry := range entries { - if !entry.IsDir() { + if !entry.IsDir() || strings.HasPrefix(entry.Name(), ".") { continue } mountPath := filepath.Join(root, entry.Name()) @@ -139,5 +141,12 @@ func discoverDisks(root string) map[string]disk.DiskInfo { } disks[mountPath] = info } + + // If no child mountpoints were detected, the disk may be mounted directly at root. + if len(disks) == 0 { + if info, _ := disk.Probe(root); info.State != disk.DiskAbsent { + disks[root] = info + } + } return disks }