diff options
author | Roy Marples <roy@marples.name> | 2008-04-17 00:09:34 +0000 |
---|---|---|
committer | Roy Marples <roy@marples.name> | 2008-04-17 00:09:34 +0000 |
commit | c89b3763fb9b940e43c61b2dba1653a0d5229b91 (patch) | |
tree | 5746ad8c4a2421c7ab067c602fc1335b0797e8bc /init.d | |
parent | 425abe40c5b511e684efe508972b9036462a2358 (diff) |
Respect shutdown -F on Linux to force fsck, #59
Diffstat (limited to 'init.d')
-rw-r--r-- | init.d/fsck.in | 10 | ||||
-rw-r--r-- | init.d/root.in | 7 |
2 files changed, 11 insertions, 6 deletions
diff --git a/init.d/fsck.in b/init.d/fsck.in index f469ce81..3eeba63c 100644 --- a/init.d/fsck.in +++ b/init.d/fsck.in @@ -27,14 +27,18 @@ _reboot() { start() { - local reboot_opts= fsck_opts= p= + local reboot_opts= fsck_opts= p= check_extra= if [ -e /fastboot ]; then ewarn "Skipping fsck due to /fastboot" return 0 fi + if [ -e /forcefsck ]; then + fsck_opts="${fsck_opts} -f" + check_extra="(check forced)" + fi - ebegin "Checking local filesystems" + ebegin "Checking local filesystems ${check_extra}" for p in ${fsck_passno}; do local IFS="${_IFS}" case "${p}" in @@ -45,7 +49,7 @@ start() done if [ "${RC_UNAME}" = "Linux" ]; then - fsck_opts="-C0 -T" + fsck_opts="${fsck_opts} -C0 -T" if [ -z "${fsck_passno}" ]; then fsck_args=${fsck_args--A -p} if echo 2>/dev/null >/.test.$$; then diff --git a/init.d/root.in b/init.d/root.in index aba6415f..ec0466c3 100644 --- a/init.d/root.in +++ b/init.d/root.in @@ -13,7 +13,7 @@ depend() start() { if echo 2>/dev/null >/.test.$$; then - rm -f /.test.$$ /fastboot + rm -f /.test.$$ /fastboot /forcefsck return 0 fi @@ -22,6 +22,7 @@ start() Linux) mount -n -o remount,rw /;; *) mount -u -o rw /;; esac - eend $? "Root filesystem could not be mounted read/write" - rm -f /fastboot + if eend $? "Root filesystem could not be mounted read/write"; then + rm -f /fastboot /forcefsck + fi } |