bin/97513: umount: unmount of /card failed: Device busy ?!
Helmut Schellong
var at schellong.biz
Sun May 21 02:50:26 UTC 2006
The following reply was made to PR bin/97513; it has been noted by GNATS.
From: Helmut Schellong <var at schellong.biz>
To: bug-followup at FreeBSD.org
Cc:
Subject: Re: bin/97513: umount: unmount of /card failed: Device busy ?!
Date: Sun, 21 May 2006 04:46:00 +0200
/dev/da1 (s2,s1) ist a CompactFlash Card 8 GB. Sometimes da0.
At the time of the message "Device busy" I had not run
any other process that accessed /dev/da1. The script safecard only.
Before the runtime of the script the filesytem on Card was unmounted.
safecard:
=======================================================================
#!/u/bin/bsh
MDIR=/card
[ -d "$MDIR" ] || mkdir "$MDIR"
LST='/boot /home /root /u /dos/cie'
[ -n "$*" ] && LST="$*"
camcontrol devlist | grep -m '19>.%{5,}da[0-9]' | readl Z || { echo camcontrol; exit 1; }
set DEV:.50
expr "$Z" :DEV '%(%<da[0-9]%{1,2}%>%)' || { echo "expr da#"; exit 2; }
DEV="/dev/${DEV}s2"
[ -c "$DEV" -o -b "$DEV" ] || { echo "DEV=$DEV"; exit 3; }
echo "Kartengerät: $DEV"
safe.bsh "$DEV" "$MDIR" "$LST" || echo "$0: -> safe.bsh: Exit=$?"
:
safe.bsh
==============================================
#!/u/bin/bsh
TMP=/tmp/safe_$$
[ $# -ne 3 ] && exit 1
[ ! -e "$1" -o ! -d "$2" -o -z "$3" ] && exit 2
DEV="$1" MDIR="$2" LST="$3"
C="$0"
expr "$0" :C '%([^/]%{1,}%)$'
echo "%n$C: TMP=$TMP"
echo ----------------------------------------------------------------
M=0
mount > $TMP || exit
grep -q "$DEV .%{2,} $MDIR " $TMP || M=1
[ M -eq 1 ] && mount -v $DEV $MDIR || exit
sleep 3
set DIR:.500 F:.1000
for DIR in $LST
do
[ -d $DIR ] || continue
echo "$C: $DIR ..."
find $DIR -print > $TMP
[ -s $TMP ] || continue
<$TMP
while readl F
do
if [ -L "$F" ]
then
[ -f "$F" -o -d "$F" ] || {
echo "$C: Typ != -f -d: $F"; continue
}
fstat -tv T "$F" || {
echo "$C: Gebrochener Link: $F"; continue
}
[ -e "$MDIR$F" ] && [ ! -L "$MDIR$F" ] && {
echo "$C: Kein SYMLINK: $MDIR$F"; continue
}
[ -e "$MDIR$F" ] && continue
echo "$C: SYMLINK:"
else
[ -d "$F" ] && {
[ -d "$MDIR$F" ] && continue
[ -e "$MDIR$F" ] && {
echo "$C: Kein DIR: $MDIR$F"; continue
}
mkdir -pv "$MDIR$F"; continue
}
[ -e "$MDIR$F" ] && [ ! "$F" -nt "$MDIR$F" ] && continue
fi
cp -Rpv "$F" "$MDIR$F"
done
><
done
rm $TMP
[ M -eq 1 ] && umount -v "$MDIR" || { sleep 5; umount -v "$MDIR"; } || exit
echo ----------------------------------------------------------------
=======================================================================
--
Mit freundlichen Grüßen
Helmut Schellong var at schellong.biz
www.schellong.de www.schellong.com www.schellong.biz
http://www.schellong.de/c.htm
More information about the freebsd-bugs
mailing list