日本語 man コマンド類 (ja-man-1.1j_5) と日本語 man ドキュメント (ja-man-doc-5.4 (5.4-RELEASE 用) など) をインストールすると、以下のような man コマンド閲覧、キーワード検索が コンソールからできるようになります。
4.11-RELEASE-K, 5.4-RELEASE-K, 5.5-RELEASE-K, 6.0-RELEASE-K から 6.4-RELEASE-K, 7.0-RELEASE-K から 7.4-RELEASE-K, 8.0-RELEASE-K から 8.4-RELEASE-K, 9.0-RELEASE-K から 9.3-RELEASE-K, 10.0-RELEASE-K から 10.3-RELEASE-K, 11.0-RELEASE-K から 11.4-RELEASE-K, 12.0-RELEASE-K, 12.1-RELEASE-K は、 プライベート版 (小金丸が編集してまとめたもの) ですが、 より多くの翻訳したファイルが含まれています。 (5.4-RELEASE-K から 6.4-RELEASE-K, 7.0-RELEASE-K から 7.4-RELEASE-K, 8.0-RELEASE-K から 8.4-RELEASE-K, 9.0-RELEASE-K から 9.3-RELEASE-K, 10.0-RELEASE-K から 10.3-RELEASE-K, 11.0-RELEASE-K から 11.4-RELEASE-K, 12.0-RELEASE-K から 12.4-RELEASE-K, 13.0-RELEASE-K から 13.3-RELEASE-K, 14.0-RELEASE-K から 14.1-RELEASE-K は、全翻訳済み)
13.3-STABLE-K, 15.0-CURRENT-K は現在、作成中で日々更新されています。
Table of Contents
MTIO(4) FreeBSD カーネルインタフェースマニュアル MTIO(4)
名称
mtio -- FreeBSD 磁気テープインタフェース
解説
/dev/[en]sa* と名前が付けられたスペシャルファイルは、システムに取り付けら
れた SCSI にテープドライブを参照します。/dev/sa*.ctl は、テープのアンマウ
ントした後も持続して要求されるパラメータを設定するために SCSI テープドラ
イバに ioctl を発行するために使用することができる制御デバイスです。
巻き戻しデバイスは、最終の読み込み、書き込み、とシーク要求が終了するかま
たはテープの最後に到達したとき、自動的に巻き戻します。文字 `n' は、巻き戻
しされないデバイスの名前の前に追加されます。文字 `e' は、イジェクトできる
デバイスの名前に前に追加されます。
テープは、固定長レコードか可変長レコードのいずれかで書き込むことができま
す。詳細については、sa(4) を参照してください。2 つのファイルマークは、
テープの終わりを示し、1 つのファイルマークは、テープファイルの終わりを示
します。テープが巻き戻されないなら、2 つのテープマークの間にヘッドが位置
付けられ、次の書き込みで 2 つ目の end-of-file マークが上書きされます。
すべての磁気テープデバイスは、mt(1) コマンドで操作できます。
多くの ioctl(2) 操作が生の (raw) 磁気テープで利用可能です。次の定義は、
<sys/mtio.h> からのものです:
#ifndef _SYS_MTIO_H_
#define _SYS_MTIO_H_
#ifndef _KERNEL
#include <sys/types.h>
#endif
#include <sys/ioccom.h>
/*
* 磁気テープ IO 制御コマンドのための構造体と定義
*/
/* MTIOCTOP のための構造体 - 磁気テープ操作コマンド */
struct mtop {
short mt_op; /* 下記に定義された操作 */
int32_t mt_count; /* それらを何回 */
};
/* 操作 */
#define MTWEOF 0 /* end-of-file レコードを書き込む */
#define MTFSF 1 /* ファイルを前進 */
#define MTBSF 2 /* ファイルを後退 */
#define MTFSR 3 /* レコードを前進 */
#define MTBSR 4 /* レコードを後退 */
#define MTREW 5 /* 巻き戻し */
#define MTOFFL 6 /* 巻き戻してドライブをオフラインにする */
#define MTNOP 7 /* 操作なし、状態設定のみ */
#define MTCACHE 8 /* コントローラキャッシュを有効にする */
#define MTNOCACHE 9 /* コントローラキャッシュを無効にする */
#if defined(__FreeBSD__)
/* デバイスのためにブロックサイズを設定します. デバイスが可変サイズ dev */
/* であるなら, 0 でないパラメータは渡されたパラメータの値に設定された */
/* ブロックサイズでデバイスを固定ブロックサイズに変更します. 0 に */
/* ブロックサイズを再設定すると, デバイスは可変ブロックサイズデバイスに */
/* 復旧されます. */
#define MTSETBSIZ 10
/* デバイスの密度を設定します. オープンされたモードのためだけに値を
設定します. */
#define MTSETDNSTY 11
#define MTERASE 12 /* EOM まで消去 */
#define MTEOD 13 /* EOM まで空白にする */
#define MTCOMP 14 /* 圧縮モードを選択 0=オフ, 1=定義 */
#define MTRETENS 15 /* テープを張り直し */
#define MTWSS 16 /* (複数の) セットマーク書き込み */
#define MTFSS 17 /* セットマークまで前進 */
#define MTBSS 18 /* セットマークまで後退 */
#define MTLOAD 19 /* ドライブでテープをロードする */
#define MTWEOFI 20 /* 待ちなしで EOF レコードを書き込む */
#define MT_COMP_ENABLE 0xffffffff
#define MT_COMP_DISABLED 0xfffffffe
#define MT_COMP_UNSUPP 0xfffffffd
/*
* デバイスが何をしているかを示す mt_dsreg の値
*/
#define MTIO_DSREG_NIL 0 /* 未知 */
#define MTIO_DSREG_REST 1 /* 何も行わない */
#define MTIO_DSREG_RBSY 2 /* テープと通信中 (動作なし) */
#define MTIO_DSREG_WR 20 /* 書き込み中 */
#define MTIO_DSREG_FMK 21 /* ファイルマークを書き込み中 */
#define MTIO_DSREG_ZER 22 /* 消去中 */
#define MTIO_DSREG_RD 30 /* 読み込み中 */
#define MTIO_DSREG_FWD 40 /* 前進中 */
#define MTIO_DSREG_REV 41 /* 後退中 */
#define MTIO_DSREG_POS 42 /* ハードウェアによる位置決め中
(方向不明) */
#define MTIO_DSREG_REW 43 /* 巻き戻し中 */
#define MTIO_DSREG_TEN 44 /* 張り直し中 */
#define MTIO_DSREG_UNL 45 /* 取り外し中 */
#define MTIO_DSREG_LD 46 /* 取り付け中 */
#endif /* __FreeBSD__ */
/* MTIOCGET のための構造体 - 磁気テープの状態取得コマンド */
struct mtget {
short mt_type; /* 磁気テープデバイスのタイプ */
/* 次の 2 つのレジスタは, 大幅にデバイスに依存しています */
short mt_dsreg; /* ``デバイス状態'' レジスタ */
short mt_erreg; /* ``エラー'' レジスタ */
/* デバイス依存レジスタの終わり */
/*
* 残りのカウントは, 保守されますが, 残りのサイズが 32 K
* バイトを (大きく) 超過するかもしれないので, 無意味で
* あるかもしれないことに注意してください. より正確な
* カウントを得るためには, MTIOCERRSTAT ioctl を使用し
* てください.
*/
short mt_resid; /* 残りカウンタ */
#if defined (__FreeBSD__)
int32_t mt_blksiz; /* 現在操作中のブロックサイズ */
int32_t mt_density; /* 現在操作中の記録密度 */
uint32_t mt_comp; /* 現在操作中の圧縮 */
int32_t mt_blksiz0; /* モード 0 のブロックサイズ */
int32_t mt_blksiz1; /* モード 1 のブロックサイズ */
int32_t mt_blksiz2; /* モード 2 のブロックサイズ */
int32_t mt_blksiz3; /* モード 3 のブロックサイズ */
int32_t mt_density0; /* モード 0 の記録密度 */
int32_t mt_density1; /* モード 1 の記録密度 */
int32_t mt_density2; /* モード 2 の記録密度 */
int32_t mt_density3; /* モード 3 の記録密度 */
/* 次は, まだ実装されていません */
uint32_t mt_comp0; /* モード 0 の圧縮タイプ */
uint32_t mt_comp1; /* モード 1 の圧縮タイプ */
uint32_t mt_comp2; /* モード 2 の圧縮タイプ */
uint32_t mt_comp3; /* モード 3 の圧縮タイプ */
/* 未実装の終わり */
#endif
int32_t mt_fileno; /* 現在位置の相対ファイル番号 */
int32_t mt_blkno; /* 現在位置の相対ブロック番号 */
};
/* MTIOCERRSTAT のための構造体 - 磁気テープのエラー状態取得コマンド */
/* 現在のところ SCSI テープのためだけ実際にサポートされています */
struct scsi_tape_errors {
/*
* これらの操作で有名な SCSI Check Condition を持つ最後の
* コマンドからラッチされます. MTIOCERRSTAT を発行する動作
* は, それらをアンラッチしてクリアします.
*/
uint8_t io_sense[32]; /* データ I/O のための最後のセンスデータ */
int32_t io_resid; /* 最後のデータ I/O からの残りカウント */
uint8_t io_cdb[16]; /* 最後のセンスデータを起こしたコマンド */
uint8_t ctl_sense[32]; /* 制御 I/O のための最後のセンスデータ */
int32_t ctl_resid; /* 最後の制御 I/O からの残りカウント */
uint8_t ctl_cdb[16]; /* 最後の制御センスを起こしたコマンド */
/*
* これらは, 読み込み書き込みの累積エラーカウンタです.
* (どのように累積エラーカウンタをリセットするかは,
* まだ確定されていません).
* (まだ実装されていませんが, 場所がそれらのために予約されています)
*/
struct {
uint32_t retries; /* 実行されたリトライの合計数 */
uint32_t corrected; /* 実行された誤り訂正の合計数 */
uint32_t processed; /* 成功した誤り訂正の合計数 */
uint32_t failures; /* 失敗した誤り訂正/リトライの
合計数 */
uint64_t nbytes; /* 処理した合計バイト数 */
} wterr, rderr;
};
union mterrstat {
struct scsi_tape_errors scsi_errstat;
char _reserved_padding[256];
};
struct mtrblim {
uint32_t granularity;
uint32_t min_block_length;
uint32_t max_block_length;
};
typedef enum {
MT_LOCATE_DEST_OBJECT = 0x00,
MT_LOCATE_DEST_FILE = 0x01,
MT_LOCATE_DEST_SET = 0x02,
MT_LOCATE_DEST_EOD = 0x03
} mt_locate_dest_type;
typedef enum {
MT_LOCATE_BAM_IMPLICIT = 0x00,
MT_LOCATE_BAM_EXPLICIT = 0x01
} mt_locate_bam;
typedef enum {
MT_LOCATE_FLAG_IMMED = 0x01,
MT_LOCATE_FLAG_CHANGE_PART = 0x02
} mt_locate_flags;
struct mtlocate {
mt_locate_flags flags;
mt_locate_dest_type dest_type;
mt_locate_bam block_address_mode;
int64_t partition;
uint64_t logical_id;
uint8_t reserved[64];
};
typedef enum {
MT_EXT_GET_NONE,
MT_EXT_GET_OK,
MT_EXT_GET_NEED_MORE_SPACE,
MT_EXT_GET_ERROR
} mt_ext_get_status;
struct mtextget {
uint32_t alloc_len;
char *status_xml;
uint32_t fill_len;
mt_ext_get_status status;
char error_str[128];
uint8_t reserved[64];
};
#define MT_EXT_GET_ROOT_NAME "mtextget"
#define MT_DENSITY_ROOT_NAME "mtdensity"
#define MT_MEDIA_DENSITY_NAME "media_density"
#define MT_DENSITY_REPORT_NAME "density_report"
#define MT_MEDIUM_TYPE_REPORT_NAME "medium_type_report"
#define MT_MEDIA_REPORT_NAME "media_report"
#define MT_DENSITY_ENTRY_NAME "density_entry"
#define MT_DENS_WRITE_OK 0x80
#define MT_DENS_DUP 0x40
#define MT_DENS_DEFLT 0x20
#define MT_PARAM_FIXED_STR_LEN 32
union mt_param_value {
int64_t value_signed;
uint64_t value_unsigned;
char *value_var_str;
char value_fixed_str[MT_PARAM_FIXED_STR_LEN];
uint8_t reserved[64];
};
typedef enum {
MT_PARAM_SET_NONE,
MT_PARAM_SET_SIGNED,
MT_PARAM_SET_UNSIGNED,
MT_PARAM_SET_VAR_STR,
MT_PARAM_SET_FIXED_STR
} mt_param_set_type;
typedef enum {
MT_PARAM_STATUS_NONE,
MT_PARAM_STATUS_OK,
MT_PARAM_STATUS_ERROR
} mt_param_set_status;
#define MT_PARAM_VALUE_NAME_LEN 64
struct mtparamset {
char value_name[MT_PARAM_VALUE_NAME_LEN];
mt_param_set_type value_type;
int value_len;
union mt_param_value value;
mt_param_set_status status;
char error_str[128];
};
#define MT_PARAM_ROOT_NAME "mtparamget"
#define MT_PROTECTION_NAME "protection"
/*
* パラメータのリストを設定する.
*/
struct mtsetlist {
int num_params;
int param_len;
struct mtparamset *params;
};
/*
* mt_type バイトのための定数. これらは, リストされたタイプと
* 互換性があるコントローラと同じです.
*/
#define MT_ISTS 0x01 /* TS-11 */
#define MT_ISHT 0x02 /* TM03 マスバス:
TE16, TU45, TU77 */
#define MT_ISTM 0x03 /* TM11/TE10 ユニバス */
#define MT_ISMT 0x04 /* TM78/TU78 マスバス */
#define MT_ISUT 0x05 /* ユニバス上の SI TU-45
エミュレーション */
#define MT_ISCPC 0x06 /* SUN */
#define MT_ISAR 0x07 /* SUN */
#define MT_ISTMSCP 0x08 /* DEC TMSCP プロトコル
(TU81, TK50) */
#define MT_ISCY 0x09 /* CCI Cipher */
#define MT_ISCT 0x0a /* HP 1/4 テープ */
#define MT_ISFHP 0x0b /* HP 7980 1/2 テープ */
#define MT_ISEXABYTE 0x0c /* Exabyte */
#define MT_ISEXA8200 0x0c /* Exabyte EXB-8200 */
#define MT_ISEXA8500 0x0d /* Exabyte EXB-8500 */
#define MT_ISVIPER1 0x0e /* Archive Viper-150 */
#define MT_ISPYTHON 0x0f /* Archive Python (DAT) */
#define MT_ISHPDAT 0x10 /* HP 35450A DAT ドライブ */
#define MT_ISMFOUR 0x11 /* M4 Data 1/2 9 トラック
ドライブ */
#define MT_ISTK50 0x12 /* DEC SCSI TK50 */
#define MT_ISMT02 0x13 /* Emulex MT02 SCSI テープ
コントローラ */
/* 磁気テープ I/O 制御コマンド */
#define MTIOCTOP _IOW('m', 1, struct mtop)
/* 磁気テープを操作 */
#define MTIOCGET _IOR('m', 2, struct mtget)
/* テープ状態を取得 */
/* これらの 2 は, どこにも使用されると思われません */
#define MTIOCIEOT _IO('m', 3) /* EOT エラーを無視 */
#define MTIOCEEOT _IO('m', 4) /* EOT エラーを有効 */
/*
* 多くの SCSI-3 SSC (ストリーミングデバイス) デバイスが全 32 バイトタイプ
* 2 構造のサポートがあるとき, それらが, 関係する (64 ビットの
* ブロック, 論理ファイルレコード番号, 等) すべての実体をサポート
* するために, これらの ioctl を再考しなければなりません.
*/
#define MTIOCRDSPOS _IOR('m', 5, uint32_t) /* 論理ブロックアドレスを
取得 */
#define MTIOCRDHPOS _IOR('m', 6, uint32_t) /* ハードウェアブロック
アドレスを取得 */
#define MTIOCSLOCATE _IOW('m', 5, uint32_t) /* 論理ブロックアドレスに
シーク */
#define MTIOCHLOCATE _IOW('m', 6, uint32_t) /* ハードウェアブロック
アドレスにシーク */
#define MTIOCERRSTAT _IOR('m', 7, union mterrstat)
/* テープエラーを取得 */
/*
* EOT モデルを設定 - 引数は, テープの終わるファイルマークの数です.
* すべての指定される値が受け付けられるわけではないことに注意してください.
*/
#define MTIOCSETEOTMODEL _IOW('m', 8, uint32_t)
/* 現在 EOT モデルを取得 */
#define MTIOCGETEOTMODEL _IOR('m', 8, uint32_t)
#define MTIOCRBLIM _IOR('m', 9, struct mtrblim)
/* ブロックの制限を取得する */
#define MTIOCEXTLOCATE _IOW('m', 10, struct mtlocate)
/* 位置にシークする */
#define MTIOCEXTGET _IOWR('m', 11, struct mtextget)
/* テープの状態を取得する
*/
#define MTIOCPARAMGET _IOWR('m', 12, struct mtextget)
/* テープのパラメータを
取得する */
#define MTIOCPARAMSET _IOWR('m', 13, struct mtparamset)
/* テープのパラメータを
設定する */
#define MTIOCSETLIST _IOWR('m', 14, struct mtsetlist)
/* N パラメータを設定する
*/
#ifndef _KERNEL
#define DEFTAPE "/dev/nsa0"
#endif
#endif /* !_SYS_MTIO_H_ */
関連ファイル
/dev/[en]sa*
関連項目
mt(1), tar(1), sa(4)
歴史
mtio マニュアルは、4.2BSD で登場しました。i386 バージョンは、FreeBSD 2.2
ではじめて登場しました。
FreeBSD 13.2 February 12, 2015 FreeBSD 13.2