--- busybox-1.7.2/init/init.c	2007-09-03 04:48:54.000000000 -0700
+++ busybox-1.7.2_new/init/init.c	2008-02-21 05:11:35.000000000 -0800
@@ -616,8 +616,9 @@
 	for (a = init_action_list; a; a = tmp) {
 		tmp = a->next;
 		if (a->action & RESTART) {
+			sync();
 			shutdown_system();
-
+			sync();
 			/* unblock all signals, blocked in shutdown_system() */
 			sigemptyset(&unblock_signals);
 			sigaddset(&unblock_signals, SIGHUP);
@@ -641,7 +642,8 @@
 			message(L_CONSOLE | L_LOG, "Cannot run '%s': %s",
 					a->command, strerror(errno));
 			sleep(2);
-			init_reboot(RB_HALT_SYSTEM);
+			sync();
+			init_reboot(RB_AUTOBOOT);
 			loop_forever();
 		}
 	}
