X-Git-Url: https://git.sur5r.net/?a=blobdiff_plain;f=bacula%2Fscripts%2Fdisk-changer.in;h=85de7bf1de9e15e9bf1c8da74b56f4fc0f75c3ed;hb=5dc3c693ae2a1073f856039b80093c49372bb90b;hp=c66799b50e0e8b13e8aeaee71b5a4ee1c1936c8c;hpb=6cda4b67a0125e1f8b71698937719cea81ef4df9;p=bacula%2Fbacula diff --git a/bacula/scripts/disk-changer.in b/bacula/scripts/disk-changer.in index c66799b50e..85de7bf1de 100644 --- a/bacula/scripts/disk-changer.in +++ b/bacula/scripts/disk-changer.in @@ -107,7 +107,12 @@ check_parm_count() { # get_dir() { bn=`basename $device` - dir=`echo "$device" | sed -e s%/$bn%%g -` + dir=`echo "$device" | sed -e s%/$bn%%g` + if [ ! -d $dir ]; then + echo "ERROR: Autochanger directory \"$dir\" does not exist.\n" + echo " You must create it.\n" + exit 1 + fi } @@ -159,23 +164,39 @@ case $cmd in unload) debug "Doing disk -f $ctl unload $slot $device $drive" get_dir - echo "0" >$dir/loaded${drive} - unlink $device 2>/dev/null >/dev/null - rm -f $device + ld=`cat $dir/loaded${drive}` + if [ $slot -eq $ld ]; then + echo "0" >$dir/loaded${drive} + unlink $device 2>/dev/null >/dev/null + rm -f $device + else + echo "Storage Element $slot is Already Full" + exit 1 + fi ;; load) debug "Doing disk $ctl load $slot $device $drive" get_dir - echo "0" >$dir/loaded${drive} - unlink $device 2>/dev/null >/dev/null - rm -f $device - ln -s $dir/slot${slot} $device - rtn=$? - if [ $rtn -eq 0 ]; then - echo $slot >$dir/loaded${drive} + if [ -f $dir/loaded${drive} ]; then + ld=`cat $dir/loaded${drive}` + else + ld=0 + fi + if [ $ld -eq 0 ]; then + echo "0" >$dir/loaded${drive} + unlink $device 2>/dev/null >/dev/null + rm -f $device + ln -s $dir/slot${slot} $device + rtn=$? + if [ $rtn -eq 0 ]; then + echo $slot >$dir/loaded${drive} + fi + exit $rtn + else + echo "Drive ${drive} Full (Storage element ${ld} loaded)" + exit 1 fi - exit $rtn ;; list)