diff --git a/src/systemctl/systemctl.c b/src/systemctl/systemctl.c index 8481a9b20..207a5e78d 100644 --- a/src/systemctl/systemctl.c +++ b/src/systemctl/systemctl.c @@ -6948,8 +6948,13 @@ done: static int halt_now(enum action a) { -/* Make sure C-A-D is handled by the kernel from this - * point on... */ + /* The kernel will automaticall flush ATA disks and suchlike + * on reboot(), but the file systems need to be synce'd + * explicitly in advance. */ + sync(); + + /* Make sure C-A-D is handled by the kernel from this point + * on... */ reboot(RB_ENABLE_CAD); switch (a) {