system management
1748182 メンバー
3431 オンライン
108759 解決策
新規ポスト

MOの状態検知について

 
nagas
時折のアドバイザー

MOの状態検知について

いつも参考にさせていただいてます。

早速ですが、MOの状態検知について質問します。

検知したい状態は

・MO媒体の未セット

・MO装置障害

・MO媒体のエラー

・MO新品媒体

・MOプロテクト

です

この内、MOプロテクトはioctl()のDIOC_DESCRIBEにて検知可能ということは判明しているのですが、それ以外を判定する方法が不明です。

デバイス・ローデバイスに対しopenをかけてerrnoをとる方法で判定しようとしているのですが、環境に左右されてしまう事が心配されています。

特に上記方法で調査中、MO媒体の未セットとMO媒体エラーが両方ともEIOで返却される為、ほかの判断方法が無いか探しています。

ioctl()等で情報がとれないものでしょうか?

どなたかご存知の方がいたら、教えていただきたいと思います。

どうかよろしくお願いします。

環境は

PC本体:c8000

OS  :HP-UX 11i

MOドライブ:HP SureStore 9.1Gb

    OpticalDrive 9100mx

MO媒体:HP rewritable magneto-optical disk C7983A

9.1GB 4096byte/sector

scsiカード:型番不明

となっています。

ご連絡おまちしています。
4件の返信4
nadachi
レギュラーアドバイザー

MOの状態検知について

> MO媒体の未セットと

あまり格好いい方法ではないですが、こちらは何とかなりそうです。"man scsi_ctl"のページに、SCSI の TEST_UNIT_READYコマンドを送るサンプルがあります。MOメディアが入っていないと、

sctl_io.cdb_status は S_CHECK_CONDITION

になり、

 sctl_io.sense & 0x0f はおそらく 2 (NOT READY)に、

 sctl_io.sense は 0x3a

sctl_io.sense は 0x00 (Medium Not Present)

にそれぞれ設定されるはずです。

nagas
時折のアドバイザー

MOの状態検知について

回答ありがとうございます

教えていただいた方法でやってみたところ

MO未セットの場合

sctl_io.sense & 0x0f は2に

MO媒体不良の場合

sctl_io.sense & 0x0f は4になりました。

これでなんとかいけそうです!

ただ、sctl_io.senseの見方がよくわかっていないので

それがなんとも勉強不足でおはずかしい状態です。

ヘッダを見るとsence_keyが入っていそうですが、見方が載っている資料はあるのでしょうか?

もうちょい調べてみます。

では、本当にありがとうございました。
nadachi
レギュラーアドバイザー

MOの状態検知について

> ヘッダを見るとsence_keyが入っていそうですが、見方が載っている資料はあるのでしょうか?

私は、CQ出版社の "SCSI-2 詳細解説"をみてやっているのですが、この本はもう書店でも見かけなくなりました。トラ技SPECIALのバックナンバーで、PCの周辺機器に関したものにも解説記事はあったと思います。

 SCSI 規格自体は、ANSI規格のドラフトなら

http://www.t10.org

"Technical Commitee T10 SCSI Storage Interface"

からたどればいろいろ見つかります (残念ながら英語ですが。)
nagas
時折のアドバイザー

MOの状態検知について

ありがとうございます、参考にさせていただきます。

色々物色しましたが、こういった資料を探すのは難しいと痛感してたところです。

助かります。

早速、物色してみます。