aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRoy Marples <roy@marples.name>2008-04-17 00:09:34 +0000
committerRoy Marples <roy@marples.name>2008-04-17 00:09:34 +0000
commitc89b3763fb9b940e43c61b2dba1653a0d5229b91 (patch)
tree5746ad8c4a2421c7ab067c602fc1335b0797e8bc
parent425abe40c5b511e684efe508972b9036462a2358 (diff)
Respect shutdown -F on Linux to force fsck, #59
-rw-r--r--init.d/fsck.in10
-rw-r--r--init.d/root.in7
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
}