Partial Medium Load for MAM Access
Paul_A_Suhler at notes.seagate.com
Paul_A_Suhler at notes.seagate.com
Mon Oct 18 14:10:03 PDT 1999
* From the T10 Reflector (t10 at t10.org), posted by:
* Paul_A_Suhler at notes.seagate.com
*
This is a discussion that will lead to a set of proposals for changes to
SSC, SBC, MMC, SMC, and SPC commands. The purpose is to provide support
for all removable media devices to be able to do a quick load of a medium
cartridge to access its Medium Auxiliary Memory, without necessarily having
the primary medium become Ready. An example where this would be necessary
would be a low-cost tape library which would have to load each tape into a
drive to read its MAM.
Thanks to all at the tape working group meeting in Huntington Beach for
their comments on my original proposal. It was pointed out to me that this
is a useful concept that probably belongs in any command set for removable
media devices.
This message is an outline of how we might address all of the issues.
There are several areas to consider:
1. How to implement a "load-without-thread" operation in each relevant
command set.
2. How to handle a cartridge that is inserted (by hand or by robot);
i.e., don't load, load but don't thread, or load and thread.
3. What statuses to report, i.e., should loading without threading cause
a Unit Attention with a new ASC/ASCQ?
So, here is my proposal. Please reply and let me know what you'd like to
change. My terminology here will be imprecise; I'd like to establish
consensus on the overall behavior before wordsmithing the actual changes.
My goal is to have a complete set of suggested changes ready for the
Monterey meeting.
1. Specific Command Set Changes
1.1 SSC
In the Load/Unload command (1Bh), define byte 4 bit 3 (presently
reserved) as HOLD. When LOAD = 1 and HOLD = 1, move the cartridge
into the drive and stop at a point at which the MAM is accessible.
This is the Hold state.
In the Hold state, when Unload with HOLD = 0 is received, eject the
medium. When Load with HOLD = 0 is received, thread and position the
tape as specified by RETEN to make the medium Ready for a medium
access command.
When the medium is Ready (e.g., tape is threaded) and LOAD = 0 and
HOLD = 1, prepare the medium for ejection as specified by EOT and
RETEN and return it to the Hold state. If LOAD = 0 and HOLD = 0,
unload the medium as usual.
1.2 SMC
These changes affect the Move Medium, Move Medium Attached, and
Exchange Medium commands, when they move a medium into a drive (DTE).
They might also affect Read Element Status and Read Element Status
Attached, depending upon implementation.
1.2.1 Move Medium (A5h) / Move Medium Attached (A7h)
Byte 10 bit 1 (presently reserved) will be defined as HOLD. It
will be valid when Destination Address specifies a DTE. In this
case, the cartridge is moved into the drive to the Hold state.
1.2.2 Exchange Medium (A6h)
Byte 10 bit 3 is defined as HOLD1 and bit 2 is defined as HOLD2.
Each is valid when the First Destination Address and/or Second
Destination Address (respectively) specifies a DTE. In this case
the cartridge is moved into the respective drive to the Hold
state.
1.2.3 Initialize Element Status (07h)
Should we define behavior which would cause this command to read
the MAM, or just leave that as vendor unique?
1.2.4 Read Element Status (B8h) / Read Element Status
Attached (B4h)
Do we want this command to report whether each element contains a
medium with a MAM? If so, then we could define two bits in each
element descriptor which are valid when the FULL bit is 1. The
bit MAMVALID = 1 would mean that the medium changer device knows
whether the medium contains a MAM. If so, then the bit MAM would
indicate that there is, in fact, a MAM in the medium.
1.3 MMC
In the Load/Unload Medium command (A6h), byte 4 bit 2 will be defined
as HOLD. When LOUNL = 1, START = 1, and HOLD = 1, move the medium
into the drive to the Hold state. (An alternative would be to use the
remaining reserved combination of LOUNL + START (01b) for this
function.)
When LOUNL = 1, START = 0, and HOLD = 1, prepare the medium for
ejection by returning it to the Hold state.
1.4 SBC and RBC
In the Start Stop Unit command (1Bh), byte 4 bit 2 will be defined as
HOLD. When LOEJ = 1, START = 1, and HOLD = 1, move the medium into
the drive to the Hold state.
When LOEJ = 1. START = 0, and HOLD = 1, stop the device and prepare
the medium for ejection by returning it to the Hold state. (Is this
meaningful? Are there any operations to be carried out beyond those
already done when LOEJ = 0 and STOP = 0?)
Comments:
Are there any other command sets for which Hold functionality
would apply?
All command sets except SSC use byte 4 bit 2; SSC uses bit 3. Is
there any reason to make them all use the same bit in the same
byte? (Bit 3 is available in all.)
2. Autoload
When a medium is inserted into a drive, many drives simply load and prepare
the medium for access. However, I've encountered some customers who do not
want this. Given the above discussion, there are three options:
1. Do not load; wait for Load command..
2. Load to Hold state.
3. Load to Ready state (prepare for access).
I propose that the current behavior be readable and settable via a mode
page in SPC, as this behavior would apply to at least three different
command sets. We could define a two-bit field in the Control Mode Page
with three defined values for these three options. Byte 4 has bits 4-2
reserved and all of byte 5 is reserved. (I don't know the history of this
page and whether there might be legacy applications and devices that use
any of these in a vendor-unique manner.)
3. Device Statuses
The above behaviors require the application client to be able to
distinguish two new states. One is Hold, in which MAM is accessible, but
the primary medium is not (necessarily) accessible. The other is Loadable,
in which an agent external to the device has inserted a medium, and the
device is in Autoload mode #1, so the medium is not loaded.
I propose that we make these states visible via Unit Attention conditions.
In this way, the initiator can know when a Load can be issued, MAM can be
accessed, etc. This could be done as three new ASC/ASCQ combinations:
NOT READY TO LOADABLE TRANSITION
NOT READY TO HOLD TRANSITION
READY TO HOLD TRANSITION
READY TO LOADABLE TRANSITION (includes HOLD to LOADABLE)
Or it might be simpler to announce arrival at the state without specifying
the previous state:
MEDIUM HOLD
MEDIUM LOADABLE
4. Terminology
Finally, I'm not sure that "Hold" is the best term. How about Medium
Auxiliary Memory Accessible, abbreviated "MAMA"?
:-)
I'm looking forward to your comments.
Paul Suhler
Senior Staff Development Engineer
Seagate Removable Storage Solutions
Voice: (714) 641-2485 Fax: (714) 966-7311
*
* For T10 Reflector information, send a message with
* 'info t10' (no quotes) in the message body to majordomo at t10.org
More information about the T10
mailing list