#!/bin/sh #Unmount a mounted MNTPT. # By Alan M Bruce (qole) # # GPL licensed; keep code free! if [ "`whoami`" != "root" ] ; then echo "please run me as root!" exit 9 fi #Try to get the MNTPT location from the first parameter MNTPT=$1 #Try to get the MNTPT location from the config file... if [ "x$MNTPT" = x ] ; then #Pull in the config, if possible... [ -f /home/user/.chroot ] && . /home/user/.chroot MNTPT=$CHROOT #Still not set? FAIL if [ "x$MNTPT" != x ] ; then echo "No mountpoint to unmount!" >/dev/stderr exit 8 fi fi # Strip off a trailing slash LASTCHAR=`echo $MNTPT | cut -c ${#MNTPT}` if [ "$LASTCHAR" = "/" ] ; then echo "..stripping trailing slash..." >/dev/stderr MNTPT=`echo $MNTPT | cut -c 0-$((${#MNTPT}-1))` fi TEST1=`mount | grep " $MNTPT "` if [ "x$TEST1" != "x" ] ; then echo "..Unmounting $MNTPT..." >/dev/stderr umount -ld "$MNTPT" TEST2=`mount | grep " $MNTPT "` if [ "x$TEST2" != "x" ] ; then echo "...$MNTPT didn't unmount!" >/dev/stderr exit 8 fi else echo "$MNTPT is not mounted; Check for trailing slashes." >/dev/stderr fi if [ ! "x`grep device-mapper /proc/misc`" = "x" ] ; then LOOPDEV=`echo $TEST1 | cut -f1 -d' '` while [ "x`echo $LOOPDEV | grep dm-`" != "x" ] ; do LOOPNO=`echo $LOOPDEV | awk -F '-' '{print $NF}'` echo "..Unmounting turbo loop ($LOOPNO)..." >/dev/stderr dmlosetup -d /dev/loop$LOOPNO if [ "$?" != 0 ] || [ "x`dmsetup status | grep loop$LOOPNO`" != "x" ] ; then echo "Waiting for apps to terminate, will try again." >/dev/stderr sleep 5 dmlosetup -d /dev/loop$LOOPNO if [ "$?" != 0 ] ; then echo "Can't unmount turbo-loop! Try dmlosetup -d /dev/loop$LOOPNO manually." >/dev/stderr exit 9 fi fi LOOPDEV=`mount | grep " $MNTPT " | cut -f1 -d' '` done fi echo "successful unmount..." >/dev/stderr exit 0