Partial Medium Load for MAM Access

Paul_A_Suhler at Paul_A_Suhler at
Mon Oct 18 14:10:03 PDT 1999

* From the T10 Reflector (t10 at, posted by:
* Paul_A_Suhler at

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

          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

     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?)


          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:





Or it might be simpler to announce arrival at the state without specifying
the previous state:



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

More information about the T10 mailing list