私はQuantum DLT-4000テープドライブを使用してOpenSuse 15.5でmtバージョン2.13を実行しています。
実行すると、mt -f /dev/st0 status
次の結果が表示されます。
drive type = 114
drive status = 419430400
sense key error = 0
residue count = 0
file number = 0
block number = 0
ドライブタイプとドライブステータスコードはどのように解釈されますか?
ベストアンサー1
GNUmt
コマンドこれらの値を生成本質的には、struct mtget
ioctl呼び出しから直接返されますMTIOCGET
。
型の値は次のとおりです。include/uapi/linux/mtio.h
Linuxカーネルのソースコードから:
/*
* 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
10進数114は16進数0x72なので、この値は、テープドライブがおそらく最も近代的なテープドライブタイプの「一般的なANSI SCSI-2テープデバイス」であることを示します。
ステータス値はビットフィールドであり、個々のビットも次のようにリストされます。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 */
状態419430400の16進値は0x19000000なので、次の合計です。
0x10000000
= DDS設定フラグ0x08000000
= DDS EOD(データ終了)0x01000000
= GMT_ONLINE(=テープが挿入され、ドライブがコマンドを受信する準備ができました)
最後に用語集HP DDSドライブ技術リファレンスガイド設定タグを次のように定義します。
マークを設定する
マークが設定される前のレコード数やファイルマークがわからなくても、ドライブがすばやく検索できるパーティション内の特殊レコード要素。
したがって、この状態は実際には次のことを意味します。
- テープが挿入され、ドライブがコマンドを実行する準備が整いました。
- 現在の場所は、テープの始まりでも終わりでもなく、その間のどこかです。
- 現在、迅速に検索可能な設定マーカーにあります。
- この設定マークは特にデータ終了マークであるため、この時点以降にテープに有効なデータがないはずです。
したがって、テープにデータを書き込むために正しい場所に来ました。