]> git.sur5r.net Git - bacula/bacula/blobdiff - bacula/scripts/disk-changer.in
Update version
[bacula/bacula] / bacula / scripts / disk-changer.in
index 7181c60f2d0d6158f154f4d0c3894cd262fcccc4..85de7bf1de9e15e9bf1c8da74b56f4fc0f75c3ed 100644 (file)
@@ -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)