X-Git-Url: https://git.sur5r.net/?a=blobdiff_plain;f=bacula%2Fscripts%2Fdisk-changer.in;h=85de7bf1de9e15e9bf1c8da74b56f4fc0f75c3ed;hb=5dc3c693ae2a1073f856039b80093c49372bb90b;hp=7181c60f2d0d6158f154f4d0c3894cd262fcccc4;hpb=fc92af306f2cd876b24b4858a15d05b18f525b6e;p=bacula%2Fbacula diff --git a/bacula/scripts/disk-changer.in b/bacula/scripts/disk-changer.in index 7181c60f2d..85de7bf1de 100644 --- a/bacula/scripts/disk-changer.in +++ b/bacula/scripts/disk-changer.in @@ -6,7 +6,7 @@ # # If you set in your Device resource # -# Changer Command = "path-to-this-script/disk-changer" %c %o %S %a %d +# Changer Command = "path-to-this-script/disk-changer %c %o %S %a %d" # you will have the following input to this script: # # So Bacula will always call with all the following arguments, even though @@ -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)