SD(4) — NEWS-OS Programmer’s Manual
名称
sd − SCSI ディスク デバイスドライバ
形式
/dev/sd[0-1][0-6][a-h]
/dev/rsd[0-1][0-6][a-h]
解説
sd は SCSI ディスクデバイスのドライバです。
リリース 3.2 以前のディスクデバイス関係のデバイスドライバは、 ハードディスク用のデバイスドライバ hd と、 光磁気ディスク (MO) 用のデバイスドライバ od、 および、CD-ROM ドライブ用のデバイスドライバ cd に 分かれていましたが、 リリース 3.3 からは sd デバイスドライバで全て扱えるようになっています。
sd デバイスドライバが認識するディスクデバイスは、次のものです。
Direct access device(デバイスタイプ=0x00)
Read-only Direct-access device(デバイスタイプ=0x05)
Optical memory device(デバイスタイプ=0x07)
標準のデバイス名は “sd” で始まり、 その後に論理ドライブ番号が続き、 さらに パーティションを表す a から h の文字が続きます。
ブロックデバイスとしてディスクデバイスにアクセスした場合、 システムのバッファリング機構を仲介するので、 物理的なディスクデバイスのレコードを気にすることなく読み書きできます。
ディスクデバイスとユーザの読み書きバッファの間でダイレクトな転送を提供する ‘RAW’ インターフェースもあります。 1 回の読み書きの呼び出しで一度入出力操作が行われるので、 RAW 入出力は多くのデータが転送されるときにかなり有効です。 RAW デバイスとしての名前は ‘r’ から始まります。
sd デバイスドライバのコンフィギュレーションファイルの指定方法は、 次のように行います。
NWS-800/900/1800/3800 シリーズの場合。
controllersdc0at iop0priority n
disksd0at sdc0 drive 0flags 0
NWS-1200/1400/1700/3200/3400/3700 シリーズの場合。
controllersdc0at hb0priority n
disksd0at sdc0 drive 0flags 0
ディスクデバイスの SCSI バス番号は、 priority n のビット 3 で指定します。
ディスクデバイスの SCSI ID 番号は、 priority n のビット 0 〜 2 で指定します。
ディスクデバイスの Logical Unit 番号は、 drive で指定します。
NWS-3100/5000/5900 シリーズの場合。
controllersdcBat ap0priority 0
disksd0at sdcB drive nflags 0
ディスクデバイスの SCSI バス番号は、 sdcB で指定します。(B が SCSI バス番号です)
ディスクデバイスの SCSI ID 番号は、 drive n のビット 0 〜 2 で指定します。
ディスクデバイスの Logical Unit 番号は、 drive n のビット 3 〜 5 で指定します。
flags には、ドライブ毎の初期設定動作を指定します。
flags のビット 0 は、RAW デバイスの書き込み禁止を制御します。 このビットが 0 の場合、 ブロックデバイスでオープンしているパーティションに対して、 RAW デバイスでの書き込み動作を禁止します。 これにより、ファイルシステムに対して、 RAW デバイスでの誤った書き込みを防ぎます。 このビットが 1 の場合、 ブロックデバイスでオープンしているパーティションに対して、 RAW デバイスでの書き込み動作を可能にします。
flags のビット 1 は、 sd デバイスドライバのエラーステータスを制御します。 このビットが 1 の場合、 sd デバイスドライバの 拡張エラーステータスを buf 構造体の b_error にセットします。
flags のビット 2 は、WRITE AND VERIFY 動作の制御をします。 このビットが 1 の場合、 書き込み動作の後、そのデータが正しく書き込まれたことを ECC によるメディアベリファイで調べます。
ディスクデバイスの先頭セクタにパーティションサイズ等のディスク情報が 書かれている場合は、その情報が使われます。 パーティションサイズ等のディスク情報が書かれていない場合は、 デバイス情報ファイル "/sys/{newsiodev,newsapbus}/sddefs.c" の デバイス情報テーブル sddevinfo に記述されたディスク情報が使われます。 パーティション情報が記述されていない場合、 ディスクデバイスの記憶容量から パーティションの情報を計算して使用します。
デバイス情報ファイルを追加変更することにより、 新しいタイプのデバイスを接続する事も可能ですが、 既存のデバイス情報テーブルに記述されたデータを変更することは避けてください。
デバイス情報テーブルの書式については、 ヘッダーファイル "/sys/{newsiodev,newsapbus}/sdreg.h" を参照してください。
メディアを取り外せるディスクデバイスの場合、 デバイスのオープン時にメディアを回転させます。 また、 デバイスをクローズした後、 一定時間以内に次のオープン動作がなければ、 メディアの回転を停止させます。
また、デバイスをオープンすると、 クローズするまでイジェクト動作が禁止されます。
サポートデバイス
sd デバイスドライバがサポートしているディスクデバイスは、 デバイス情報ファイル "/sys/{newsiodev,newsapbus}/sddefs.c" の デバイス情報テーブル sddevinfo に記述してあります。 また、デバイス情報テーブル sddevinfo に記述を追加することにより、 新しいタイプのディスクデバイスを使用することも可能です。
さらに、 デバイス情報テーブル sddevinfo に記述されていない ディスクデバイスを接続することも可能です。
この場合、エラー訂正方法や、データ先読みキャッシュなどの機能は、 そのディスクデバイスのデフォルトの値が使われます。
IOCTL
sd デバイスドライバは、
/sys/newsiodev/dkio.h
/sys/{newsiodev,newsapbus}/sdreg.h
/sys/newsiodev/scu.h
/sys/newsiodev/odreg.h
/sys/newsiodev/cdctl.h
で示される、いくつかの ioctl を備えています。 OS のバージョンにより、仕様が変更されることがありますので、 十分注意してください。
関連ファイル
/dev/sd[0-1][0-6][a-h]ブロックデバイス
/dev/rsd[0-1][0-6][a-h]RAW デバイス
/sys/{newsiodev,newsapbus}/sd_var.c
ディスクデバイス変数定義ファイル
/sys/{newsiodev,newsapbus}/sddefs.c
ディスクデバイス情報ファイル
/sys/{newsiodev,newsapbus}/sdreg.h
ioctl コマンドと構造体の定義
/sys/newsiodev/dkio.hioctl コマンドと構造体の定義
/sys/newsiodev/scu.hioctl コマンドと構造体の定義
/sys/newsiodev/odreg.h光磁気ディスク関連の ioctl コマンドの定義
/sys/newsiodev/cdctl.hCD-ROM 関連の ioctl コマンドと構造体の定義
関連事項
format(8) メディアのフォーマットコマンド
NEWS-OSRelease 4.2.1R