Subject: "statfs" test in tests/syscall.scm fails with BTRFS file systems.

From: Maxime Devos <[email-masked]>
Date: Thu, 25 Mar 2021 09:49:08 +0100

Hi Guix,

Version:
guix (GNU Guix) 1155a88308df7649fe74bd5bb8279a4d103ce386

The following test fails:

(start snip)
test-name: statfs
location: $HOME/guix/git/guix/tests/syscalls.scm:123
source:
+ (test-assert
+   "statfs"
+   (let ((fs (statfs "/")))
+     (and (file-system? fs)
+          (> (file-system-block-size fs) 0)
+          (>= (file-system-blocks-available fs) 0)
+          (>= (file-system-blocks-free fs)
+              (file-system-blocks-available fs)))))
actual-value: #f
result: FAIL
(end snip)

Evaluating (statfs "/") from a REPL gives:

scheme@(guix-user)> ((@ (guix build syscalls) statfs) "/")
$2 = #<<file-system> type: 2435016766 block-size: 4096 blocks: 244189696 blocks-free: 178549974 blocks-available: 178571318 files: 0 free-
files: 0 identifier: (1111009624 2088757363) name-length: 255 fragment-size: 4096 mount-flags: 1056 spare: (0 0 0 0)>

It seems the following does not hold on my system:
+          (>= (file-system-blocks-free fs)
+              (file-system-blocks-available fs))

Greetings, Maxime