machine-id-setup: explicitly fsync() the machine ID after writing

As discussed here:

https://github.com/systemd/systemd/issues/2619#issuecomment-184670042

Explicitly syncing /etc/machine-id after writing it, is probably a good idea,
since it has a strong "commit" character and is generally a one-time thing.

Fixes #2619.
This commit is contained in:
Lennart Poettering 2016-04-20 17:49:31 +02:00
parent 20b1644140
commit f53d86c929

View file

@ -101,14 +101,23 @@ static int read_machine_id(int fd, char id[34]) {
return 0;
}
static int write_machine_id(int fd, char id[34]) {
static int write_machine_id(int fd, const char id[34]) {
int r;
assert(fd >= 0);
assert(id);
if (lseek(fd, 0, SEEK_SET) < 0)
return -errno;
return loop_write(fd, id, 33, false);
r = loop_write(fd, id, 33, false);
if (r < 0)
return r;
if (fsync(fd) < 0)
return -errno;
return 0;
}
static int generate_machine_id(char id[34], const char *root) {