android_system_core/libcutils
Keun-young Park 8d01f63f50 remove emergency shutdown and improve init's reboot logic
- Emergency shutdown just marks the fs as clean while leaving fs
  in the middle of any state. Do not use it anymore.

- Changed android_reboot to set sys.powerctl property so that
  all shutdown can be done by init.

- Normal reboot sequence changed to
    1. Terminate processes (give time to clean up). And wait for
      completion based on ro.build.shutdown_timeout.
        Default value (when not set) is changed to 3 secs. If it is 0, do not
        terminate processes.
    2. Kill all remaining services except critical services for shutdown.
    3. Shutdown vold using "vdc volume shutdown"
    4. umount all emulated partitions. If it fails, just detach.
       Wait in step 5 can handle it.
    5. Try umounting R/W block devices for up to max timeout.
      If it fails, try DETACH.
      If umount fails to complete before reboot, it can be detected when
      system reboots.
    6. Reboot

- Log shutdown time and umount stat to log so that it can be collected after reboot

- To umount emulated partitions, all pending writes inside kernel should
  be completed.
- To umount /data partition, all emulated partitions on top of /data should
  be umounted and all pending writes should be completed.
- umount retry will only wait up to timeout. If there are too many pending
  writes, reboot will discard them and e2fsck after reboot will fix any file system
  issues.

bug: 36004738
bug: 32246772

Test: many reboots combining reboot from UI and adb reboot. Check last_kmsg and
      fs_stat after reboot.

Change-Id: I6e74d6c68a21e76e08cc0438573d1586fd9aaee2
2017-03-22 11:23:31 -07:00
..
arch-arm Switch arch-arm/memset32.S to unified syntax. 2015-05-11 22:22:13 -07:00
arch-arm64 Add android_memset16/android_memset32 for aarch64. 2014-06-23 19:28:33 -07:00
arch-mips android_memset.c: Use sanitized shifts 2015-08-27 14:32:17 -07:00
arch-x86 Clean up memset[16,32] routines: unify files names, remove redundant wrapper 2014-09-17 18:11:18 +04:00
arch-x86_64 Clean up memset[16,32] routines: unify files names, remove redundant wrapper 2014-09-17 18:11:18 +04:00
include/cutils remove emergency shutdown and improve init's reboot logic 2017-03-22 11:23:31 -07:00
include_vndk/cutils Revert "Revert "Exporting C headers from system/core"" 2017-01-25 12:50:29 -08:00
tests libcutils: build tests with -Wall -Wextra -Werror 2017-02-22 10:58:38 -08:00
Android.bp Enable more modules on linux_bionic builds 2017-03-15 15:44:00 -07:00
android_get_control_env.h libcutils: move cutils/files.h to cutils/android_get_control_file.h 2016-11-16 15:56:56 -08:00
android_get_control_file.cpp libcutils: sdk(mac) build error 2016-11-17 08:05:16 -08:00
android_reboot.c remove emergency shutdown and improve init's reboot logic 2017-03-22 11:23:31 -07:00
ashmem-dev.c liblog: use log/log.h when utilizing ALOG macros 2017-01-11 09:31:15 -08:00
ashmem-host.c Don't expose ashmem constants on the host. 2016-05-13 14:47:30 -07:00
canned_fs_config.c libcutils: canned_fs_config.c drop tabs 2016-07-06 10:45:11 -07:00
config_utils.c Config utils improvement 2011-05-26 13:57:03 -07:00
dlmalloc_stubs.c liblog: use log/log.h when utilizing ALOG macros 2017-01-11 09:31:15 -08:00
fs.c Add mode bits to a call to open with O_CREAT 2017-01-25 17:31:43 -08:00
fs_config.c libcutils: fs_config() add check /oem/etc/fs_config_* 2017-03-21 08:15:58 -07:00
hashmap.c libcutils: cleanups for -fsanitize=integer 2015-08-26 10:40:00 -07:00
iosched_policy.c Add ioprio values directly. 2016-07-18 17:01:05 -07:00
klog.cpp Remove unused klog_get_level. 2017-01-13 18:14:12 -08:00
load_file.c
MODULE_LICENSE_APACHE2
multiuser.c Define GID range for external data and OBBs. 2017-01-18 17:11:05 -07:00
native_handle.c Add native_handle_init 2016-10-12 18:04:41 -07:00
NOTICE
open_memstream.c Remove dead code. 2014-11-08 11:32:07 -08:00
partition_utils.c libcutils: turn on -Werror 2014-05-01 17:58:17 -07:00
properties.cpp Implement android::base::WaitForProperty. 2017-02-13 11:29:02 -08:00
qtaguid.c liblog: use log/log.h when utilizing ALOG macros 2017-01-11 09:31:15 -08:00
record_stream.c Use _WIN32 rather than HAVE_WINSOCK. 2015-07-29 17:45:24 -07:00
sched_policy.cpp libcutils: only change cgroup when fd is initialized 2017-03-20 22:13:22 -07:00
socket_inaddr_any_server_unix.c libcutils: share Windows networking code. 2016-01-15 15:57:35 -08:00
socket_inaddr_any_server_windows.c libcutils: share Windows networking code. 2016-01-15 15:57:35 -08:00
socket_local_client_unix.c libcutils: share Windows networking code. 2016-01-15 15:57:35 -08:00
socket_local_server_unix.c libcutils: share Windows networking code. 2016-01-15 15:57:35 -08:00
socket_local_unix.h libcutils: share Windows networking code. 2016-01-15 15:57:35 -08:00
socket_loopback_server_unix.c Fallback to IPv6 when IPv4 is not available in adb 2016-10-13 08:54:43 -07:00
socket_network_client_unix.c We should break from loop after getting connected. 2016-09-21 19:45:54 -07:00
socket_network_client_windows.c libcutils: share Windows networking code. 2016-01-15 15:57:35 -08:00
sockets.cpp libcutils: move cutils/files.h to cutils/android_get_control_file.h 2016-11-16 15:56:56 -08:00
sockets_unix.cpp liblog: use log/log.h when utilizing ALOG macros 2017-01-11 09:31:15 -08:00
sockets_windows.cpp libcutils: move cutils/files.h to cutils/android_get_control_file.h 2016-11-16 15:56:56 -08:00
str_parms.c liblog: use log/log.h when utilizing ALOG macros 2017-01-11 09:31:15 -08:00
strdup8to16.c Fix misc-macro-parentheses warnings in init and other core modules. 2016-05-18 18:11:49 -07:00
strdup16to8.c strdup16to8.c: fix benign integer underflow. 2015-08-27 10:30:50 -07:00
strlcpy.c Fix Windows strlcpy.c build. 2015-04-02 17:21:47 -07:00
threads.c Remove libbacktrace definition of gettid. 2015-05-13 13:44:34 -07:00
trace-dev.c libcutils: use __android_log_is_debuggable() 2016-10-14 08:04:19 -07:00
trace-host.c Hide warning in cutils/trace.h 2016-09-21 17:45:31 -07:00
uevent.c socket: uevent: use SO_RCVBUF instead of SO_RCVBUFFORCE 2016-12-09 15:16:28 -08:00