General:
Changes to 1.37.28:
+06Jul05
+- Modify mtx-changer.in script to return slot:barcode for
+ Volumes that are loaded in the drives.
+- Correct some more places where dev->is_blocked() needs
+ to be checked in dircmd.c in SD.
+- Update doc.
05Jul05
- Add code to ensure that reserved but unused volumes
are freed.
list)
# echo "Doing mtx -f $ctl -- to list volumes"
- ${MTX} -f $ctl status | grep " *Storage Element [0-9]*:.*Full" | awk "{print \$3 \$4}" | sed "s/Full *\(:VolumeTag=\)*//"
-# Comment out the previous line and add a line here
-# to print "fake" barcodes.
+ ${MTX} -f $ctl status >${TMPDIR}/mtx.$$
+ rtn=$?
+ cat ${TMPDIR}/mtx.$$ | grep " *Storage Element [0-9]*:.*Full" | awk "{print \$3 \$4}" | sed "s/Full *\(:VolumeTag=\)*//"
+ cat ${TMPDIR}/mtx.$$ | grep "^Data Transfer Element [0-9]*:Full (Storage Element [0-9]*Loaded" | awk '{printf "%s:%s\n",$7,$10}'
#
# 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=//"
+ exit $rtn
;;
loaded)
bool found = false;
unbash_spaces(devname);
-// LockRes();
foreach_res(device, R_DEVICE) {
/* Find resource, and make sure we were able to open it */
if (fnmatch(device->hdr.name, devname.c_str(), 0) == 0) {
if (found) {
jcr->dcr = new_dcr(jcr, device->dev);
-// UnlockRes();
jcr->dcr->device = device;
return jcr->dcr->dev;
}
-// UnlockRes();
return NULL;
}
/* Under certain "safe" conditions, we can steal the lock */
} else if (dev->can_steal_lock()) {
autochanger_cmd(dcr, dir, cmd);
- } else if (dev->is_busy()) {
+ } else if (dev->is_busy() || dev->is_blocked()) {
send_dir_busy_message(dir, dev);
} else { /* device not being used */
autochanger_cmd(dcr, dir, cmd);
/* Under certain "safe" conditions, we can steal the lock */
} else if (dev->can_steal_lock()) {
read_volume_label(jcr, dev, Slot);
- } else if (dev->is_busy()) {
+ } else if (dev->is_busy() || dev->is_blocked()) {
send_dir_busy_message(dir, dev);
} else { /* device not being used */
read_volume_label(jcr, dev, Slot);