From 099a390f2ffe7b765ee4a4ed8cfbc01c72657411 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=8E=E9=80=9A=E6=B4=B2?= Date: Wed, 21 Aug 2024 00:23:24 +0800 Subject: [PATCH] Disk (Linux): fix hang in WSL when custom format is used --- src/detection/disk/disk_linux.c | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/src/detection/disk/disk_linux.c b/src/detection/disk/disk_linux.c index 31b90adca..3836f6eb8 100644 --- a/src/detection/disk/disk_linux.c +++ b/src/detection/disk/disk_linux.c @@ -72,7 +72,7 @@ static bool isPhysicalDevice(const struct mntent* device) ) return false; // https://source.android.com/docs/core/ota/apex?hl=zh-cn - if(ffStrStartsWith(device->mnt_dir, "/apex/")) + if(ffStrStartsWith(device->mnt_dir, "/apex/")) return false; #endif // __ANDROID__ @@ -240,8 +240,16 @@ static void detectStats(FFDisk* disk) disk->bytesAvailable = fs.f_bavail * fs.f_frsize; disk->bytesUsed = 0; // To be filled in ./disk.c - disk->filesTotal = (uint32_t) fs.f_files; - disk->filesUsed = (uint32_t) (disk->filesTotal - fs.f_ffree); + if (fs.f_files >= fs.f_ffree) + { + disk->filesTotal = (uint32_t) fs.f_files; + disk->filesUsed = (uint32_t) (disk->filesTotal - fs.f_ffree); + } + else + { + // Windows filesystem in WSL + disk->filesTotal = disk->filesUsed = 0; + } if(fs.f_flag & ST_RDONLY) disk->type |= FF_DISK_VOLUME_TYPE_READONLY_BIT;