名 前
st − SCSI テ ー プ デ バ イ ス
書 式
#include <sys/mtio.h>
int
ioctl(int fd, int request [,
(void *)arg3]);
int ioctl(int fd, MTIOCTOP, (struct mtop
*)mt_cmd);
int ioctl(int fd, MTIOCGET, (struct mtget
*)mt_status);
int ioctl(int fd, MTIOCPOS, (struct mtpos
*)mt_pos);
説 明
st ド ラ イ バ ー は 様 々 な SCSI テ ー プ デ バ イ ス の イ ン タ ー フ ェ イ ス を 提 供 す る 。 現 在 で は 、 ド ラ イ バ ー は 検 出 さ れ た 全 て の “シ ー ケ ン シ ャ ル ア ク セ ス (sequential−access) ” タ イ プ の デ バ イ ス へ の 制 御 を 行 う 。 st ド ラ イ バ ー は メ ジ ャ ー デ バ イ ス 番 号 9 を 用 い る 。 そ れ ぞ れ の デ バ イ ス は 8 つ の マ イ ナ ー デ バ イ ス 番 号 を 使 う 。 マ イ ナ ー 番 号 の 低 位 側 の 5 ビ ッ ト は 、 検 出 さ れ た 順 に 割 り 当 て ら れ る 。 カ ー ネ ル 2.6 で は 、 低 位 側 8 ビ ッ ト よ り も 上 位 に あ る ビ ッ ト 群 が こ の 5 ビ ッ ト に 連 結 (concatenate) さ れ 、 テ ー プ 番 号 と な る 。 マ イ ナ ー 番 号 は 、 そ れ ぞ れ 4 つ の 数 字 か ら な る 二 つ の セ ッ ト に グ ル ー プ 分 け さ れ る 。 基 本 (自 動 巻 き 戻 し ) デ バ イ ス 番 号 n、 お よ び “非 巻 き 戻 し (no−rewind) ” デ バ イ ス 番 号 (n + 128). で あ る 。 基 本 デ バ イ ス 番 号 を 用 い て オ ー プ ン さ れ た デ バ イ ス に は 、 ク ロ ー ズ す る 時 に REWIND コ マ ン ド が 送 ら れ る 。 “非 巻 き 戻 し ” デ バ イ ス 番 号 を 用 い て オ ー プ ン さ れ た 場 合 は REWIND コ マ ン ド は 送 ら れ な い (自 動 巻 き 戻 し デ バ イ ス を テ ー プ の 位 置 決 め に (例 え ば mt で ) 用 い て も 、 望 む 結 果 は 得 ら れ な い 。 テ ー プ は mt コ マ ン ド の 後 で 巻 き 戻 さ れ 、 次 の コ マ ン ド は テ ー プ の 先 頭 か ら 始 ま っ て し ま う )。 そ れ ぞ れ の グ ル ー プ で 、 異 な っ た 特 性 (ブ ロ ッ ク サ イ ズ ・ 圧 縮 ・ 密 度 な ど ) の デ バ イ ス を 定 義 す る た め に 4 つ の マ イ ナ ー 番 号 が 利 用 で き る 。 シ ス テ ム が 起 動 し た と き に は 、 最 初 の デ バ イ ス だ け が 使 え る 。 他 の 3 つ は デ フ ォ ル ト の 特 性 が 定 義 さ れ て 初 め て 使 え る よ う に な る (後 述 )。 (コ ン パ イ ル 時 の 定 数 を 変 更 す る こ と に よ っ て 、 テ ー プ ド ラ イ ブ の 最 大 数 と 、 そ れ ぞ れ の ド ラ イ ブ に 割 り 当 て ら れ る マ イ ナ ー 番 号 の 個 数 と を 調 整 で き る 。 デ フ ォ ル ト の 割 り 当 て で は 32 台 ま で の テ ー プ ド ラ イ ブ を 制 御 で き る 。 例 え ば 64 台 ま で の テ ー プ ド ラ イ ブ を 、 異 な っ た オ プ シ ョ ン を 持 つ 二 つ の マ イ ナ ー 番 号 で 制 御 す る よ う に も で き る 。 ) デ バ イ ス は 普 通 次 の よ う に 作 ら れ る :
mknod −m
666 /dev/st0 c 9 0
mknod −m 666 /dev/st0l c 9 32
mknod −m 666 /dev/st0m c 9 64
mknod −m 666 /dev/st0a c 9 96
mknod −m 666 /dev/nst0 c 9 128
mknod −m 666 /dev/nst0l c 9 160
mknod −m 666 /dev/nst0m c 9 192
mknod −m 666 /dev/nst0a c 9 224 こ れ
ら に は 対 応 す
る ブ ロ ッ ク デ
バ イ ス は 存 在
し な い 。 ド ラ
イ バ は 内 部 バ
ッ フ ァ ー を 使
い 、 そ の 大 き
さ は 少 な く と
も テ ー プ の 1 ブ
ロ ッ ク を 保 持
で き る よ う に
取 ら れ る 。 2.1.121
以 前 の カ ー ネ
ル で は 、 バ ッ
フ ァ ー は 連 続
す る 一 つ の ブ
ロ ッ ク と し て
割 り 当 て ら れ
る 。 こ の 方 法
だ と 、 ブ ロ ッ
ク サ イ ズ の 最
大 値 は カ ー ネ
ル の 割 り 当 て
可 能 な 連 続 メ
モ リ ー ブ ロ ッ
ク に 制 限 さ れ
る 。 こ の 制 限
は 32 ビ ッ ト ア ー
キ テ ク チ ャ ー
で は 128 kB、 64 ビ ッ
ト ア ー キ テ ク
チ ャ ー で は 256 kB で
あ る 。 こ れ 以
降 の カ ー ネ ル
で は 、 ド ラ イ
バ は 必 要 に 応
じ て い く つ か
に わ か れ た バ
ッ フ ァ ー を 割
り 当 て る 。 デ
フ ォ ル ト で は 16
個 ま で の 部 分
に 分 割 で き る
。 す な わ ち ブ
ロ ッ ク サ イ ズ
の 最 大 値 は 非
常 に 大 き い (128 kB
の ブ ロ ッ ク 16 個
の 割 り 当 て に
成 功 す れ ば 2 MB と
な る )。 ド ラ イ
バ の 内 部 バ ッ
フ ァ ー の サ イ
ズ は コ ン パ イ
ル 時 の 定 数 で
定 義 さ れ る 。
こ れ は カ ー ネ
ル の 起 動 時 オ
プ シ ョ ン に よ
っ て 上 書 き 可
能 で あ る 。 さ
ら に ド ラ イ バ
は 実 行 時 に も
、 必 要 に 応 じ
て よ り 大 き な
一 時 バ ッ フ ァ
ー を 割 り 当 て
よ う と す る 。
し か し 実 行 時
に 大 き な 連 続
メ モ リ ー ブ ロ
ッ ク を 割 り 当
て よ う と す る
と 失 敗 す る こ
と が あ る の で
、 2.1.121 以 前 の カ
ー ネ ル で は 、
動 的 な バ ッ フ
ァ ー 割 り 当 て
は あ ま り あ て
に し な い ほ う
が 良 い (こ れ は
kerneld や kmod に よ る ド
ラ イ バ の デ マ
ン ド ロ ー ド に
関 し て も 当 て
は ま る )。 ド ラ
イ バ は ド ラ イ
ブ の メ ー カ や
モ デ ル を 特 定
し て サ ポ ー ト
す る わ け で は
な い 。 シ ス テ
ム が 起 動 す る
と 、 テ ー プ デ
バ イ ス の オ プ
シ ョ ン が ド ラ
イ ブ の フ ァ ー
ム ウ ェ ア に よ
っ て 定 義 さ れ
る 。 例 え ば 、
ド ラ イ ブ の フ
ァ ー ム ウ ェ ア
が 固 定 長 ブ ロ
ッ ク モ ー ド を
選 択 す れ ば 、
テ ー プ デ バ イ
ス は 固 定 長 ブ
ロ ッ ク モ ー ド
を 使 う こ と に
な る 。 こ の オ
プ シ ョ ン は ioctl(2)
コ ー ル を 明 示
的 に 使 え ば 変
更 で き 、 そ の
変 更 は デ バ イ
ス が ク ロ ー ズ
さ れ て 再 び オ
ー プ ン さ れ た
と き も 残 る 。
オ プ シ ョ ン の
設 定 は 、 自 動
巻 き 戻 し デ バ
イ ス と 非 巻 き
戻 し デ バ イ ス
の 両 方 に 影 響
す る 。
4 つ の サ ブ グ ル ー プ そ れ ぞ れ の デ バ イ ス に 対 し て 異 な る オ プ シ ョ ン を 与 え る こ と が で き る 。 オ プ シ ョ ン は デ バ イ ス が オ ー プ ン さ れ た と き に 効 力 を 発 揮 す る 。 例 え ば 、 シ ス テ ム 管 理 者 は あ る デ バ イ ス を 適 当 な ブ ロ ッ ク サ イ ズ の 固 定 長 ブ ロ ッ ク モ ー ド で 書 き 込 む よ う に 定 義 し 、 別 の デ バ イ ス を 可 変 長 ブ ロ ッ ク モ ー ド で 書 き 込 む よ う に で き る (ド ラ イ ブ が 両 方 の モ ー ド を サ ポ ー ト し て い れ ば )。 こ の ド ラ イ バ は 、 テ ー プ の パ ー テ ィ シ ョ ン を サ ポ ー ト し て い る (ド ラ イ ブ が サ ポ ー ト し て い る 場 合 )。 (テ ー プ の パ ー テ ィ シ ョ ン は デ ィ ス ク パ ー テ ィ シ ョ ン と は な ん の 関 係 も な い 。 パ ー テ ィ シ ョ ン 化 さ れ た テ ー プ は 、 一 つ の メ デ ィ ア に 複 数 の 論 理 テ ー プ が 存 在 す る か の よ う に 見 え る 。 ) パ ー テ ィ シ ョ ン の サ ポ ー ト は ioctl(2) に よ っ て 有 効 に で き る 。 パ ー テ ィ シ ョ ン が 変 更 さ れ る と 、 テ ー プ の 位 置 は そ れ ぞ れ の パ ー テ ィ シ ョ ン 内 部 で 保 存 さ れ る 。 パ ー テ ィ シ ョ ン の 選 択 は ioctl(2) で 行 う 。 そ れ 以 降 の テ ー プ 操 作 の 対 象 は 、 そ の パ ー テ ィ シ ョ ン に な る 。 パ ー テ ィ シ ョ ン の 切 り 替 え は 、 次 の テ ー プ 操 作 と 同 時 に 行 わ れ 、 不 必 要 な テ ー プ 移 動 を し な く て す む よ う に な っ て い る 。 一 つ の テ ー プ に お け る パ ー テ ィ シ ョ ン の 最 大 数 は コ ン パ イ ル 時 の 定 数 に よ っ て 定 義 さ れ る (通 常 は 4)。 ド ラ イ バ に は 、 テ ー プ の 1 つ ま た は 2 つ の パ ー テ ィ シ ョ ン を フ ォ ー マ ッ ト で き る よ う な ioctl(2) が 用 意 さ れ て い る 。 通 常 、 シ ス テ ム の デ フ ォ ル ト の テ ー プ デ バ イ ス に 対 す る ハ ー ド リ ン ク ま た は ソ フ ト リ ン ク と し て 、 デ バ イ ス /dev/tape が 作 成 さ れ る 。 カ ー ネ ル 2.6.2 以 降 で は 、 こ の ド ラ イ バ は sysfs デ ィ レ ク ト リ /sys/class/scsi_tape に 、 ア タ ッ チ し た デ バ イ ス と そ の デ バ イ ス に 割 当 て た パ ラ メ ー タ ー を エ ク ス ポ ー ト す る 。 デ ー タ 転 送 こ の ド ラ イ バ は 固 定 長 ブ ロ ッ ク モ ー ド と 可 変 長 ブ ロ ッ ク モ ー ド の 両 方 を サ ポ ー ト し て い る (ド ラ イ ブ が サ ポ ー ト し て い れ ば )。 固 定 長 ブ ロ ッ ク モ ー ド で は 、 ド ラ イ ブ は 決 ま っ た サ イ ズ の ブ ロ ッ ク を (複 数 個 ) 書 き 込 む 。 こ の ブ ロ ッ ク サ イ ズ は write シ ス テ ム コ ー ル の バ イ ト 数 に よ ら な い 。 可 変 長 ブ ロ ッ ク モ ー ド で は 、 write コ ー ル ご と に 一 つ の テ ー プ ブ ロ ッ ク に 書 き 込 み が 行 わ れ る 。 し た が っ て バ イ ト 数 が 対 応 す る テ ー プ ブ ロ ッ ク の サ イ ズ を 決 め る 。 テ ー プ 上 の ブ ロ ッ ク に は 、 書 き 込 み モ ー ド の 情 報 は 一 切 含 ま れ な い 。 読 み 込 み の と き に 重 要 な こ と は 、 テ ー プ の ブ ロ ッ ク サ イ ズ を 受 け 入 れ る コ マ ン ド を 使 う か ど う か だ け で あ る 。 可 変 長 ブ ロ ッ ク モ ー ド で は 、 読 み 込 み バ イ ト 数 は テ ー プ の ブ ロ ッ ク サ イ ズ と 必 ず し も 一 致 し て い な く て も 良 い 。 バ イ ト 数 が テ ー プ の 次 の ブ ロ ッ ク よ り も 大 き け れ ば 、 ド ラ イ バ は そ の デ ー タ を 返 し 、 関 数 は 実 際 の ブ ロ ッ ク サ イ ズ を 返 す 。 ブ ロ ッ ク サ イ ズ が バ イ ト 数 よ り も 大 き け れ ば 、 要 求 さ れ た 分 の デ ー タ が ブ ロ ッ ク の 先 頭 か ら 読 み 込 ま れ て 返 さ れ 、 ブ ロ ッ ク の 残 り は 破 棄 さ れ る 。 固 定 長 ブ ロ ッ ク モ ー ド で は 、 バ ッ フ ァ ー リ ン グ が 有 効 に な っ て い れ ば 読 み 込 み バ イ ト 数 は 任 意 の 大 き さ で よ い 。 バ ッ フ ァ ー リ ン グ が 無 効 の 場 合 は 、 テ ー プ の ブ ロ ッ ク サ イ ズ の 整 数 倍 で な け れ ば な ら な い 。 2.1.121 以 前 の カ ー ネ ル で は 、 バ ッ フ ァ ー リ ン グ が 有 効 な 場 合 に は 任 意 の バ イ ト 数 の 書 き 込 み が で き る 。 そ の 他 の 場 合 す べ て (2.1.121 以 前 の カ ー ネ ル で バ ッ フ ァ ー が 無 効 な 場 合 と 、 新 し い カ ー ネ ル の 場 合 ) で は 、 書 き 込 み バ イ ト 数 は テ ー プ ブ ロ ッ ク サ イ ズ の 整 数 倍 で な け れ ば な ら な い 。
2.6 カ ー ネ ル で は 、 こ の ド ラ イ バ は ユ ー ザ ー バ ッ フ ァ ー と デ バ イ ス 間 で 、 デ ー タ の 直 接 転 送 (direct transfer) を 試 み る 。 こ れ が 不 可 能 な 場 合 は 、 ド ラ イ バ の 内 部 バ ッ フ ァ ー を 用 い る 。 直 接 転 送 が で き な い 理 由 と し て は 、 ユ ー ザ ー バ ッ フ ァ ー の ア ラ イ ン メ ン ト が 適 切 で な い (デ フ ォ ル ト は 512 バ イ ト だ が HBA ド ラ イ バ に よ っ て 変 更 さ れ て い る 可 能 性 が あ る )、 ユ ー ザ ー バ ッ フ ァ ー の ペ ー ジ が SCSI ア ダ プ タ ー か ら 見 え な い 、 な ど が 考 え ら れ る 。 テ ー プ を ク ロ ー ズ す る 直 前 の テ ー プ 操 作 命 令 が 書 き 込 み で あ れ ば 、 フ ァ イ ル マ ー ク が 自 動 的 に テ ー プ へ 書 き 込 ま れ る 。 読 み 込 み 時 に フ ァ イ ル マ ー ク に 出 会 う と 、 以 下 が 実 行 さ れ る 。 フ ァ イ ル マ ー ク が 見 付 か っ た と き に バ ッ フ ァ ー に デ ー タ が 残 っ て い る と 、 バ ッ フ ァ ー の デ ー タ が 返 さ れ る 。 次 の 読 み 込 み 操 作 は 0 バ イ ト を 返 す 。 そ の 次 の 読 み 込 み は 次 の フ ァ イ ル か ら の デ ー タ を 返 す 。 記 録 デ ー タ の 末 尾 は 、 読 み 込 み 操 作 が 二 回 続 け て 0 バ イ ト を 返 し て 来 る か た ち で 通 知 さ れ る 。 三 回 目 の 読 み 込 み は エ ラ ー を 返 す 。
ioctl ド ラ イ バ は 3 つ の ioctl(2) 要 求 を サ ポ ー ト し て い る 。 st ド ラ イ バ に よ っ て 認 識 さ れ な か っ た 要 求 は SCSI ド ラ イ バ に わ た さ れ る 。 以 下 の 定 義 は /usr/include/linux/mtio.h に よ る 。
MTIOCTOP — テ ー プ 操 作 の 実 行 こ の 要 求 は (struct mtop *) 型 の 引 数 を と る 。 全 て の ド ラ イ ブ が 全 て の 操 作 を サ ポ ー ト し て い る わ け で は な い 。 ド ラ イ ブ が 操 作 を 拒 否 す る と 、 ド ラ イ バ は EIO エ ラ ー を 返 す 。
/* Structure
for MTIOCTOP − mag tape op command: */
struct mtop {
short mt_op; /* operations defined below */
int mt_count; /* how many of them */ }; 通 常
の テ ー プ 利 用
の た め の 磁 気
テ ー プ 操 作 :
MTBSF |
mt_count 個 の フ ァ イ ル マ ー ク (filemark) 分 の 後 方 ス ペ ー ス (backward space)。 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
MTBSFM |
mt_count 個 の フ ァ イ ル マ ー ク 分 の 後 方 ス ペ ー ス 。 テ ー プ の 位 置 を 最 後 の フ ァ イ ル マ ー ク の EOT 側 に 変 更 す る 。 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
MTBSR |
mt_count 個 の レ コ ー ド (テ ー プ ブ ロ ッ ク ) 分 の 後 方 ス ペ ー ス 。 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
MTBSS |
mt_count 個 の セ ッ ト マ ー ク 分 の 後 方 ス ペ ー ス 。 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
MTCOMPRESSION |
mt_count が 0 以 外 な ら 、 ド ラ イ ブ の デ ー タ 圧 縮 を 有 効 に す る 。 0 な ら 圧 縮 を 無 効 に す る 。 こ の コ マ ン ド は MODE ペ ー ジ 15 を 用 い る 。 こ れ は ほ と ん ど の DAT で サ ポ ー ト さ れ て い る 。 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
MTEOM |
(フ ァ イ ル を 追 加 す る た め に ) メ デ ィ ア の 記 録 部 分 の 最 後 ま で 進 め る 。
テ ー プ
の 内 容 を 消 去
す る 。 2.6 カ ー ネ
ル で は 、 引 数
が 0 な ら ば short erase (テ
ー プ が 空 だ と
印 を つ け る ) を
行 う 。 そ れ 以
外 の 場 合 は long erase
(全 体 を 消 去 す
る ) を 行 う 。 mt_count 個 の フ ァ イ ル マ ー ク 分 の 前 方 ス ペ ー ス (forward space)。 MTFSFM mt_count 個 の フ ァ イ ル マ ー ク 分 の 前 方 ス ペ ー ス 。 テ ー プ の 位 置 は 最 後 の フ ァ イ ル マ ー ク の BOT 側 変 更 さ れ る 。 MTFSR mt_count 個 の レ コ ー ド (テ ー プ ブ ロ ッ ク ) 分 の 前 方 ス ペ ー ス 。 MTFSS mt_count 個 の セ ッ ト マ ー ク 分 の 前 方 ス ペ ー ス 。 MTLOAD SCSI ロ ー ド コ マ ン ド を 実 行 す る 。 HP オ ー ト ロ ー ダ ー に 限 っ て 利 用 で き る 。 mt_count が 定 数 MT_ST_HPLOADER_OFFSET と あ る 数 値 の 和 で あ る 場 合 、 そ の 数 値 が ド ラ イ ブ に 送 ら れ 、 オ ー ト ロ ー ダ ー の 制 御 に 用 い ら れ る 。 MTLOCK テ ー プ ド ラ イ ブ の 扉 を ロ ッ ク す る 。
mt_count が 0 で な け れ ば 、 こ れ が 最 初 の パ ー テ ィ シ ョ ン の サ イ ズ を 与 え 、 二 番 目 の パ ー テ ィ シ ョ ン が テ ー プ の 残 り に な る 。 mt_count が 0 の 場 合 は 、 テ ー プ は 一 つ の パ ー テ ィ シ ョ ン と し て フ ォ ー マ ッ ト さ れ る 。 こ の コ マ ン ド は 、 パ ー テ ィ シ ョ ン の サ ポ ー ト が 有 効 に さ れ た ド ラ イ ブ で な け れ ば 使 え な い (以 下 の MT_ST_CAN_PARTITIONS を 見 よ )。
フ ァ ー を フ ラ ッ シ ュ す る 。 MTIOCGET を 使 っ て 状 態 を 読 み 出 す 前 に は こ の 操 作 を 行 う べ き で あ る 。
に す る 。
(re−tension) す る (テ ー プ を 最 後 ま で 巻 い た 後 、 最 初 ま で 巻 き 戻 す )。
mt_count で 指 定 さ れ た テ ー プ ブ ロ ッ ク 番 号 を シ ー ク す る 。 こ の 操 作 が 行 え る の は 、 LOCATE コ マ ン ド (デ バ イ ス 固 有 の ア ド レ ス ) を サ ポ ー ト す る SCSI−2 ド ラ イ ブ か 、 あ る い は Tandberg 互 換 の SCSI−1 ド ラ イ ブ (Tandberg, Archive, Viper, Wangtek,…) で あ る 。 デ バ イ ス 固 有 の ア ド レ ス が 利 用 さ れ て い る 場 合 は 、 ブ ロ ッ ク 番 号 は 以 前 に MTIOCPOS に よ っ て 返 さ れ た も の に す べ き で あ る 。
|