All,
Here is the output of mtx status command and mtx-changer run from
command line for comparison. I am running Bacula 2.2.7 on Solaris 10_x86.
Also, I still do have to run mtx status command 2x from command line for the
additional slot to be seen before updating slots in bconsole. I think this
is an Exabyte issue, but is low on my fix list right now. Also notice that
the IE slot is still numbered 24, even though its in the RH magazine, not
LH.
This is the most significant change in the mtx-changer, but I can't recall
if there were others
${MTX} -f $ctl status | grep " *Storage Element [0-9].*:.*Full" |sed "s/
IMPORT\/EXPORT//" |awk "{print \$3 \$4}" | sed "s/Full:VolumeTag=//"
[EMAIL PROTECTED]: mtx -f /dev/scsi/changer/c6t4d1 status
Storage Changer /dev/scsi/changer/c6t4d1:1 Drives, 24 Slots ( 1
Import/Export )
Data Transfer Element 0:Full (Storage Element 7 Loaded):VolumeTag =
A00019
Storage Element 1:Full :VolumeTag=A00013
Storage Element 2:Full :VolumeTag=A00014
Storage Element 3:Full :VolumeTag=A00015
Storage Element 4:Full :VolumeTag=A00016
Storage Element 5:Full :VolumeTag=A00017
Storage Element 6:Full :VolumeTag=A00018
Storage Element 7:Empty:VolumeTag=
Storage Element 8:Full :VolumeTag=A00020
Storage Element 9:Full :VolumeTag=A00021
Storage Element 10:Full :VolumeTag=A00022
Storage Element 11:Full :VolumeTag=A00023
Storage Element 12:Empty:VolumeTag=
Storage Element 13:Empty:VolumeTag=
Storage Element 14:Empty:VolumeTag=
Storage Element 15:Empty:VolumeTag=
Storage Element 16:Empty:VolumeTag=
Storage Element 17:Empty:VolumeTag=
Storage Element 18:Empty:VolumeTag=
Storage Element 19:Empty:VolumeTag=
Storage Element 20:Empty:VolumeTag=
Storage Element 21:Empty:VolumeTag=
Storage Element 22:Empty:VolumeTag=
Storage Element 23:Empty:VolumeTag=
Storage Element 24 IMPORT/EXPORT:Full :VolumeTag=A00024
[EMAIL PROTECTED]: ./mtx-changer /dev/scsi/changer/c6t4d1 list 0 0
1:A00013
2:A00014
3:A00015
4:A00016
5:A00017
6:A00018
8:A00020
9:A00021
10:A00022
11:A00023
24:A00024
#!/bin/bash
#
# /bin/sh isn't always compatible so use /bin/bash
#
# Bacula interface to mtx autoloader
#
# $Id: solaris-mtx-changer 2805 2006-02-22 18:43:55Z kerns $
#
# If you set in your Device resource
#
# Changer Command = "path-to-this-script/mtx-changer %c %o %S %a %d"
# you will have the following input to this script:
#
# mtx-changer "changer-device" "command" "slot" "archive-device"
"drive-index"
# $1 $2 $3 $4 $5
#
# for example:
#
# mtx-changer /dev/sg0 load 1 /dev/nst0 0 (on a Linux system)
#
# If you need to an offline, refer to the drive as $4
# e.g. mt -f $4 offline
#
# Many changers need an offline after the unload. Also many
# changers need a sleep 60 after the mtx load.
#
# N.B. If you change the script, take care to return either
# the mtx exit code or a 0. If the script exits with a non-zero
# exit code, Bacula will assume the request failed.
#
# Sun sed/awk etc are not sufficient, working versions are in /usr/xpg4/bin
#export PATH="/usr/local/bin:/usr/sfw/bin:/usr/xpg4/bin:/usr/bin"
# Add all paths
export
PATH="/usr/sbin:/usr/bin:/usr/dt/bin:/usr/openwin/bin:/usr/ccs/bin:/usr/local/bin:/usr/local/sbin:/opt/csw/bin:/opt/csw/sbin:/opt/csw/mysql4/bin:/usr/xpg4/bin"
MTX=mtx
#
# The purpose of this function to wait a maximum
# time for the drive. It will
# return as soon as the drive is ready, or after
# waiting a maximum of 180 seconds.
# Note, this is very system dependent, so if you are
# not running on Linux, you will probably need to
# re-write it.
#
# If you have a FreeBSD system, you might want to change
# the $(seq 180) to $(jot 180) -- tip from Brian McDonald
#
wait_for_drive() {
#for i in $(seq 180); do # Wait max 180 seconds
# Solaris has no "seq", use perl instead
for i in $(perl -e '$,="\n"; print 0 .. 180;'); do # Wait max 180
seconds
if ( mt -f $1 status | grep 0x0 ) >/dev/null 2>&1; then
#echo "Device $1 READY"
break
fi
#echo "Device $1 - not ready, retry ${i}..."
sleep 1
done
}
if test $# -lt 2 ; then
echo "usage: mtx-changer ctl-device command slot archive-device drive"
echo " Insufficient number of arguments arguments given."
echo " Mimimum usage is first two arguments ..."
exit 1
fi
# Setup arguments
ctl=$1
cmd="$2"
slot=$3
#device=$4
# Set $device to your the correct tape device, unless otherwise defined
if test x$4 = x ; then
# change this to your device
device=/dev/rmt/0
else
device=$4
fi
# If drive not given, default to 0
if test $# = 5 ; then
drive=$5
else
drive=0
fi
#
# Check for special cases where only 2 arguments are needed,
# all others are a minimum of 3
case $cmd in
loaded)
;;
unload)
;;
list)
;;
slots)
;;
*)
if test $# -lt 3; then
echo "usage: mtx-changer ctl-device command slot archive-device
drive"
echo " Insufficient number of arguments arguments given."
echo " Mimimum usage is first three arguments ..."
exit 1
fi
;;
esac
case $cmd in
unload)
# echo "Doing mtx -f $ctl unload $slot $drive"
#
# enable the following line if you need to eject the cartridge
#mt -f $device offline
mt -f $device rewoffl
if test x$slot = x; then
${MTX} -f $ctl unload
else
${MTX} -f $ctl unload $slot $drive
fi
;;
load)
# echo "Doing mtx -f $ctl load $slot $drive"
${MTX} -f $ctl load $slot $drive
rtn=$?
#
# Increase the sleep time if you have a slow device
# or remove the sleep and add the following:
#sleep 15
wait_for_drive $device
exit $rtn
;;
list)
# echo "Requested list"
# Some tape changers lose track of their inventory (well, mine does)
so
# do one before trying to get a status out of it.
${MTX} -f $ctl inventory
# original status munge
#${MTX} -f $ctl status | grep " *Storage Element [0-9]*:.*Full" | awk
"{print \$3 \$4}" | sed "s/Full *\(:VolumeTag=\)*//"
# correct munge for the Exabyte Magnum 224
${MTX} -f $ctl status | grep " *Storage Element [0-9].*:.*Full" |sed
"s/ IMPORT\/EXPORT//" |awk "{print \$3 \$4}" | sed "s/Full:VolumeTag=//"
# Comment out the previous line and add a line here
# to print "fake" barcodes.
#
# If you have a VXA PacketLoader and the above does not work, try
# turning it off and enabling the following line.
# ${MTX} -f $ctl status | grep " *Storage Element [0-9]*:.*Full" | sed
"s/*Storage Element //" | sed "s/Full :VolumeTag=//"
;;
loaded)
${MTX} -f $ctl status >/tmp/mtx.$$
rtn=$?
cat /tmp/mtx.$$ | grep "^Data Transfer Element $drive:Full" | awk
"{print \$7}"
cat /tmp/mtx.$$ | grep "^Data Transfer Element $drive:Empty" | awk
"{print 0}"
rm -f /tmp/mtx.$$
exit $rtn
;;
slots)
# echo "Request slots"
${MTX} -f $ctl status | grep " *Storage Changer" | awk "{print \$5}"
;;
esac
-------------------------------------------------------------------------
This SF.net email is sponsored by: Microsoft
Defy all challenges. Microsoft(R) Visual Studio 2008.
http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/
_______________________________________________
Bacula-users mailing list
Bacula-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/bacula-users