accounts: Use 'fsync' instead of 'fdatasync'.

* gnu/build/accounts.scm (catch-ENOSYS): Remove.
(database-writer): Use 'fsync' instead of 'fdatasync'.
This commit is contained in:
Ludovic Courtès 2019-06-27 10:39:49 +02:00
parent b09e4960be
commit c25b44d640
No known key found for this signature in database
GPG Key ID: 090B11993D9AEBB5

View File

@ -19,7 +19,6 @@
(define-module (gnu build accounts)
#:use-module (guix records)
#:use-module (guix combinators)
#:use-module ((guix build syscalls) #:select (fdatasync))
#:use-module (gnu system accounts)
#:use-module (srfi srfi-1)
#:use-module (srfi srfi-11)
@ -231,14 +230,6 @@ each field."
;; grab this lock with 'with-file-lock' when they access the databases.
"/etc/.pwd.lock")
(define-syntax-rule (catch-ENOSYS exp)
(catch 'system-error
(lambda () exp)
(lambda args
(if (= ENOSYS (system-error-errno args))
#f
(apply throw args)))))
(define (database-writer file mode entry->string)
(lambda* (entries #:optional (file-or-port file))
"Write ENTRIES to FILE-OR-PORT. When FILE-OR-PORT is a file name, write
@ -259,10 +250,7 @@ to it atomically and set the appropriate permissions."
(chmod port mode)
(write-entries port)
;; XXX: When booting with the statically-linked Guile,
;; 'fdatasync' is unavailable.
(catch-ENOSYS (fdatasync port))
(fsync port)
(close-port port)
(rename-file template file-or-port))
(lambda ()