The GNU mt
command produces those values essentially straight from the struct mtget
returned by the MTIOCGET
ioctl call.
The type values are listed in include/uapi/linux/mtio.h
within Linux kernel source:
/*
* Constants for mt_type. Not all of these are supported,
* and these are not all of the ones that are supported.
*/
#define MT_ISUNKNOWN 0x01
#define MT_ISQIC02 0x02 /* Generic QIC-02 tape streamer */
#define MT_ISWT5150 0x03 /* Wangtek 5150EQ, QIC-150, QIC-02 */
#define MT_ISARCHIVE_5945L2 0x04 /* Archive 5945L-2, QIC-24, QIC-02? */
#define MT_ISCMSJ500 0x05 /* CMS Jumbo 500 (QIC-02?) */
#define MT_ISTDC3610 0x06 /* Tandberg 6310, QIC-24 */
#define MT_ISARCHIVE_VP60I 0x07 /* Archive VP60i, QIC-02 */
#define MT_ISARCHIVE_2150L 0x08 /* Archive Viper 2150L */
#define MT_ISARCHIVE_2060L 0x09 /* Archive Viper 2060L */
#define MT_ISARCHIVESC499 0x0A /* Archive SC-499 QIC-36 controller */
#define MT_ISQIC02_ALL_FEATURES 0x0F /* Generic QIC-02 with all features */
#define MT_ISWT5099EEN24 0x11 /* Wangtek 5099-een24, 60MB, QIC-24 */
#define MT_ISTEAC_MT2ST 0x12 /* Teac MT-2ST 155mb drive, Teac DC-1 card (Wangtek type) */
#define MT_ISEVEREX_FT40A 0x32 /* Everex FT40A (QIC-40) */
#define MT_ISDDS1 0x51 /* DDS device without partitions */
#define MT_ISDDS2 0x52 /* DDS device with partitions */
#define MT_ISONSTREAM_SC 0x61 /* OnStream SCSI tape drives (SC-x0)
and SCSI emulated (DI, DP, USB) */
#define MT_ISSCSI1 0x71 /* Generic ANSI SCSI-1 tape unit */
#define MT_ISSCSI2 0x72 /* Generic ANSI SCSI-2 tape unit */
/* QIC-40/80/3010/3020 ftape supported drives.
- 20bit vendor ID + 0x800000 (see ftape-vendors.h)
/
#define MT_ISFTAPE_UNKNOWN 0x800000 / obsolete */
#define MT_ISFTAPE_FLAG 0x800000
Type 114 in decimal is 0x72 in hex, so the value indicates your tape drive is a "generic ANSI SCSI-2 tape unit", which is probably what most modern tape drives are.
The status value is a bit field, and the individual bits are also listed within include/uapi/linux/mtio.h
:
/* Generic Mag Tape (device independent) status macros for examining
* mt_gstat -- HP-UX compatible.
* There is room for more generic status bits here, but I don't
* know which of them are reserved. At least three or so should
* be added to make this really useful.
*/
#define GMT_EOF(x) ((x) & 0x80000000)
#define GMT_BOT(x) ((x) & 0x40000000)
#define GMT_EOT(x) ((x) & 0x20000000)
#define GMT_SM(x) ((x) & 0x10000000) /* DDS setmark */
#define GMT_EOD(x) ((x) & 0x08000000) /* DDS EOD */
#define GMT_WR_PROT(x) ((x) & 0x04000000)
/* #define GMT_ ? ((x) & 0x02000000) */
#define GMT_ONLINE(x) ((x) & 0x01000000)
#define GMT_D_6250(x) ((x) & 0x00800000)
#define GMT_D_1600(x) ((x) & 0x00400000)
#define GMT_D_800(x) ((x) & 0x00200000)
/* #define GMT_ ? ((x) & 0x00100000) */
/* #define GMT_ ? ((x) & 0x00080000) */
#define GMT_DR_OPEN(x) ((x) & 0x00040000) /* door open (no tape) */
/* #define GMT_ ? ((x) & 0x00020000) */
#define GMT_IM_REP_EN(x) ((x) & 0x00010000) /* immediate report mode */
#define GMT_CLN(x) ((x) & 0x00008000) /* cleaning requested */
/* 15 generic status bits unused */
Status 419430400 is 0x19000000 in hex, so it is a sum of:
0x10000000
= DDS setmark
0x08000000
= DDS EOD (end-of-data)
0x01000000
= GMT_ONLINE (= there is a tape inserted and the drive is ready to receive commands)
The glossary at the end of HP DDS Drives Technical Reference Manual defines a setmark as:
setmark
A special recorded element within a partition to which the drive can fast-search without having to know the number of records or filemarks that precede the setmark.
So, the status effectively means:
- a tape is inserted and the drive is ready for commands
- the current position is neither at the beginning nor the end of tape, but somewhere in between
- the current position is at a fast-searchable setmark
- that setmark is specifically an end-of-data mark, so there should be no valid data on the tape past this point.
So, if you want to start writing more data to the tape, you are exactly at the correct position to do that.