|
|
- #!/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
-
|