From 9464e5a58da50f6cc3503020b38181150cfd01c4 Mon Sep 17 00:00:00 2001 From: Riley Andrews Date: Fri, 11 Jul 2014 15:05:23 -0700 Subject: [PATCH] Move unlink("/dev/.booting") until after filesystems are mounted. Move the unlink out of init.c and into init.rc, so that the file will be removed after all the filesystems with firmware are up. Change-Id: I7442df2042cc2788d0301f00e3c2fba7d6e0e1c7 --- init/init.c | 23 ++++++++--------------- rootdir/init.rc | 7 +++++++ 2 files changed, 15 insertions(+), 15 deletions(-) diff --git a/init/init.c b/init/init.c index 74c0308bb..bd1db7a58 100644 --- a/init/init.c +++ b/init/init.c @@ -817,27 +817,21 @@ static int property_service_init_action(int nargs, char **args) * that /data/local.prop cannot interfere with them. */ start_property_service(); + if (get_property_set_fd() < 0) { + ERROR("start_property_service() failed\n"); + exit(1); + } + return 0; } static int signal_init_action(int nargs, char **args) { signal_init(); - return 0; -} - -static int check_startup_action(int nargs, char **args) -{ - /* make sure we actually have all the pieces we need */ - if ((get_property_set_fd() < 0) || - (get_signal_fd() < 0)) { - ERROR("init startup failure\n"); + if (get_signal_fd() < 0) { + ERROR("signal_init() failed\n"); exit(1); } - - /* signal that we hit this point */ - unlink("/dev/.booting"); - return 0; } @@ -1098,7 +1092,6 @@ int main(int argc, char **argv) queue_builtin_action(mix_hwrng_into_linux_rng_action, "mix_hwrng_into_linux_rng"); queue_builtin_action(property_service_init_action, "property_service_init"); queue_builtin_action(signal_init_action, "signal_init"); - queue_builtin_action(check_startup_action, "check_startup"); /* Don't mount filesystems or start core system services if in charger mode. */ if (is_charger) { @@ -1107,7 +1100,7 @@ int main(int argc, char **argv) action_for_each_trigger("late-init", action_add_queue_tail); } - /* run all property triggers based on current state of the properties */ + /* run all property triggers based on current state of the properties */ queue_builtin_action(queue_property_triggers_action, "queue_property_triggers"); diff --git a/rootdir/init.rc b/rootdir/init.rc index e2bc5b352..2c967cc88 100644 --- a/rootdir/init.rc +++ b/rootdir/init.rc @@ -164,6 +164,10 @@ on property:sys.boot_from_charger_mode=1 on load_all_props_action load_all_props +# Indicate to fw loaders that the relevant mounts are up. +on firmware_mounts_complete + rm /dev/.booting + # Mount filesystems and start core system services. on late-init trigger early-fs @@ -179,6 +183,9 @@ on late-init trigger early-boot trigger boot + # Remove a file to wake up anything waiting for firmware + trigger firmware_mounts_complete + on post-fs # once everything is setup, no need to modify / mount rootfs rootfs / ro remount