Jay
On Mon, Mar 03, 2003 at 02:54:11PM -0000, Nigel Barker wrote:
>> I'm using Solaris 8, with an OverlandXB 10 slot changer and a DLT drive.
>> Amanda 2.4.3
>> mtx 1.2.17
>
>> amanda.conf contains :-
>> tpchanger "chg-zd-mtx"
>> tapedev "/dev/rmt/1n"
>> changerfile "/usr/local/share/amanda/Daily/chg-zd-mtx"
>> changerdev "/dev/scsi/cganger/c1t6do"
> ^
>I assume the real amanda.conf doesn't have this typo.
I copied it from the file, the typo was there, I've corrected it but it
hasn't changed the behaviour at all (which feels like a clue to me...)
>> Trying to follow the chg-zd-mtx instructions, I try :-
>> $ ./chg-zd-mtx -info
>> <none> could not determine current slot
>
>You seem to have installed mtx and chg-zd-mtx in
/usr/local/share/amanda/Daily,
>make sure they are also installed where amanda's $PATH can find them.
Where would these normally be installed?
mtx was in the user backup's PATH, chg-zd-mtx wasn't, but is now, no change)
>Then take the debugging to the next level with:
>
>$ sh -x chg-zd-mtx -info
Well, it produced a lot more info (attached), but having had a quick look
through I don't see what's going wrong.
Cheers
Nige
MT=//usr/bin/mt
MTF=-f
MTX=mtx
+ test -n
TMPDIR=/tmp/amanda
DBGDIR=/tmp/amanda
argv0=chg-zd-mtx
+ expr chg-zd-mtx : .*/\(.*\)
myname=
+ pwd
config=/usr/local/share/amanda/Daily
+ expr /usr/local/share/amanda/Daily : .*/\(.*\)
config=Daily
+ date +%H:%M:%S
ds=17:06:01
+ [ 0 -eq 0 -a -n 17:06:01 ]
+ echo 17:06:01
+ sed s/./ /g
logprefix=
internal_call=0
mtx_status_valid=0
slot_list=
prefix=/usr/local
exec_prefix=/usr/local
sbindir=/usr/local/sbin
libexecdir=/usr/local/libexec
PATH=/usr/local/sbin:/usr/local/libexec:/usr/bin:/bin:/usr/sbin:/sbin:/usr/ucb:/usr/local/bin
+ export PATH
USE_VERSION_SUFFIXES=no
+ test no = yes
SUF=
+ amgetconf dbopen.chg-zd-mtx
+ grep -v BUGGY
DBGFILE=/tmp/amanda/chg-zd-mtx.20030303170601.debug
+ [ -z /tmp/amanda/chg-zd-mtx.20030303170601.debug ]
+ amgetconf changerfile
+ grep -v BUGGY
changerfile=/usr/local/share/amanda/Daily/chg-zd-mtx
+ [ -z /usr/local/share/amanda/Daily/chg-zd-mtx ]
+ amgetconf tapedev
+ grep -v BUGGY
tape=/dev/rmt/1n
+ [ -z /dev/rmt/1n ]
+ expr /dev/rmt/1n : null:
+ [ /dev/rmt/1n = /dev/null -o 0 -eq 5 ]
+ amgetconf changerdev
+ grep -v BUGGY
TAPE=/dev/scsi/changer/c1t6do
+ [ -z /dev/scsi/changer/c1t6do ]
+ [ /dev/scsi/changer/c1t6do = /dev/null ]
+ export TAPE
configfile=/usr/local/share/amanda/Daily/chg-zd-mtx.conf
cleanfile=/usr/local/share/amanda/Daily/chg-zd-mtx-clean
accessfile=/usr/local/share/amanda/Daily/chg-zd-mtx-access
slotfile=/usr/local/share/amanda/Daily/chg-zd-mtx-slot
labelfile=/usr/local/share/amanda/Daily/chg-zd-mtx-barcodes
+ [ ! -s /usr/local/share/amanda/Daily/chg-zd-mtx-clean ]
+ [ ! -s /usr/local/share/amanda/Daily/chg-zd-mtx-access ]
+ [ ! -s /usr/local/share/amanda/Daily/chg-zd-mtx-slot ]
+ [ ! -f /usr/local/share/amanda/Daily/chg-zd-mtx-barcodes ]
+ cat /usr/local/share/amanda/Daily/chg-zd-mtx-clean
cleancount=0
+ cat /usr/local/share/amanda/Daily/chg-zd-mtx-access
accesscount=2
varlist=
varlist= firstslot
varlist= firstslot lastslot
varlist= firstslot lastslot cleanslot
varlist= firstslot lastslot cleanslot cleancycle
varlist= firstslot lastslot cleanslot cleancycle OFFLINE_BEFORE_UNLOAD
varlist= firstslot lastslot cleanslot cleancycle OFFLINE_BEFORE_UNLOAD
offline_before_unload
varlist= firstslot lastslot cleanslot cleancycle OFFLINE_BEFORE_UNLOAD
offline_before_unload unloadpause
varlist= firstslot lastslot cleanslot cleancycle OFFLINE_BEFORE_UNLOAD
offline_before_unload unloadpause AUTOCLEAN
varlist= firstslot lastslot cleanslot cleancycle OFFLINE_BEFORE_UNLOAD
offline_before_unload unloadpause AUTOCLEAN autoclean
varlist= firstslot lastslot cleanslot cleancycle OFFLINE_BEFORE_UNLOAD
offline_before_unload unloadpause AUTOCLEAN autoclean autocleancount
varlist= firstslot lastslot cleanslot cleancycle OFFLINE_BEFORE_UNLOAD
offline_before_unload unloadpause AUTOCLEAN autoclean autocleancount havereader
varlist= firstslot lastslot cleanslot cleancycle OFFLINE_BEFORE_UNLOAD
offline_before_unload unloadpause AUTOCLEAN autoclean autocleancount havereader
driveslot
varlist= firstslot lastslot cleanslot cleancycle OFFLINE_BEFORE_UNLOAD
offline_before_unload unloadpause AUTOCLEAN autoclean autocleancount havereader
driveslot poll_drive_ready
varlist= firstslot lastslot cleanslot cleancycle OFFLINE_BEFORE_UNLOAD
offline_before_unload unloadpause AUTOCLEAN autoclean autocleancount havereader
driveslot poll_drive_ready max_drive_wait
+ cat /usr/local/share/amanda/Daily/chg-zd-mtx.conf
+ sed -n
# Ignore comment lines (anything starting with a #).
/^[ ]*#/d
# Find the first var=val line in the file, print the value and quit.
/^[ ]*firstslot[ ]*=[ ]*\([^ ][^ ]*\).*/ {
s/^[ ]*firstslot[ ]*=[ ]*\([^ ][^ ]*\).*/\1/p
q
}
val=1
+ eval firstslot="1"
firstslot=1
+ sed -n
# Ignore comment lines (anything starting with a #).
/^[ ]*#/d
# Find the first var=val line in the file, print the value and quit.
/^[ ]*lastslot[ ]*=[ ]*\([^ ][^ ]*\).*/ {
s/^[ ]*lastslot[ ]*=[ ]*\([^ ][^ ]*\).*/\1/p
q
}
+ cat /usr/local/share/amanda/Daily/chg-zd-mtx.conf
val=9
+ eval lastslot="9"
lastslot=9
+ cat /usr/local/share/amanda/Daily/chg-zd-mtx.conf
+ sed -n
# Ignore comment lines (anything starting with a #).
/^[ ]*#/d
# Find the first var=val line in the file, print the value and quit.
/^[ ]*cleanslot[ ]*=[ ]*\([^ ][^ ]*\).*/ {
s/^[ ]*cleanslot[ ]*=[ ]*\([^ ][^ ]*\).*/\1/p
q
}
val=10
+ eval cleanslot="10"
cleanslot=10
+ cat /usr/local/share/amanda/Daily/chg-zd-mtx.conf
+ sed -n
# Ignore comment lines (anything starting with a #).
/^[ ]*#/d
# Find the first var=val line in the file, print the value and quit.
/^[ ]*cleancycle[ ]*=[ ]*\([^ ][^ ]*\).*/ {
s/^[ ]*cleancycle[ ]*=[ ]*\([^ ][^ ]*\).*/\1/p
q
}
val=
+ eval cleancycle=""
cleancycle=
+ cat /usr/local/share/amanda/Daily/chg-zd-mtx.conf
+ sed -n
# Ignore comment lines (anything starting with a #).
/^[ ]*#/d
# Find the first var=val line in the file, print the value and quit.
/^[ ]*OFFLINE_BEFORE_UNLOAD[ ]*=[ ]*\([^ ][^ ]*\).*/ {
s/^[ ]*OFFLINE_BEFORE_UNLOAD[ ]*=[ ]*\([^ ][^ ]*\).*/\1/p
q
}
val=
+ eval OFFLINE_BEFORE_UNLOAD=""
OFFLINE_BEFORE_UNLOAD=
+ cat /usr/local/share/amanda/Daily/chg-zd-mtx.conf
+ sed -n
# Ignore comment lines (anything starting with a #).
/^[ ]*#/d
# Find the first var=val line in the file, print the value and quit.
/^[ ]*offline_before_unload[ ]*=[ ]*\([^ ][^ ]*\).*/ {
s/^[ ]*offline_before_unload[ ]*=[ ]*\([^ ][^ ]*\).*/\1/p
q
}
val=
+ eval offline_before_unload=""
offline_before_unload=
+ cat /usr/local/share/amanda/Daily/chg-zd-mtx.conf
+ sed -n
# Ignore comment lines (anything starting with a #).
/^[ ]*#/d
# Find the first var=val line in the file, print the value and quit.
/^[ ]*unloadpause[ ]*=[ ]*\([^ ][^ ]*\).*/ {
s/^[ ]*unloadpause[ ]*=[ ]*\([^ ][^ ]*\).*/\1/p
q
}
val=
+ eval unloadpause=""
unloadpause=
+ cat /usr/local/share/amanda/Daily/chg-zd-mtx.conf
+ sed -n
# Ignore comment lines (anything starting with a #).
/^[ ]*#/d
# Find the first var=val line in the file, print the value and quit.
/^[ ]*AUTOCLEAN[ ]*=[ ]*\([^ ][^ ]*\).*/ {
s/^[ ]*AUTOCLEAN[ ]*=[ ]*\([^ ][^ ]*\).*/\1/p
q
}
val=
+ eval AUTOCLEAN=""
AUTOCLEAN=
+ cat /usr/local/share/amanda/Daily/chg-zd-mtx.conf
+ sed -n
# Ignore comment lines (anything starting with a #).
/^[ ]*#/d
# Find the first var=val line in the file, print the value and quit.
/^[ ]*autoclean[ ]*=[ ]*\([^ ][^ ]*\).*/ {
s/^[ ]*autoclean[ ]*=[ ]*\([^ ][^ ]*\).*/\1/p
q
}
val=
+ eval autoclean=""
autoclean=
+ cat /usr/local/share/amanda/Daily/chg-zd-mtx.conf
+ sed -n
# Ignore comment lines (anything starting with a #).
/^[ ]*#/d
# Find the first var=val line in the file, print the value and quit.
/^[ ]*autocleancount[ ]*=[ ]*\([^ ][^ ]*\).*/ {
s/^[ ]*autocleancount[ ]*=[ ]*\([^ ][^ ]*\).*/\1/p
q
}
val=
+ eval autocleancount=""
autocleancount=
+ cat /usr/local/share/amanda/Daily/chg-zd-mtx.conf
+ sed -n
# Ignore comment lines (anything starting with a #).
/^[ ]*#/d
# Find the first var=val line in the file, print the value and quit.
/^[ ]*havereader[ ]*=[ ]*\([^ ][^ ]*\).*/ {
s/^[ ]*havereader[ ]*=[ ]*\([^ ][^ ]*\).*/\1/p
q
}
val=
+ eval havereader=""
havereader=
+ sed -n
# Ignore comment lines (anything starting with a #).
/^[ ]*#/d
# Find the first var=val line in the file, print the value and quit.
/^[ ]*driveslot[ ]*=[ ]*\([^ ][^ ]*\).*/ {
s/^[ ]*driveslot[ ]*=[ ]*\([^ ][^ ]*\).*/\1/p
q
}
+ cat /usr/local/share/amanda/Daily/chg-zd-mtx.conf
val=0
+ eval driveslot="0"
driveslot=0
+ cat /usr/local/share/amanda/Daily/chg-zd-mtx.conf
+ sed -n
# Ignore comment lines (anything starting with a #).
/^[ ]*#/d
# Find the first var=val line in the file, print the value and quit.
/^[ ]*poll_drive_ready[ ]*=[ ]*\([^ ][^ ]*\).*/ {
s/^[ ]*poll_drive_ready[ ]*=[ ]*\([^ ][^ ]*\).*/\1/p
q
}
val=
+ eval poll_drive_ready=""
poll_drive_ready=
+ cat /usr/local/share/amanda/Daily/chg-zd-mtx.conf
+ sed -n
# Ignore comment lines (anything starting with a #).
/^[ ]*#/d
# Find the first var=val line in the file, print the value and quit.
/^[ ]*max_drive_wait[ ]*=[ ]*\([^ ][^ ]*\).*/ {
s/^[ ]*max_drive_wait[ ]*=[ ]*\([^ ][^ ]*\).*/\1/p
q
}
val=
+ eval max_drive_wait=""
max_drive_wait=
+ [ -z 0 ]
+ [ /tmp/amanda/chg-zd-mtx.20030303170601.debug = /dev/null ]
+ [ -z 0 ]
stdout=/tmp/amanda/.1.18875
stderr=/tmp/amanda/.2.18875
mtx_status=/tmp/amanda/.status.18875
+ trap rm -f /tmp/amanda/.1.18875 /tmp/amanda/.2.18875 /tmp/amanda/.status.18875 0
+ Log Arg info:
+ [ -z ]
+ date +%H:%M:%S
ds=17:06:01
+ echo 17:06:01 Arg info:
+ LogAppend $# = 1
+ [ -z ]
+ echo $# = 1
i=0
+ LogAppend $0 = "chg-zd-mtx"
+ [ -z ]
+ echo $0 = "chg-zd-mtx"
+ expr 0 + 1
i=1
+ LogAppend $1 = "-info"
+ [ -z ]
+ echo $1 = "-info"
firstslot=1
lastslot=9
cleanslot=10
cleancycle=120
+ [ -z -a -n ]
offline_before_unload=0
unloadpause=0
+ [ -z -a -n ]
autoclean=0
autocleancount=99
havereader=0
poll_drive_ready=3
max_drive_wait=120
+ get_slot_list
+ test -n
+ [ -n ]
+ get_mtx_status
+ test -n
+ [ 0 -ne 0 ]
+ rm -f /tmp/amanda/.status.18875
+ Run mtx status
status=0
+ [ 0 -eq 0 ]
mtx_status_valid=1
+ return 0
+ sed -n
/^Data Transfer Element:Full/ {
s/.*(Storage Element \([0-9][0-9]*\) Loaded)\(.*\)/\1/p
}
/^Data Transfer Element 0:Full/ {
s/.*(Storage Element \([0-9][0-9]*\) Loaded)\(.*\)/\1/p
}
/^[ ]*Storage Element \([0-9][0-9]*\):Full/ {
s/.*Storage Element \([0-9][0-9]*\):.*/\1/p
}
+ grep -v ^10$
+ sort -n
slot_list=1
2
3
4
5
6
7
8
9
+ echo 1 2 3 4 5 6 7 8 9
slot_list=1 2 3 4 5 6 7 8 9
+ [ 1 -lt 0 -o 9 -lt 0 ]
amanda_slot_list=
+ [ 1 -ge 1 -a 1 -le 9 ]
amanda_slot_list= 1
+ [ 2 -ge 1 -a 2 -le 9 ]
amanda_slot_list= 1 2
+ [ 3 -ge 1 -a 3 -le 9 ]
amanda_slot_list= 1 2 3
+ [ 4 -ge 1 -a 4 -le 9 ]
amanda_slot_list= 1 2 3 4
+ [ 5 -ge 1 -a 5 -le 9 ]
amanda_slot_list= 1 2 3 4 5
+ [ 6 -ge 1 -a 6 -le 9 ]
amanda_slot_list= 1 2 3 4 5 6
+ [ 7 -ge 1 -a 7 -le 9 ]
amanda_slot_list= 1 2 3 4 5 6 7
+ [ 8 -ge 1 -a 8 -le 9 ]
amanda_slot_list= 1 2 3 4 5 6 7 8
+ [ 9 -ge 1 -a 9 -le 9 ]
amanda_slot_list= 1 2 3 4 5 6 7 8 9
+ [ -z 1 2 3 4 5 6 7 8 9 ]
slot_list= 1 2 3 4 5 6 7 8 9
+ Log Config info:
+ [ -z ]
+ date +%H:%M:%S
ds=17:06:01
+ echo 17:06:01 Config info:
+ [ firstslot = OFFLINE_BEFORE_UNLOAD ]
+ [ firstslot = AUTOCLEAN ]
+ eval val="$firstslot"
val=1
+ [ -z 1 ]
+ IsNumeric 1
+ test -z 1
+ expr 1 : \([-0-9][0-9]*\)
x=1
+ expr X1 != X1
+ return 0
+ :
+ LogAppend firstslot = "1"
+ [ -z ]
+ echo firstslot = "1"
+ [ lastslot = OFFLINE_BEFORE_UNLOAD ]
+ [ lastslot = AUTOCLEAN ]
+ eval val="$lastslot"
val=9
+ [ -z 9 ]
+ IsNumeric 9
+ test -z 9
+ expr 9 : \([-0-9][0-9]*\)
x=9
+ expr X9 != X9
+ return 0
+ :
+ LogAppend lastslot = "9"
+ [ -z ]
+ echo lastslot = "9"
+ [ cleanslot = OFFLINE_BEFORE_UNLOAD ]
+ [ cleanslot = AUTOCLEAN ]
+ eval val="$cleanslot"
val=10
+ [ -z 10 ]
+ IsNumeric 10
+ test -z 10
+ expr 10 : \([-0-9][0-9]*\)
x=10
+ expr X10 != X10
+ return 0
+ :
+ LogAppend cleanslot = "10"
+ [ -z ]
+ echo cleanslot = "10"
+ [ cleancycle = OFFLINE_BEFORE_UNLOAD ]
+ [ cleancycle = AUTOCLEAN ]
+ eval val="$cleancycle"
val=120
+ [ -z 120 ]
+ IsNumeric 120
+ test -z 120
+ expr 120 : \([-0-9][0-9]*\)
x=120
+ expr X120 != X120
+ return 0
+ :
+ LogAppend cleancycle = "120"
+ [ -z ]
+ echo cleancycle = "120"
+ [ OFFLINE_BEFORE_UNLOAD = OFFLINE_BEFORE_UNLOAD ]
+ continue
+ [ offline_before_unload = OFFLINE_BEFORE_UNLOAD ]
+ [ offline_before_unload = AUTOCLEAN ]
+ eval val="$offline_before_unload"
val=0
+ [ -z 0 ]
+ IsNumeric 0
+ test -z 0
+ expr 0 : \([-0-9][0-9]*\)
x=0
+ expr X0 != X0
+ return 0
+ :
+ LogAppend offline_before_unload = "0"
+ [ -z ]
+ echo offline_before_unload = "0"
+ [ unloadpause = OFFLINE_BEFORE_UNLOAD ]
+ [ unloadpause = AUTOCLEAN ]
+ eval val="$unloadpause"
val=0
+ [ -z 0 ]
+ IsNumeric 0
+ test -z 0
+ expr 0 : \([-0-9][0-9]*\)
x=0
+ expr X0 != X0
+ return 0
+ :
+ LogAppend unloadpause = "0"
+ [ -z ]
+ echo unloadpause = "0"
+ [ AUTOCLEAN = OFFLINE_BEFORE_UNLOAD ]
+ [ AUTOCLEAN = AUTOCLEAN ]
+ continue
+ [ autoclean = OFFLINE_BEFORE_UNLOAD ]
+ [ autoclean = AUTOCLEAN ]
+ eval val="$autoclean"
val=0
+ [ -z 0 ]
+ IsNumeric 0
+ test -z 0
+ expr 0 : \([-0-9][0-9]*\)
x=0
+ expr X0 != X0
+ return 0
+ :
+ LogAppend autoclean = "0"
+ [ -z ]
+ echo autoclean = "0"
+ [ autocleancount = OFFLINE_BEFORE_UNLOAD ]
+ [ autocleancount = AUTOCLEAN ]
+ eval val="$autocleancount"
val=99
+ [ -z 99 ]
+ IsNumeric 99
+ test -z 99
+ expr 99 : \([-0-9][0-9]*\)
x=99
+ expr X99 != X99
+ return 0
+ :
+ LogAppend autocleancount = "99"
+ [ -z ]
+ echo autocleancount = "99"
+ [ havereader = OFFLINE_BEFORE_UNLOAD ]
+ [ havereader = AUTOCLEAN ]
+ eval val="$havereader"
val=0
+ [ -z 0 ]
+ IsNumeric 0
+ test -z 0
+ expr 0 : \([-0-9][0-9]*\)
x=0
+ expr X0 != X0
+ return 0
+ :
+ LogAppend havereader = "0"
+ [ -z ]
+ echo havereader = "0"
+ [ driveslot = OFFLINE_BEFORE_UNLOAD ]
+ [ driveslot = AUTOCLEAN ]
+ eval val="$driveslot"
val=0
+ [ -z 0 ]
+ IsNumeric 0
+ test -z 0
+ expr 0 : \([-0-9][0-9]*\)
x=0
+ expr X0 != X0
+ return 0
+ :
+ LogAppend driveslot = "0"
+ [ -z ]
+ echo driveslot = "0"
+ [ poll_drive_ready = OFFLINE_BEFORE_UNLOAD ]
+ [ poll_drive_ready = AUTOCLEAN ]
+ eval val="$poll_drive_ready"
val=3
+ [ -z 3 ]
+ IsNumeric 3
+ test -z 3
+ expr 3 : \([-0-9][0-9]*\)
x=3
+ expr X3 != X3
+ return 0
+ :
+ LogAppend poll_drive_ready = "3"
+ [ -z ]
+ echo poll_drive_ready = "3"
+ [ max_drive_wait = OFFLINE_BEFORE_UNLOAD ]
+ [ max_drive_wait = AUTOCLEAN ]
+ eval val="$max_drive_wait"
val=120
+ [ -z 120 ]
+ IsNumeric 120
+ test -z 120
+ expr 120 : \([-0-9][0-9]*\)
x=120
+ expr X120 != X120
+ return 0
+ :
+ LogAppend max_drive_wait = "120"
+ [ -z ]
+ echo max_drive_wait = "120"
+ [ 1 -gt 9 ]
+ [ 0 -ne 0 -a 10 -lt 0 ]
+ cat /usr/local/share/amanda/Daily/chg-zd-mtx-slot
currentslot=2
+ IsNumeric 2
+ test -z 2
+ expr 2 : \([-0-9][0-9]*\)
x=2
+ expr X2 != X2
+ return 0
+ [ 2 -lt 1 ]
+ [ 2 -gt 9 ]
found_current=0
first_slot_in_list=-1
next_slot_after_current=-1
+ [ -1 -lt 0 ]
first_slot_in_list=1
+ [ 1 -eq 2 ]
+ [ 1 -gt 2 ]
+ [ 1 -lt 0 ]
+ [ 2 -eq 2 ]
found_current=1
+ break
+ [ 1 -eq 0 ]
+ [ 1 -lt 1 ]
cmd=-info
+ shift
+ info
+ test -n
+ get_loaded_info
+ test -n
+ get_mtx_status
+ test -n
+ [ 1 -ne 0 ]
+ return 0
+ sed -n
/^Data Transfer Element:Empty/ {
s/.*/-1/p
q
}
/^Data Transfer Element 0:Empty/ {
s/.*/-1/p
q
}
/^Data Transfer Element:Full.*:VolumeTag/ {
s/.*(Storage Element \([0-9][0-9]*\) Loaded):VolumeTag *= *\([^ ]*\)/\1 \2/p
q
}
/^Data Transfer Element 0:Full.*:VolumeTag/ {
s/.*(Storage Element \([0-9][0-9]*\) Loaded):VolumeTag *= *\([^ ]*\)/\1 \2/p
q
}
/^Data Transfer Element:Full/ {
s/.*(Storage Element \([0-9][0-9]*\) Loaded)\(.*\)/\1/p
q
}
/^Data Transfer Element 0:Full/ {
s/.*(Storage Element \([0-9][0-9]*\) Loaded)\(.*\)/\1/p
q
}
+ set x -1
+ shift
loadedslot=-1
loadedbarcode=
+ [ -z -1 ]
+ IsNumeric -1
+ test -z -1
+ expr -1 : \([-0-9][0-9]*\)
x=-1
+ expr X-1 != X-1
+ return 0
+ :
+ Log STATUS -> currently loaded slot = -1
+ [ -z ]
+ date +%H:%M:%S
ds=17:06:02
+ echo 17:06:02 STATUS -> currently loaded slot = -1
+ LogAppend -> currently loaded barcode = ""
+ [ -z ]
+ echo -> currently loaded barcode = ""
+ get_slot_list
+ test -n
+ [ -n 1 2 3 4 5 6 7 8 9 ]
+ return
+ Log INFO -> first slot: 1
+ [ -z ]
+ date +%H:%M:%S
ds=17:06:02
+ echo 17:06:02 INFO -> first slot: 1
+ LogAppend -> current slot: 2
+ [ -z ]
+ echo -> current slot: 2
+ LogAppend -> loaded slot: -1
+ [ -z ]
+ echo -> loaded slot: -1
+ LogAppend -> last slot: 9
+ [ -z ]
+ echo -> last slot: 9
+ LogAppend -> slot list: 1 2 3 4 5 6 7 8 9
+ [ -z ]
+ echo -> slot list: 1 2 3 4 5 6 7 8 9
+ LogAppend -> can go backwards: 1
+ [ -z ]
+ echo -> can go backwards: 1
+ LogAppend -> havereader: 0
+ [ -z ]
+ echo -> havereader: 0
reader=
+ [ 0 -eq 1 ]
+ [ 2 -lt 1 -o 2 -gt 9 ]
+ set x 1 2 3 4 5 6 7 8 9
+ shift
numslots=9
+ Exit 0 2 9 1
+ [ 0 -gt 0 ]
call_type=Exit
code=0
+ shift
exit_slot=2
+ shift
exit_answer=9 1
+ Log Exit (0) -> 2 9 1
+ [ -z ]
+ date +%H:%M:%S
ds=17:06:02
+ echo 17:06:02 Exit (0) -> 2 9 1
+ echo 2 9 1
2 9 1
+ [ Exit = Return ]
+ amgetconf dbclose.chg-zd-mtx:/tmp/amanda/chg-zd-mtx.20030303170601.debug
+ exit 0
+ rm -f /tmp/amanda/.1.18875 /tmp/amanda/.2.18875 /tmp/amanda/.status.18875