The mrd_inject(3mrd) function is a specialized interface to the
SCSI Move Medium command. For the robot specified by robot_name,
the routine will attempt to move the cartridge in the specified
port to the specified slot. Element addresses are zero based.
The robot will be opened and the arguments to the function will
be verified to make sure they are safe and appropriate. The port
and slot address will be verified they are within the valid of
those elements on the robot.
The volume_tag argument can be used to perform cartridge volume
tag verification before the move. If the cartridge volume tag at
the port doesn't match that specified by this argument, then mrd_
inject(3mrd) will fail with the status MRD_STATUS_CART_INVALID.
If volume_tag argument is a NULL pointer, an empty string or
used on a robot without vision support this argument is silently
ignored and the volume tag check will not be made.
The TL820 family requires special handling within the mrd_
inject(3mrd) routine, because of the way the Input/Output Device
(IOD) works. This routine will explicitly check the specified
inport to see if it is full. If empty and the robot is a TL820,
the Pass-through mechanism will then be checked. If the PTM is
full the source address will be reset to the PTM. If both are
empty, the routine will send a Ready Inport command to enable the
IOD. A one minute polling loop will be performed waiting for the
inport to become full, five seconds between polls. If this first
loop fails, the Ready Inport will be sent again and the loop
repeated. This allows the user two minutes to put a tape into the
inport.
If volume tag verification is desired on the TL820, the cartridge
will be moved to the PTM so the volume tag can be read. If the
check fails, the cartridge will left on the PTM. If the mrd_
inject(3mrd) is repeated with the correct volume tag or without
one, the cartridge will be found on the PTM and the Move Medium
command will proceed from there.