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 dcb640f02b, 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.
This commit is contained in:
Ludovic Courtès 2021-03-10 18:58:41 +01:00 committed by Ludovic Courtès
parent 9a6ea2f8dc
commit b665dd4a99
No known key found for this signature in database
GPG key ID: 090B11993D9AEBB5

View file

@ -920,14 +920,8 @@ (define (mount-nfs source mount-point type flags options)
;; 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)