#!/bin/sh
|
|
#
|
|
#
|
|
|
|
check_mounted() {
|
|
DIR=$1
|
|
while [ "$DIR" != "/" ]; do
|
|
if [ -n "`mount | grep "$DIR"`" ]; then
|
|
return 0
|
|
fi
|
|
|
|
DIR=`dirname $DIR`
|
|
done
|
|
return 1
|
|
}
|
|
|
|
check_writable() {
|
|
CHECKFILE="$1/.container-lock"
|
|
/bin/touch $CHECKFILE
|
|
|
|
if [ $? -gt 0 ]; then
|
|
return 1;
|
|
fi
|
|
|
|
/bin/echo "0123456789" >> $CHECKFILE
|
|
|
|
if [ $? -gt 0 ]; then
|
|
return 2;
|
|
fi
|
|
|
|
/bin/rm $CHECKFILE
|
|
|
|
if [ $? -gt 0 ]; then
|
|
return 3;
|
|
fi
|
|
}
|
|
|
|
check_mountdev() {
|
|
# get wait_mount option
|
|
WAIT_MOUNT_DEV=`uci -q get ibrdtn.safemode.wait_mount`
|
|
|
|
if [ $? -ne 0 ]; then
|
|
return 0
|
|
fi
|
|
|
|
DATA=`mount | grep ${WAIT_MOUNT_DEV}`
|
|
|
|
if [ -n "${DATA}" ]; then
|
|
return 0
|
|
fi
|
|
|
|
return 1
|
|
}
|
|
|
|
# check the storage device
|
|
check_mountdev
|
|
RET=$?
|
|
|
|
if [ ${RET} -ne 0 ]; then
|
|
WAIT_SECONDS=60
|
|
/usr/bin/logger -t "systemcheck.sh" -p 2 "disk storage not ready, wait max. ${WAIT_SECONDS} seconds until it is mounted"
|
|
while [ ${RET} -ne 0 ] && [ ${WAIT_SECONDS} -ne 0 ]; do
|
|
sleep 1
|
|
let WAIT_SECONDS=WAIT_SECONDS-1
|
|
check_mountdev
|
|
RET=$?
|
|
done
|
|
fi
|
|
|
|
if [ ${RET} -ne 0 ]; then
|
|
# failed, storage not mounted
|
|
exit 1
|
|
fi
|
|
|
|
# get the path for the container
|
|
CONTAINER=`uci -q get ibrdtn.storage.container`
|
|
|
|
if [ -z "$CONTAINER" ]; then
|
|
exit 0
|
|
fi
|
|
|
|
CONTAINER_PATH=`dirname $CONTAINER`
|
|
|
|
if [ -n "$CONTAINER_PATH" ]; then
|
|
# check if the container is on a mounted device
|
|
check_mounted $CONTAINER_PATH
|
|
|
|
if [ $? -gt 0 ]; then
|
|
# failed
|
|
exit 1
|
|
fi
|
|
|
|
# check if the device is writable
|
|
check_writable $CONTAINER_PATH
|
|
|
|
if [ $? -gt 0 ]; then
|
|
# failed
|
|
exit 1
|
|
fi
|
|
fi
|
|
|