Merge pull request #341 from troglobit/reboot-delay

Add support for optional reboot delay

Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
This commit is contained in:
Joachim Wiberg authored and GitHub committed 2023-01-09 06:25:45 +01:00
commit 988cdf9878
5 files changed
+42

No files matched your search

+5
View File
@@ -764,6 +764,11 @@ static int parse_static(char *line, int is_rcsd)
return 0;
}
if (MATCH_CMD(line, "reboot-delay ", x)) {
syncsec = strtonum(strip_line(x), 0, 60, NULL);
return 0;
}
/*
* Periodic check and instability index leveler, seconds
*/
+1
View File
@@ -70,6 +70,7 @@ int rescue = 0; /* rescue mode from kernel cmdline */
int single = 0; /* single user mode from kernel cmdline */
int bootstrap = 1; /* set while bootrapping (for TTYs) */
int kerndebug = 0; /* set if /proc/sys/kernel/printk > 7 */
int syncsec = 0; /* reboot delay */
char *finit_conf= NULL;
char *finit_rcsd= NULL;
char *fstab = NULL;
+1
View File
@@ -118,6 +118,7 @@ extern int rescue;
extern int single;
extern int bootstrap;
extern int kerndebug;
extern int syncsec;
extern char *fstab;
extern char *sdown;
extern char *network;
+14
View File
@@ -382,6 +382,20 @@ void do_shutdown(shutop_t op)
print(0, "Calling hook/svc/down scripts ...");
plugin_run_hooks(HOOK_SYS_DN);
/*
* Optional reboot-delay, needed on systems running ubifs, jffs,
* or similar. From fileutils-4.0, sync(8); "On Linux, sync is
* only guaranteed to schedule the dirty blocks for writing; it
* can actually take a short time before all the blocks are
* finally written." -- https://linux.die.net/man/8/sync
*/
sync();
if (syncsec > 0) {
print(-1, "Reboot delay, waiting for filesystem sync, %d sec", syncsec);
do_sleep(syncsec);
print(0, NULL);
}
/* Reboot via watchdog or kernel, or shutdown? */
if (op == SHUT_REBOOT) {
print(0, "Rebooting ...");