aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLudovic Courtès <ludovic.courtes@inria.fr>2021-03-10 18:58:41 +0100
committerLudovic Courtès <ludo@gnu.org>2021-03-10 23:21:33 +0100
commitb665dd4a9902b5722b9e06fd89c203e2221b19e0 (patch)
treed8f5fc6ac22059c9f4a97f3bdecac06763618584
parent9a6ea2f8dc5222018768861a2328e7683e1973c9 (diff)
downloadguix-b665dd4a9902b5722b9e06fd89c203e2221b19e0.tar
guix-b665dd4a9902b5722b9e06fd89c203e2221b19e0.tar.gz
file-systems: 'mount-file-system' preserves the right mount flags.
Fixes <https://bugs.gnu.org/47007>. Reported by Jelle Licht <jlicht@fsfe.org>. Since commit dcb640f02b1f9590c3bd4301a22bf31bd60c56d4, we could end up applying the wrong mount flags because the (find ...) expression could pick the "wrong" mount point in the presence of bind mounts. * gnu/build/file-systems.scm (mount-file-system): Use 'statfs' to compute FLAGS whe FS is a bind mount.
-rw-r--r--gnu/build/file-systems.scm10
1 files changed, 2 insertions, 8 deletions
diff --git a/gnu/build/file-systems.scm b/gnu/build/file-systems.scm
index aca4aad848..304805db62 100644
--- a/gnu/build/file-systems.scm
+++ b/gnu/build/file-systems.scm
@@ -920,14 +920,8 @@ corresponds to the symbols listed in FLAGS."
;; MS_REMOUNT call below fails with EPERM.
;; See <https://bugs.gnu.org/46292>
(if (memq 'bind-mount (file-system-flags fs))
- (or (and=> (find (let ((devno (stat:dev
- (lstat source))))
- (lambda (mount)
- (= (mount-device-number mount)
- devno)))
- (mounts))
- mount-flags)
- 0)
+ (statfs-flags->mount-flags
+ (file-system-mount-flags (statfs source)))
0)))
(options (file-system-options fs)))
(when (file-system-check? fs)