diff options
Diffstat (limited to 'sys-cluster/moosefs/files/mfs.initd')
-rw-r--r-- | sys-cluster/moosefs/files/mfs.initd | 50 |
1 files changed, 43 insertions, 7 deletions
diff --git a/sys-cluster/moosefs/files/mfs.initd b/sys-cluster/moosefs/files/mfs.initd index ccdf1df0a2d3..b08d50c5d5d1 100644 --- a/sys-cluster/moosefs/files/mfs.initd +++ b/sys-cluster/moosefs/files/mfs.initd @@ -15,14 +15,45 @@ chkconfig() { return 0 } +autorestore() { + einfo "AUTORESTORE set, trying to restore metadata files" + mfsmetarestore -a &>/dev/null + return $? +} + +start_role() { + local ROLE=$1 + local RETURN=0 + + ebegin "${ROLE}" + start-stop-daemon -q --start --exec "${ROLE}" -- start >/dev/null + RETURN=$? + eend ${RETURN} + + return ${RETURN} +} + start_roles() { + local RETURN=0 + eindent for ROLE in ${ROLES}; do - einfo "${ROLE}" - "${ROLE}" start 2>&1 | logger -s -p daemon.info -t mfs + + start_role ${ROLE} || RETURN=$? + eend ${RETURN} + + if [ "${RETURN}" != "0" ] && [ "${ROLE}" == "mfsmaster" ] && [ ${AUTORESTORE} -eq 1 ]; then + eindent + autorestore && start_role ${ROLE} + RETURN=$? + eoutdent + fi + + [ "${RETURN}" != "0" ] && break done eoutdent - return 0 + + return ${RETURN} } start() { @@ -32,12 +63,17 @@ start() { } stop() { + local RETURN=0 + ebegin "Stopping mfs node" eindent - for ROLE in ${ROLES}; do - einfo "${ROLE}" - "${ROLE}" stop 2>&1 | logger -s -p daemon.info -t mfs + local REVERSE=$(echo ${ROLES} | tac -s' ') + for ROLE in ${REVERSE}; do + ebegin "${ROLE}" + start-stop-daemon -q --stop -n ${ROLE} || RETURN=$? + eend ${RETURN} done eoutdent - eend 0 + + eend ${RETURN} } |