From 111ae00b1cc7d077a40cff4be8e2b14c0031d964 Mon Sep 17 00:00:00 2001 From: Daniel <845765@qq.com> Date: Thu, 15 Jan 2026 20:59:19 +0800 Subject: [PATCH] :art: Warn users about potential performance issues when running on non-SSD drives https://github.com/siyuan-note/siyuan/issues/16835 Signed-off-by: Daniel <845765@qq.com> --- kernel/util/runtime.go | 40 ++++++++++++++++++++++++++-------------- 1 file changed, 26 insertions(+), 14 deletions(-) diff --git a/kernel/util/runtime.go b/kernel/util/runtime.go index b4d3a607b..54939259f 100644 --- a/kernel/util/runtime.go +++ b/kernel/util/runtime.go @@ -107,26 +107,32 @@ func logBootInfo() { logging.LogInfof("disabled features [%s]", strings.Join(DisabledFeatures, ", ")) } - if gulu.OS.IsWindows() || gulu.OS.IsLinux() { - go func() { - if ghw.DriveTypeSSD.String() != getWorkspaceDriveType() { - logging.LogWarnf("workspace dir [%s] is not in SSD drive, performance may be affected", WorkspaceDir) - WaitForUILoaded() - time.Sleep(3 * time.Second) - PushErrMsg(Langs[Lang][278], 15000) - } - }() - } + go func() { + if ghw.DriveTypeSSD.String() != getWorkspaceDriveType() { + logging.LogWarnf("workspace dir [%s] is not in SSD drive, performance may be affected", WorkspaceDir) + WaitForUILoaded() + time.Sleep(3 * time.Second) + PushErrMsg(Langs[Lang][278], 15000) + } + }() } func getWorkspaceDriveType() string { - block, err := ghw.Block() - if err != nil { - logging.LogWarnf("get block storage info failed: %s", err) - return "" + if gulu.OS.IsDarwin() { + return ghw.DriveTypeSSD.String() + } + + if ContainerAndroid == Container || ContainerIOS == Container || ContainerHarmony == Container { + return ghw.DriveTypeSSD.String() } if gulu.OS.IsWindows() { + block, err := ghw.Block() + if err != nil { + logging.LogWarnf("get block storage info failed: %s", err) + return "" + } + part := filepath.VolumeName(WorkspaceDir) for _, disk := range block.Disks { for _, partition := range disk.Partitions { @@ -136,6 +142,12 @@ func getWorkspaceDriveType() string { } } } else if gulu.OS.IsLinux() { + block, err := ghw.Block() + if err != nil { + logging.LogWarnf("get block storage info failed: %s", err) + return "" + } + for _, disk := range block.Disks { for _, partition := range disk.Partitions { if strings.HasPrefix(WorkspaceDir, partition.MountPoint) {