scdisk SCSI デバイス・ドライバー

目的

SCSI ハード・ディスク、CD-ROM (コンパクト・ディスク読み取り専用メモリー)、および読み取り/書き込み光ディスク (光ディスク・メモリー) デバイスをサポートします。

構文

#include <sys/devinfo.h>
#include <sys/scsi.h>
#include <sys/scdisk.h>
#include <sys/pcm.h>
#include <sys/mpio.h>

装置に依存するサブルーチン

標準的なハード・ディスク操作、CD-ROM 操作、および読み取り/書き込み光ディスク操作は、 オープン 閉じる、 読み取り書き込み、および Ioctl の各サブルーチンを使用してインプリメントされます。 scdisk デバイス・ドライバーには、MPIO 対応デバイスに対するサポートが追加されています。

サブルーチンのオープンとクローズ

open サブルーチンは、 ODM reserve_policy 属性に基づく予約ポリシーを適用します。 以前は、 open サブルーチンは常に SCSI2 予約を適用していました。 オープン および 閉じる サブルーチンは、デバイスが MPIO 対応デバイスである場合に、デバイスへの複数のパスの処理をサポートします。

OpenX サブルーチンは、主に診断コマンドおよびユーティリティーで使用するためのものです。 実行には適切な権限が必要です。 適切な権限なしで open サブルーチンを実行しようとすると、サブルーチンは -1 の値を戻し、 errno グローバル変数を EPERMの値に設定します。

OpenX サブルーチンに渡される 内線 パラメーターは、ターゲット・デバイスに使用される操作を選択します。 /usr/include/sys/scsi.h ファイルは、 ext パラメーターに可能な値を定義します。

内線 パラメーターには、論理 OR 演算された以下のフラグ値の任意の組み合わせを含めることができます。

項目 説明
SC_診断 選択したデバイスを診断モードにします。 このモードは、単独でしか使用できません。つまり、一度に 1 つのプロセスしか開くことができません。 デバイスが診断モードの場合、SCSI 操作は オープン 操作または 閉じる 操作中に実行され、エラー・ロギング・プロセスは使用不可になります。 診断モードでは、 閉じる および Ioctl サブルーチン操作のみが受け入れられます。 その他のデバイス対応サブルーチンは、-1 errnoグローバル変数を次の値に設定します。アクセス

デバイスを診断モードで開くことができるのは、ターゲット・デバイスが現在オープンされていない場合のみです。 診断モードでデバイスを開こうとしたときに、ターゲットデバイスがすでに開いている場合、サブルーチンは次の値を返します。-1 errnoグローバル変数を次の値に設定します。アクセス

SC_FORCED_OPEN_LUN LUN レベル・リセットをサポートする装置では、オープン・シーケンスが行われる前に別のイニシエーターによって行われた予約に関係なく、装置はリセットされます。 装置が LUN レベル・リセットをサポートしておらず、 SC_FORCED_OPEN_LUN フラグと SC_FORCE_OPEN フラグの両方が設定されている場合は、オープン・シーケンスが行われる前にターゲット・リセットが行われます。
SC_FORCED_OPEN 別のイニシエーターが装置を予約しているかどうかに関係なく、バス装置を強制的にリセットします。 SCSI バス・デバイス・リセットは、 オープン シーケンスの開始前にデバイスに送信されます。 その他の点では、 オープン 操作は正常に実行されます。
SC_RETAIN_RESERVATION (予約の変更) リリースを発行しないことにより、 閉じる 操作後の装置の予約を保持します。 このフラグは、他のイニシエーターがホスト・マシンの予約を中断しない限り、そのデバイスを使用できないようにします。
SC_NO_RESERVE OpenX サブルーチンによるデバイスへの呼び出し中に、そのデバイスの予約を禁止します。 この操作は、独自のソフトウェア手段によってアクティビティーを同期化する 2 つのプロセッサーによって装置を制御できるようにするために提供されています。
シングル (SC_SINGLE) 選択したデバイスを排他的アクセス・モードにします。 排他的アクセス・モードでデバイスを開くことができるのは、一度に 1 つのプロセスのみです。

デバイスを排他的アクセス・モードで開くことができるのは、そのデバイスが現在オープンしていない場合のみです。 排他アクセスモードでデバイスを開こうとしたときに、そのデバイスがすでに開いている場合、サブルーチンは次の値を返します。-1 errnoグローバル変数を次の値に設定します。忙しいSC_診断 フラグを シングル (SC_SINGLE) フラグと一緒に指定すると、デバイスは診断モードになります。

SC_PR_SHARED レジスター マルチイニシエーター共有デバイス環境では、オープン・シーケンスの一部として、サービス・アクション Register and Ignore Key を伴う永続予約がデバイスに送信されます。 この機能は、クラスター環境を対象としています。クラスター環境では、上位管理ソフトウェアがアドバイザリー・ロック・メカニズムに従って、イニシエーターがいつ読み取りまたは書き込みを行うかを制御する必要があります。 デバイスは永続予約をサポートする必要があります (永続予約の SCSI Primary Command バージョン 2 の説明を参照してください)。

カーネル・エクステンション機能とデバイス・サポート・プログラミングの概念 」の「 SCSI オプション、openx サブルーチンへの 」には、 オープン 操作に関するより具体的な情報が記載されています。

readx および writex サブルーチン

Readx および ライトックス サブルーチンは、生データ転送に影響を与える追加パラメーターを提供します。 これらのサブルーチンは、要求オプションを指定する 内線 パラメーターを渡します。 オプションは、ゼロ個以上の以下の値を論理 OR することによって構成されます。

項目 説明
HWRELOC (最高水準点) ハードウェア再配置の要求を示します (安全な再配置のみ)
アンサフェル 安全でないハードウェア再配置の要求を示します。
WRITEV 書き込み検査の要求を示します。

ioctl サブルーチン

ディスク デバイス・ドライバーに使用される Ioctl サブルーチン操作は、以下のカテゴリーに固有のものです。

  • ハード・ディスクおよび読み取り/書き込み光ディスク装置のみ
  • CD-ROM 装置のみ
  • ハード・ディスク、CD-ROM、および読み取り/書き込み光ディスク装置

ハード・ディスクおよび読み取り/書き込み光ディスク装置

ハード・ディスクおよび読み取り/書き込み光ディスク装置では、以下の Ioctl 操作を使用できます。

項目 説明
DKIOWRSE (データ・タイプ) エラーが発生したときに、装置に対して 書き込み コマンドを発行し、ターゲット装置のセンス・データを取得する手段を提供します。 もし、 DKIOWRSE操作は値を返します-1そしてそのステータスの有効性フィールドの値はsc_valid_sense有効なセンスデータが返されます。 それ以外の場合は、ターゲット・センス・データは省略されます。

DKIOWRSE (データ・タイプ) 操作は、診断に使用するために提供されています。 これにより、ターゲット装置がアクティブ・システム環境で作動している場合に、ターゲット装置を限定的に使用することができます。 DKIOWRSE (データ・タイプ) 操作に対する 引数 パラメーターには、 SCSI (sc_rdwrt) 構造体のアドレスが含まれます。 この構造体は、 /usr/include/sys/scsi.h ファイルに定義されています。

デバイス情報 構造は、 書き込み 操作の最大転送サイズを定義します。 最大値を超えて転送しようとすると、サブルーチンは次の値を返します。-1 errnoグローバル変数を次の値に設定します。アインヴァル。 特定の装置の要求センス・データの形式については、「 Small Computer System Interface (SCSI) 仕様 」を参照してください。

_ 翻訳不要 _DKLOGSENSE 正常に開かれたデバイスに対して ログ・センス コマンドを発行する手段を提供します。 この ioctl 操作を発行するアプリケーションは、 struct sc_log_sense ( /usr/include/sys/scsi.hで定義されている) のアドレスを渡す必要があり、構造体は次のように埋められます。
  1. 要求された LOG ページの ページ・コード および サブページ・コード
  2. PC は値 CUMUL_VALに設定されます。
  3. 割り振りの長さ -このフィールドがゼロに設定されている場合、 ページ・コード とログ・ページの長さで構成されるログ・ページ・ヘッダーのみが返されます。 このフィールドがゼロ以外の場合は、サイズが 4 バイトのログ・ページ・ヘッダーを除いたログ・ページの長さと等しくなければなりません。 ユーザーが実際のログ・ページの長さより短い割り振り長さを指定すると、要求された長さのログ・データのみが戻されます。
  4. ログ・データ には、 Ioctl 操作から返されたデータを保管するために割り振られたメモリー・アドレスが含まれます。

要求されたログ・ページが SCSI_BSR_LOG_PAGE ( /usr/include/sys/scsi.hで定義されている) の場合、 log_data は、呼び出し元によって割り振られた struct sc_bsr_log_data を指します。 また、呼び出し元は、 sizeof 構造 sc_bsr_log_data の合計と 構造体 sc_bms_log_data に割り振られたメモリーが 割り振りの長さと等しくなるように、 構造体 sc_bms_log_data のメモリーを割り振ります。

それ以外の場合 ( SCSI_BSR_LOG_PAGE以外のログ・ページの場合) は、 割り振りの長さに等しいメモリーのチャンクを指します。

SCSI ログ・センス 構造体を埋めるためのコード例を以下に示します。

struct sc_log_sense log_sense;

melog_sense, '\0', sizeof(struct sc_log_sense));
log_sense.page_code = SCSI_BSR_LOG_PAGE ;
log_sense.subpage_code = 0; 
log_sense.pc = CUMUL_VAL;
log_sense.allocation_length = 16; 
if (log_sense.allocation_length) 
 {  
 if (log_sense.page_code == SCSI_BSR_LOG_PAGE)
  {    
   log_sense.log_data = (struct sc_bsr_log_data *) malloc(sizeof(struct sc_bsr_log_data));  
  }
  else 
  { 
   log_sense.log_data = (char *) malloc(log_sense.allocation_length); 
  }      
  if (log_sense.log_data == NULL)   
  exit(-1); 
  if (log_sense.page_code == SCSI_BSR_LOG_PAGE)
  {
   bms_param_len = log_sense.allocation_length - sizeof(struct sc_scan_status);
   ((struct sc_bsr_log_data *)(log_sense.log_data))-> bms_log_data = (struct sc_bms_log_data *)
	 malloc(bms_param_len); 
  if (((struct sc_bsr_log_data *)(log_sense.log_data))-> bms_log_data == NULL)
  exit(-1);
  }
 }
 rc = ioctl(fd, DKLOGSENSE,&log_sense);
 
_ 翻訳不要 _DKLOGSENSE Ioctl 操作は、構造体 SCSI ログ・センス を使用して以下のデータを返します (rc=0 は成功を示します)。
  1. 戻りの長さ フィールドには、要求されたバイトの長さが入ります。ユーザーが割り振りの長さとしてゼロを指定した場合は、ゼロが入ります。
  2. アダプター状況SCSI 状況送信キーSCSI_ASCSCSI_ASQ は、 ログ・センス コマンドのエラー戻り状況に設定されます。
  3. ログ・データ フィールドは、 ログ・センス コマンドによって返されるデータを含むメモリーを指します。 ドライバーは、 バックグラウンド・スキャン結果ログ・ページ構造体 sc_bsr_log_data および 構造 bms_log_data のフィールドを解析して入力します。 Ioctl 呼び出し側は、データを表示するために構造フィールドを印刷します。 それ以外の場合、このメモリーは 戻りの長さのログ・データに対する 文字 * です。 このデータは、ログ・ページ・ヘッダーを除外します。
if (log_sense.page_code == SCSI_BSR_LOG_PAGE) 
{
    bms_cnt = (log_sense.returned_length - 16)/24;
    printf("Background Scan Results Log Page:\n");
    printf("Scanning Status Parameter:\n");
    bsr_log_data = (struct sc_bsr_log_data *)log_sense.log_data;
    scan_status  = &(bsr_log_data->scan_status);
    printf("Parameter Code \t:\t %x\n", scan_status->param_code);
    printf("Parameter Control Byte \t:\t %x",scan_status->param_ctrl_bits);
    printf("Parameter Length \t:\t %x\n", scan_status->param_length);
    printf("Power Age \t:\t %x\n", scan_status->power_age);
    printf("Scan Status \t:\t %x\n", scan_status->scan_status);
    printf("Scan Count \t:\t %x\n", scan_status->scan_count);
    printf("Scan Progress \t:\t %x \n", scan_status->scan_progress);
    printf("BMS Count \t:\t %x\n", scan_status->bms_count);
    printf("Background Medium Scan Parameter for %d Elements:\n",bms_cnt);
       
    for (i=0; <ibms_cnt; i++)
    {
        bms_data = bsr_log_data->bms_log_data;
        printf("Parameter Code \t:\t %x\n", bms_data->param_code);
        printf("Parameter Control Byte \t:\t%x",bms_data->param_ctrl_bits);
        printf("Parameter Length \t:\t %x\n", bms_data->param_length);
        printf("Power Age \t:\t %x\n", bms_data->power_age);
        printf("SenseKey & Reassign Status \t:\t %x\n",bms_data->status_snskey);
        printf("ASC \t:\t %x\n", bms_data->asc);
        printf("ASCQ \t:\t %x\n", bms_data->ascq);

        for (j=0; j<5; j++)
            printf("vendor_data[%d] \t:\t%x\n",j,bms_data->vendor_data[j]);

        printf("LBA \t:\t %llx\n", bms_data->lba);
    }

} else {
    Log data received is a char buffer of ‘returned_length' size.
    So print the data byte by byte.
}
_ 翻訳不要 _DKLOGSELECT

ログ選択 コマンドを発行する手段を提供します。

DKLOGSELECT ioctl 操作を発行するすべてのアプリケーションは、次のように入力された DKLOGSELECT ( /usr/include/sys/scsi.hに定義されている) のアドレスを渡す必要があります。
  1. 要求された LOG ページの ページ・コード および サブページ・コード
  2. SCSI 基本コマンド標準バージョン 4 (SPC4) 要件に従って、 PCRSPPC、および パラメーター長
  3. ログ・データ は、 ログ選択 コマンドに送信する必要があるパラメーターを含むメモリーを指します。
以下は、 SCSI_BSR_LOG_PAGE データ * *をクリアするために SCSI ログ選択 構造体を埋める例です。
struct sc_log_select log_select;

memset(&log_select, '\0', sizeof(struct sc_log_select));
log_select.page_code = SCSI_BSR_LOG_PAGE;
log_select.subpage_code = 0;
log_select.pcr = 1;
log_select.sp = 0;
log_select.pc = CUMUL_VAL;
log_select.param_length = 0;
if (log_select.param_length) 
{
 log_select.log_data = (char *)malloc(log_select.param_length);
 if (log_select.log_data == NULL) exit(-1);
} 
rc = ioctl(fd, DKLOGSELECT,&log_select);   
この Ioctl 操作は、 ログ選択 コマンドのエラー完了状況を報告する 構造体 sc_log_select (rc=0 は成功を示します) アダプター状況SCSI 状況送信キーSCSI_ASC、および SCSI_ASQ の各フィールドを使用して、以下のデータを返します。

CD-ROM デバイスのみ

以下の Ioctl 操作は、CD-ROM 装置の場合にのみ使用できます。

項目 説明
CDIOCMD 接続された CD-ROM 装置に対して SCSI コマンドを直接発行できるようにします。 CDIOCMD 操作は、以前のリリースのオペレーティング・システムでコンパイルされた CD-ROM アプリケーションのバイナリー互換性を保持します。 新しく作成した CD-ROM アプリケーションでは、代わりに DKIOCMD (D) 操作を使用することをお勧めします。 CDIOCMD 操作の場合、デバイスは診断モードで開く必要があります。 CDIOCMD 操作パラメーターは、 SC_IOCMD 構造体のアドレスを指定します。 この構造体は、 /usr/include/sys/scsi.h ファイルに定義されています。

この操作を CD-ROM 以外の装置で行おうとすると、 DKIORDSE (D) 操作として解釈されます。 この場合、 引数 パラメーターは SCSI (sc_rdwrt) 構造体として扱われます。

もし、 CDIOCMD診断モードではないデバイスで操作を試行すると、サブルーチンは次の値を返します。-1 errnoグローバル変数を次の値に設定します。アクセス。 特定の装置の要求センス・データの形式については、「 Small Computer System Interface (SCSI) 仕様 」を参照してください。

注: 診断モードは、 CDIOCMD および DKIOCMD (D) 操作にのみ必要です。

ハード・ディスク、CD-ROM、および読み取り/書き込み光ディスク装置

ハード・ディスク、CD-ROM、および読み取り/書き込み光ディスク装置には、以下の Ioctl 操作を使用できます。

項目 説明
IOCINFO /usr/include/sys/devinfo.h ファイルに定義されている devinfo 構造体を戻します。 イオシINFO 命令は、 Ioctl サブルーチンを使用するすべてのデバイス・ドライバーに対して定義される唯一の命令です。 残りの操作はすべて、ハード・ディスク、CD-ROM、および読み取り/書き込み光ディスク装置に固有のものです。
DKIORDSE (D) エラーが発生したときに、装置に対して 読み取り コマンドを発行し、ターゲット装置のセンス・データを取得する手段を提供します。 もし、キオルセ操作は値を返します-1そしてそのステータスの有効性フィールドの値はsc_valid_sense有効なセンスデータが返されます。 それ以外の場合は、ターゲット・センス・データは省略されます。

DKIORDSE (D) 操作は、診断に使用するために提供されています。 これにより、ターゲット装置がアクティブ・システム環境で作動している場合に、ターゲット装置を限定的に使用することができます。 DKIORDSE (D) 操作に対する 引数 パラメーターには、 SCSI (sc_rdwrt) 構造体のアドレスが含まれます。 この構造体は、 /usr/include/sys/scsi.h ファイルに定義されています。

デバイス情報 構造は、 読み取り 操作の最大転送サイズを定義します。 最大値を超えて転送しようとすると、サブルーチンは次の値を返します。-1 errnoグローバル変数を次の値に設定します。アインヴァル。 特定の装置の要求センス・データの形式については、「 Small Computer System Interface (SCSI) 仕様 」を参照してください。

注: CD-ROM 装置からセンス・データを取得するために 読み取り コマンドを発行すると、 DKIORDSE (D) 操作の代わりに CDIORDSE 操作が使用されることがあります。 DKIORDSE (D) が推奨される操作です。
DKIOCMD (D) 装置が診断モードで正常にオープンされると、 DKIOCMD (D) 操作は、指定された装置に SCSI コマンドを発行する手段を提供します。 もし、 DKIOCMD についてデバイスが診断モードではないときに操作が発行されると、サブルーチンは値を返します。-1 errnoグローバル変数を次の値に設定します。アクセス。 デバイス・ドライバーは、この操作の失敗に対してエラー・リカバリーもロギングも実行しません。

SCSI 状況バイトおよびアダプター状況バイトは、 arg パラメーターを介して戻されます。このパラメーターには、( /usr/include/sys/scsi.h ファイルに定義されている) sc_iocmd 構造体のアドレスが入っています。 もし、 DKIOCMD について操作が失敗した場合、サブルーチンは値を返します-1 errno グローバル変数をゼロ以外の値に設定します。 この場合、呼び出し側は、戻された状況バイトを評価して、操作が失敗した理由と取るべきリカバリー・アクションを判別する必要があります。

デバイス情報 構造は、コマンドの最大転送サイズを定義します。 最大値を超えて転送しようとすると、サブルーチンは次の値を返します。-1 errnoグローバル変数を次の値に設定します。アインヴァル。 特定の装置の要求センス・データの形式については、「 Small Computer System Interface (SCSI) 仕様 」を参照してください。

注: 診断モードは、 CDIOCMD および DKIOCMD (D) 操作にのみ必要です。
DKPMR (D) 装置が正常にオープンされたときに、SCSI メディア除去防止コマンドを発行します。 このコマンドは、装置がクローズされるか、パワーオフされて再びオンになるか、または DKAMR (D) 操作が発行されるまで、メディアが排出されないようにします。 DKPMR (D) 操作の 引数 パラメーターがヌルです。 DKPMR (D) 命令が正常に実行されると、サブルーチンは値 0 を戻します。 デバイスがSCSIハードディスクの場合、 DKPMR操作は失敗し、サブルーチンは値を返します。-1 errnoグローバル変数を次の値に設定します。アインヴァル。 もし、 DKPMRその他の理由で操作が失敗した場合、サブルーチンは値を返します。-1 errnoグローバル変数を次の値に設定します。イーアイオー
DKAMR (D) 装置が正常にオープンされた時に, 媒体除去許可コマンドを出します。 その結果、ドライブのイジェクト・ボタンまたは DKEJECT (デッキ) 操作のいずれかを使用して、メディアをイジェクトすることができます。 この Ioctl引数 パラメーターがヌルです。 DKAMR (D) 命令が正常に実行されると、サブルーチンは値 0 を戻します。 デバイスがSCSIハードディスクの場合、 DKAM操作は失敗し、サブルーチンは値を返します。-1 errnoグローバル変数を次の値に設定します。アインヴァル。 この操作が失敗した場合、サブルーチンは次の値を返します。-1 errnoグローバル変数を次の値に設定します。イーアイオー
DKEJECT (デッキ) 装置が正常にオープンされたときに、ドライブにイジェクト・メディア・コマンドを発行します。 この操作の 引数 パラメーターがヌルです。 DKEJECT (デッキ) 命令が正常に実行されると、サブルーチンは値 0 を戻します。 デバイスがSCSIハードディスクの場合、 DKJECT操作は失敗し、サブルーチンは値を返します。-1 errnoグローバル変数を次の値に設定します。アインヴァル。 この操作が失敗した場合、サブルーチンは次の値を返します。-1 errnoグローバル変数を次の値に設定します。イーアイオー
DKFORMAT (D) 装置が正常にオープンされたときに、指定された装置にフォーマット・ユニット・コマンドを発行します。

この操作の 引数 パラメーターがヌルの場合、フォーマット・ユニットはフォーマット・オプション有効 (FOV) ビットを 0 に設定します (つまり、ドライブのデフォルト設定を使用します)。 DKFORMAT (D) 操作の 引数 パラメーターが NULL でない場合、障害リスト・ヘッダーの最初のバイトは、 引数 パラメーターによってアドレス指定された最初のバイトに指定された値に設定されます。 これにより、アプリケーションを作成して、特定のタイプの読み取り/書き込み光ディスク・メディアを一意的にフォーマットすることができます。

ドライバーは、最初に FmtData および CmpLst ビットを 0 に設定しようとします。 これが失敗した場合、ドライバーはこれらのビットの残りの 3 つの順列を試行します。 4 つの順列がすべて失敗すると、この操作は失敗し、サブルーチンは errno グローバル変数を値 EIO 社に設定します。

もし、 DKフォーマットハードディスクに対して操作が指定されている場合、サブルーチンは値を返します。-1 errnoグローバル変数を次の値に設定します。アインヴァル。 もし、 DKフォーマットデバイスが排他アクセスモードではないときに操作が試行されると、サブルーチンは値を返します。-1 errnoグローバル変数を次の値に設定します。アクセス。 メディアが書き込み禁止の場合、サブルーチンは次の値を返します。-1 errnoグローバル変数を次の値に設定します。 EWRプロテクト。 フォーマットユニットがタイムアウト値を超えた場合、サブルーチンは次の値を返します。-1 errnoグローバル変数を次の値に設定します。タイムアウト。 この操作が失敗した場合、サブルーチンは次の値を返します。-1 errnoグローバル変数を次の値に設定します。イーアイオー

DKAUDIO (D) 指定されたデバイスに対して音声再生コマンドを発行し、デバイスの出力ポート上のボリュームを制御します。 音声再生コマンドには、再生、一時停止、再開、停止、トラック数の判別、現在の音声操作の状況の判別などがあります。 DKAUDIO (D) 操作は、CD-ROM ドライブの出力ポートを介してのみ音声を再生します。 この操作の arg パラメーターは、 /usr/include/sys/scdisk.h ファイルに定義されている cd_audio_cmds 構造体のアドレスです。 排他的アクセス・モードが必要です。

もしDKオーディオデバイスのオーディオサポート属性がNoに設定されている場合に操作が試行されると、サブルーチンは値を返します。-1 errnoグローバル変数を次の値に設定します。アインヴァル。 もし、 DKオーディオ操作が失敗した場合、サブルーチンは値を返します-1 errno グローバル変数をゼロ以外の値に設定します。 この場合、呼び出し側は、戻された状況バイトを評価して、操作が失敗した理由と取るべきリカバリー・アクションを判別する必要があります。

DK CD_ モード 指定された装置の CD-ROM データ・モードを決定または変更します。 CD-ROM データ・モードは、デバイスから SCSI バスを介して読み取られるデータに使用されるブロック・サイズおよび特殊ファイルを指定します。 DK CD_ モード 操作は、以下の CD-ROM データ・モードをサポートします。
CD-ROM データ・モード 1
ロー・ファイル (dev/rcd*) とブロック・スペシャル・ファイル (/dev/cd*) の両方による 512 バイトのブロック・サイズ
CD-ROM データ・モード 2 フォーム 1
ロー・ファイル (dev/rcd*) とブロック・スペシャル・ファイル (/dev/cd*) の両方による 2048 バイトのブロック・サイズ
CD-ROM データ・モード 2 フォーム 2
ロー (Dev/rcd*) スペシャル・ファイルのみによる 2336 バイトのブロック・サイズ
CD-DA (コンパクト・ディスク・デジタル音声)
ロー (Dev/rcd*) 特殊ファイルのみによる 2352 バイトのブロック・サイズ
DVD-ROM
ロー・ファイル (/dev/rcd *) とブロック・スペシャル・ファイル (/dev/cd *) の両方による 2048 バイトのブロック・サイズ
DVD-RAM
ロー・ファイル (/dev/rcd *) とブロック・スペシャル・ファイル (/dev/cd *) の両方による 2048 バイトのブロック・サイズ
DVD-RW
ロー・ファイル (/dev/rcd *) とブロック・スペシャル・ファイル (/dev/cd *) の両方による 2048 バイトのブロック・サイズ

DK_CD_MODE arg パラメーターには、 /usr/include/sys/scdisk.h ファイルに定義されている mode_form_op 構造体のアドレスが入っています。 DK CD_ モード 操作で CD-ROM データ・モードを決定または変更するには、次のように設定します。action変更モード・フォーム 構造体のフィールドは、以下のいずれかの値になります。

CD_GET_MODE (D_GET_MODE)
現行 CD-ROM データ・モードを戻します。cd_mode_form装置が正常にオープンされたときの モード・フォーム操作 構造体のフィールド。
CD_CHG_MODE (C)
CD-ROM データ・モードを, システムに指定されたモードに変更します。cd_mode_formモード・フォーム操作 構造体のフィールド (装置が排他的アクセス・モードで正常にオープンされた場合)。

CD-ROM が (モード選択密度コードによって) 異なるデータ・モード用に構成されていない場合に、CD-ROM データ・モードを (設定することによって) 変更しようとすると、actionの分野モード変更フォーム構造を設定CD_CHG_MODE )、サブルーチンは値を返します。-1そして、エラーグローバル変数をアインヴァル。 CD-ROMモードをDVDモードに変更しようとすると、戻り値は-1そしてそのエラーグローバル変数をアインヴァル

もし、 DK_CD_モード操作CD_CHG_MODEデバイスが排他アクセスモードではないときに試行された場合、サブルーチンは値を返します。-1 errnoグローバル変数を次の値に設定します。アクセス。 この操作が失敗した場合、サブルーチンは次の値を返します。-1 errnoグローバル変数を次の値に設定します。イーアイオー

DK PASSTHRU (DK パス RU) 装置が正常にオープンされると、 DK PASSTHRU (DK パス RU) 操作は、指定された装置に SCSI コマンドを発行する手段を提供します。 この操作が失敗すると、デバイス・ドライバーは限定されたエラー・リカバリーを実行します。 DK PASSTHRU (DK パス RU) 操作は、 SC_診断内線 引数を指定した OpenX コマンドを必要としないという点で、 DKIOCMD (D) 操作とは異なります。 このため、他の操作によって使用されているデバイスに対して DK PASSTHRU (DK パス RU) 操作を発行することができます。

SCSI 状況バイトおよびアダプター状況バイトは、 arg パラメーターを介して戻されます。このパラメーターには、 sc_passthru 構造体 ( /usr/include/sys/scsi.h ファイルに定義されている) のアドレスが入っています。 もし、 DK_パススルー操作が失敗した場合、サブルーチンは値を返します-1 errno グローバル変数をゼロ以外の値に設定します。 これが発生した場合、呼び出し元は、戻された状況バイトを評価して、操作が失敗した理由と、実行する必要があるリカバリー・アクションを判別する必要があります。

  もしDK_パススルー操作は失敗しました。 sc_passthru構造体に無効な値がある場合、サブルーチンは値を返します。-1 errnoグローバル変数をアインヴァルEINVAL_ARG フィールドは、無効な値を持つフィールドのフィールド番号 (バージョン・フィールドの場合は 1 から始まる) に設定されます。 EINVAL_ARG フィールドの値が 0 の場合は、障害に関する追加情報が入手できないことを示します。

DK PASSTHRU (DK パス RU) 操作はさらに、要求を発行する前に他の入出力要求を静止する要求と、入出力要求を静止しない要求に分割されます。 これらのサブディビジョンは、 sc_passthru 構造の devflags フィールドに基づいています。 sc_passthru 構造の devflags フィールドの値が SC_MIX_IOの場合、 DK PASSTHRU (DK パス RU) 操作は他の入出力要求と混合されます。 装置にデータを書き込む SC_MIX_IO 要求は禁止されており、失敗します。 これが起こるとき-1が返され、errnoグローバル変数が次のように設定されます。アインヴァルsc_passthru 構造の devflags フィールドの値が SC_QUIESCE_IOの場合、他のすべての入出力要求は、装置に対して DK PASSTHRU (DK パス RU) 要求が発行される前に静止されます。 もしSC_QUIESCE_IOリクエストにはタイムアウト値フィールドを0に設定すると、 DK_パススルーリクエストは戻りコードで失敗します-1 errnoグローバル変数は次のように設定されます。アインヴァル、 そしてその無効な引数フィールドの値はSC_PASSTHRU_INV_TO (定義:/usr/include/sys/scsi.hファイル)。 もしSC_QUIESCE_IOリクエストのタイムアウト値が0以外で、デバイスに対して大きすぎる場合、 DK_パススルーリクエストは戻りコードで失敗します-1 errnoグローバル変数は次のように設定されます。アインヴァル無効な引数フィールドの値はSC_PASSTHRU_INV_TO (定義:/usr/include/sys/scsi.hファイル)、およびタイムアウト値許容される最大値に設定されます。

  sc_passthru 構造のバージョン・フィールドは SC_VERSION_2の値に設定でき、ユーザーは以下のフィールドを指定できます。
  • 変数 cdb_ptr は、変数 SCSI cdb を含むバッファーを指すポインターです。
  • 変数 cdb_length は、 変数 cdb_ptr フィールドが指す CDB 変数の長さを決定します。
DK PASSTHRU (DK パス RU) ioctl 要求の完了時に、 残差 フィールドは、装置がこの要求に対して完全には満たさなかった残りのデータを示します。 正常終了の場合、 残差 フィールドは、要求されたすべてのデータが装置にないか、または装置のデータ量が要求された量より少ないことを示します。 失敗の完了時に、ユーザーは 状況の妥当性 フィールドを調べて、有効な SCSI バスの問題が存在するかどうかを判別する必要があります。 この場合、 残差 フィールドは、この要求に対して装置が完了できなかったバイト数を示します。
  デバイス情報 構造は、コマンドの最大転送サイズを定義します。 最大転送サイズを超えて転送しようとすると、サブルーチンは次の値を返します。-1 errnoグローバル変数を次の値に設定します。アインヴァルを設定し、無効な引数フィールドの値をSC_PASSTHRU_INV_D_LEN (定義:/usr/include/sys/scsi.hファイル)。

特定の装置の要求センス・データの形式については、「 Small Computer System Interface (SCSI) 仕様 」を参照してください。

DKPRES_READKEYS (DKPRES_READKEY)

デバイスが正常に開かれると、 DKPRES_READKEYS (DKPRES_READKEY) 操作は、デバイス上の永続予約登録キーを読み取る手段を提供します。 DKPRES_READKEYS (DKPRES_READKEY) に対する 引数 パラメーターには、 dk_pres_in 構造体のアドレスが含まれます。 この構造体は、 /usr/include/sys/scdisk.hに定義されています。 ユーザーは、戻される登録済みキーのバッファー域とサイズを指定する必要があります。 戻りの長さ 変数は、戻されるバイト数を設定します。

共有アクセス環境またはクラスター環境では、この操作により、特定の LUN のすべての登録済みキーが識別されます。

注: DKPRES_READKEYS (DKPRES_READKEY) 操作および後続の永続予約関連操作の場合、戻り値と SCSI 状況の解釈は以下のようになります。
  • 呼び出しが正常に試行されると、0 が戻されます。
  • 通話が失敗した後、-1返され、エラーグローバル変数が設定されます。 具体的な説明についてはエラー価値、参照/usr/include/erno.h 。 さらに、SCSI 状況は、センス・コード、ASC、および ASCQ とともに、コマンドが失敗した理由に関する詳細情報を提供するように設定されています。 SCSI 状況障害コードの解釈については、SCSI 仕様を参照してください。
DKPRES_READRES (DKPRES_READRES

装置が正常にオープンされると、 DKPRES_READRES (DKPRES_READRES 操作は、装置上の永続予約キーを読み取る手段を提供します。 DKPRES_READKEYS (DKPRES_READKEY) に対する 引数 パラメーターには、 dk_pres_in 構造体のアドレスが含まれます。 この構造体は、 /usr/include/sys/scdisk.hに定義されています。 ユーザーは、戻される予約情報のバッファー域とサイズを指定する必要があります。 戻りの長さ 変数は、戻されるバイト数を設定します。 共有アクセス環境またはクラスター環境では、この操作により、予約を保持する 1 次イニシエーターが識別されます。

DKPRES_CLEAR (D)

装置が正常にオープンされると、 DKPRES_CLEAR (D) 操作は、装置上のすべての永続予約キーおよび登録キーをクリアする手段を提供します。 DKPRES_CLEAR (D) に対する 引数 パラメーターには、 dk_pres_clear 構造体のアドレスが含まれます。 この構造体は、 /usr/include/sys/scdisk.hに定義されています。

注意: 注意: DKPRES_CLEAR (D) 操作を発行する際には注意してください。 この操作により、装置は予約されないままになり、外部イニシエーターが装置にアクセスできるようになる可能性があります。
「DKPRES_PREEMPT」

デバイスが正常に開かれると、 「DKPRES_PREEMPT」 操作は、デバイス上の永続予約キーまたは登録キーを優先使用する手段を提供します。 「DKPRES_PREEMPT」 に対する 引数 パラメーターには、 dk_pres_preempt 構造体のアドレスが含まれます。 この構造体は、 /usr/include/sys/scdisk.hに定義されています。 ユーザーは、優先使用されるデバイス上の第 2 パーティー・イニシエーター・キーを指定する必要があります。 第 2 当事者のイニシエーターがデバイスに対する予約を保持している場合、優先使用を発行したイニシエーターが予約の所有者になります。 それ以外の場合は、第 2 関係者のイニシエーター・アクセス権限が取り消されます。

この操作を成功させるには、最初にイニシエーターをデバイスに登録してから、優先使用を行う必要があります。 共用アクセス環境またはクラスター環境では、この操作は、作動可能または作動不能のイニシエーター、または共用グループの一部として認識されないイニシエーターを優先使用するために使用されます。

DKPRES_PREEMPT_ABORT

この操作は 「DKPRES_PREEMPT」と同じですが、デバイスは、優先使用されたイニシエーターに属するタスクを中止する際に SCSI Primary Command Specification に従います。

DKプレスレジスター

装置が正常にオープンされると、 DKプレスレジスター 操作は鍵を装置に登録する手段を提供します。 キーは、 ODM Customize Attribute から抽出され、構成時にデバイス・ドライバーに渡されます。 DKプレスレジスター に対する 引数 パラメーターには、 dk_pres_register 構造体のアドレスが含まれます。 この構造体は、 /usr/include/sys/scdisk.hに定義されています。

共有アクセス環境またはクラスター環境では、この操作によりデバイスへの登録が試行され、その後、読み取り予約を使用してデバイスが予約されているかどうかが判別されます。 デバイスが予約されていない場合は、デバイスとともに予約が行われます。

DK_RWBUFFER (D) デバイスが正常にオープンされると、 DK_RWBUFFER (D) 操作は、指定されたデバイスに対して 1 つ以上の SCSI 書き込みバッファー・コマンドを発行する手段を提供します。 デバイス・ドライバーは、この操作の失敗時に完全なエラー・リカバリーを実行します。 DK_RWBUFFER (D) 操作は、 DKIOCMD (D) 操作とは異なり、装置の排他的オープンを必要としません (例えば、 SC_診断内線 引数を指定した OpenX )。 したがって、 DK_RWBUFFER (D) 操作は、他のユーザーが使用中の装置に対して発行することができます。 これは、 DK PASSTHRU (DK パス RU) Ioctl 操作で使用できます。この操作 ( DK_RWBUFFER (D)など) は、装置の排他的オープンを必要としません。

arg パラメーターには、 sc_rwbuffer 構造 ( /usr/include/sys/scsi.h ファイルに定義されている) のアドレスが入っています。 DK_RWBUFFER (D) ioctl を呼び出す前に、この構造体のフィールドを必要な動作に従って設定する必要があります。 モード フィールドは、 SCSI 基本コマンド (SPC) 仕様で定義されている SCSI コマンド記述子ブロック (CDB) の モード フィールドに対応します。 サポートされるモードは、ヘッダー・ファイル /usr/include/sys/scsi.hにリストされています。

デバイス・ドライバーは、操作全体が完了するまで、書き込みバッファー ioctl を発行するイニシエーターからの他のすべての入出力要求を静止します。 書き込みバッファー ioctl が完了すると、静止したすべての入出力要求が再開されます。

 

SCSI 状況バイトおよびアダプター状況バイトは、 arg パラメーターを介して戻されます。このパラメーターには、 sc_rwbuffer 構造 ( /usr/include/sys/scsi.h ファイルに定義されている) のアドレスが入っています。 もし、 DK_RWバッファ操作が失敗した場合、サブルーチンは値を返します-1そして、エラーグローバル変数をゼロ以外の値に設定します。 この場合、呼び出し側は、戻された状況バイトを評価して、操作が失敗した理由と取るべきリカバリー・アクションを判別する必要があります。

もしDK_RWバッファ操作は失敗しました。 sc_rwバッファ構造体に無効な値がある場合、サブルーチンは値を返します。-1そして、エラーグローバル変数にアインヴァル

 

DK_RWBUFFER (D) ioctl を使用すると、ユーザーは、1 回の ioctl 呼び出しで複数の SCSI 書き込みバッファー・コマンド (CDB) をデバイスに発行できます。 マイクロコード・イメージ全体へのポインターをユーザーが提供するマイクロコード・ダウンロードなどのアプリケーションで役立ちますが、デバイス・バッファーのサイズ制限のため、ダウンロード全体が完了するまでイメージをフラグメントで送信する必要があります。

スクロール・バッファー 構造体の フラグメント・サイズ メンバーが データ長に等しい状態で DK_RWBUFFER (D) ioctl が呼び出されると、SCSI CDB の バッファー・オフセット および バッファー IDスクロール・バッファー 構造体に指定された値に設定された単一の Write Buffer コマンドがデバイスに対して発行されます。

 

データ長フラグメント・サイズ より大きく、 フラグメント・サイズ がゼロ以外の値である場合は、複数の書き込みバッファーが装置に対して発行されます。 発行された書き込みバッファー・コマンド (SCSI CDB) の数は、 データ長 を必要な フラグメント・サイズで除算することによって計算されます。 この値は、 データ長フラグメント・サイズの偶数の倍数ではなく、最終的なデータ転送がこの残量のサイズである場合に 1 ずつ増分されます。 発行される Write Buffer コマンドごとに、 バッファー・オフセット は、 スクロール・バッファー 構造に指定されている値に設定されます (SCSD デバイスへのマイクロコード・ダウンロードでは、この値を 0 に設定する必要があります)。

  最初に発行されるコマンドの場合、 バッファー ID は、 スクロール・バッファー 構造体に指定されている値に設定されます。 後続の Write Buffer コマンドが発行されるたびに、 バッファー ID は、すべてのフラグメントが送信されるまで 1 ずつ増分されます。 単一の DK_RWBUFFER (D) ioctl による不連続 バッファー IDへの書き込みはサポートされていません。 この機能が必要な場合は、呼び出しごとに バッファー ID を適切に設定して、複数の DK_RWBUFFER (D) ioctls を発行する必要があります。
注: ioctl 呼び出し間で静止される入出力要求はありません。
 

フラグメント・サイズ がゼロに設定されている場合、 エインヴァルエラー番号 が返されます。 1 つの SCSI 書き込みバッファー・コマンドでバッファー全体を送信したい場合は、このフィールドを データ長に設定する必要があります。 フラグメント・サイズデータ長より大きい場合も、 エインヴァル のエラーが返されます。

 

パラメーター・リストの長さ (フラグメント・サイズ) とバッファー・オフセットの合計が、装置の指定されたバッファーの容量を超えることはできません。 フラグメント・サイズ 設定がこの要件を満たしていることを確認するのは、Write Buffer ioctl の呼び出し側の責任です。 デバイスより大きい フラグメント・サイズ では、デバイスで SCSI エラーが発生する可能性があります。Write Buffer ioctl はこのエラーを報告しますが、リカバリーのためのアクションは行いません。

 

デバイス情報 構造は、コマンドの最大転送サイズを定義します。 最大転送サイズを超えて転送しようとすると、サブルーチンは次の値を返します。-1そして、エラーグローバル変数をアインヴァル。 特定の装置の要求センス・データの形式については、「 Small Computer System Interface (SCSI) 仕様 」を参照してください。

DKPATHIOCMD (D) このコマンドは、MPIO 対応デバイスでのみ使用可能です。 DKPATHIOCMD (D) コマンドは、単一の scdisk_pathiocmd 構造体を指すポインター引数を入力として取ります。 DKPATHIOCMD (D) コマンドは、通常のパス選択ではなく入力パスが使用されることを除き、 DKIOCMD (D) コマンドとまったく同じように動作します。 DKPATHIOCMD (D) パスは、 DKPATHFORCE (D) ioctl コマンドによって指定されたパスに関係なく、 DKIOCMD (D) コマンドに使用されます。 強制されている間は、パスを構成解除することはできません。
DKPATHFORCE (D) このコマンドは、MPIO 対応デバイスでのみ使用可能です。 DKPATHFORCE (D) コマンドは、入力として ushort パス ID を受け取ります。 パス ID は、 CuPath ODM内のいずれかのパス ID に対応している必要があります。 パス ID は、後続のすべての入出力コマンドに使用されるパスを指定し、前の DKPATHFORCE (D) パスをオーバーライドします。 ゼロ引数は、パスの強制終了と通常の MPIO パス選択の再開を指定します。 DKPATHIOCMD (D) コマンドで送信された入出力コマンドは、 DKPATHFORCE (D) オプションをオーバーライドし、 scdisk_pathiocmd 構造で指定されたパスに入出力コマンドを送信します。
_ 翻訳不要 _DKPATHRWBUFFER このコマンドは、MPIO 対応デバイスでのみ使用可能です。 _ 翻訳不要 _DKPATHRWBUFFER コマンドは、単一の scdisk_pathiocmd 構造体を指すポインター引数を入力として取ります。 _ 翻訳不要 _DKPATHRWBUFFER コマンドは、通常のパス選択ではなく入力パスが使用されることを除き、 ドウォン・ BUFFER コマンドとまったく同じように動作します。 _ 翻訳不要 _DKPATHRWBUFFER パスは、 DKPATHFORCE (D) ioctl コマンドによって指定されたパスに関係なく、 ドウォン・ BUFFER コマンドに使用されます。
DKPATHPASSTHRU このコマンドは、MPIO 対応デバイスでのみ使用可能です。 DKPATHPASSTHRU コマンドは、単一の scdisk_pathiocmd 構造体を指すポインター引数を入力として取ります。 DKPATHPASSTHRU コマンドは、通常のパス選択ではなく入力パスが使用されることを除き、 DKPASSTHRU (D) コマンドとまったく同じように動作します。 DKPATHPASSTHRU パスは、 DKPATHFORCE (D) ioctl コマンドによって指定されたパスに関係なく、 DKPASSTHRU (D) コマンドに使用されます。
DKPCMPASSTHRU (D) このコマンドは、MPIO 対応デバイスでのみ使用可能です。 DKPCMPASSTHRUコマンドは、AIX®で定義されていないPCM固有の構造体を入力として受け取る。PCM固有の構造体はPCMに直接渡される。 この構造は、PCM との間で情報を移動するために使用できます。

装置要件

SCSI ハード・ディスク、CD-ROM、および読み取り/書き込み光ディスクには、以下のハードウェア要件があります。

  • SCSI ハード・ディスクおよび読み取り/書き込み光ディスクは、ブロック当たり 512 バイトのブロック・サイズをサポートする必要があります。
  • モード・センスがサポートされている場合は、SCSI ハード・ディスクおよび読み取り/書き込み光ディスクに対して書き込み保護 (WP) ビットもサポートされている必要があります。
  • SCSI ハード・ディスクおよび読み取り/書き込み光ディスクは、リカバリーされたエラーの要求センス・データのハードウェア再試行カウントをバイト 16 および 17 で報告する必要があります。 ハード・ディスクまたは読み取り/書き込み光ディスクがハード・ディスクをサポートしていない場合、システム・エラー・ログに、早期のドライブ障害が示されている可能性があります。
  • SCSI CD-ROM および読み取り/書き込み光ディスク・ドライブは、10 バイトの SCSI 読み取りコマンドをサポートする必要があります。
  • SCSI ハード・ディスクおよび読み取り/書き込み光ディスクは、SCSI 書き込みおよび検査コマンドと 6 バイトの SCSI 書き込みコマンドをサポートする必要があります。
  • 読み取り/書き込み光メディアに対して フォーマット コマンド操作を使用するには、ドライブが、SCSI フォーマット・ユニット・コマンドの障害リスト・ヘッダーのフォーマット・オプション有効 (FOV) ビットを 0 に設定することをサポートしている必要があります。 ドライブがこれをサポートしていない場合、ユーザーは DKFORMAT (D) 操作を使用してメディアをフォーマットするようにドライブのアプリケーションを作成できます。
  • SCSI CD-ROM ドライブが CD_ROM データ・モード 1を使用する場合、ブロック当たり 512 バイトのブロック・サイズをサポートする必要があります。
  • SCSI CD-ROM ドライブが CD_ROM データ・モード 2 フォーム 1を使用する場合、ブロック当たり 2048 バイトのブロック・サイズをサポートする必要があります。
  • SCSI CD-ROM ドライブが CD_ROM データ・モード 2 フォーム 2を使用する場合、ブロック当たり 2336 バイトのブロック・サイズをサポートする必要があります。
  • SCSI CD-ROM ドライブが CD_DA (D) モードを使用する場合、ブロック当たり 2352 バイトのブロック・サイズをサポートする必要があります。
  • DKAUDIO (D) (音声再生) 操作を使用してボリュームを制御するには、デバイスが SCSI-2 モード・データ・ページ 0xEをサポートしている必要があります。
  • DKAUDIO (D) (音声再生) 操作を使用するには、デバイスが以下の SCSI-2 オプション・コマンドをサポートしている必要があります。
    • サブチャネル読み取り
    • 再開の休止
    • 音声 MSF の再生
    • 音声トラック索引の再生
    • TOC の読み取り

エラー状態

ディスク デバイス・ドライバーを使用する場合の Ioctlオープン 読み取り、および 書き込み サブルーチンの可能な エラー番号 値には、以下のものがあります。

項目 説明
EACCES 以下のいずれかの状況を示します。
  • 診断モードまたは排他的アクセス・モードで現在オープンしている装置をオープンしようとしました。
  • すでにオープンされている装置で診断モード・セッションをオープンしようとしました。
  • 診断モードのときに、ユーザーが Ioctl または 閉じる サブルーチン以外のサブルーチンを試みました。
  • 診断モードでないデバイスに対して DKIOCMD (D) または CDIOCMD 操作が試行されました。
  • 排他的アクセス・モードでないデバイスで DK_CD_MODE ioctl サブルーチン操作が試行されました。
  • 排他的アクセス・モードでないデバイスに対して DKFORMAT (D) 操作が試行されました。
EBUSY 以下のいずれかの状況を示します。
  • すでにオープンされている装置で、排他的アクセス・モードでセッションをオープンしようとしました。
  • ターゲット・デバイスは別のイニシエーターによって予約されています。
EFAULT 無効なユーザー・アドレスを示します。
E フォーマット ターゲット装置に、非フォーマットのメディアまたは非互換フォーマットのメディアがあることを示します。
EINPROGRESS CD-ROM ドライブで音声再生操作が進行中であることを示します。
EINVAL 以下のいずれかの状況を示します。
  • SCSI-2 再生オーディオ・コマンドを使用するように構成されていないデバイスに対して、 DKAUDIO (D) (再生オーディオ) 操作が試行されました。
  • 読み取り または 書き込み サブルーチンが、ブロック・サイズの偶数倍でない N バイト パラメーターを指定しました。
  • 255 バイトを超えるセンス・データ・バッファー長は、 CDIORDSEDKIOWRSE (データ・タイプ)、または DKIORDSE (D) Ioctl サブルーチン操作には無効です。
  • データ・バッファー長が、 CDIORDSECDIOCMDDKIORDSE (D)DKIOWRSE (データ・タイプ)、または DKIOCMD IOCTL サブルーチン操作の デバイス情報 構造体に定義された最大値を超えました。
  • サポートされない Ioctl サブルーチン命令が試みられました。
  • CD-ROM ドライブで許可されている長さより大きいデータ・バッファー長は、 CDIOCMD ioctl サブルーチン操作には無効です。
  • まだ開かれているデバイスを構成しようとしました。
  • 誤った構成コマンドが指定されました。
  • DKPMR (D) (メディアの取り外し禁止)、 DKAMR (D) (メディアの取り外し許可)、または DKEJECT (デッキ) (メディアの取り出し) コマンドが、取り外し可能メディアをサポートしない装置に送信されました。
  • DKEJECT (デッキ) (媒体の排出) コマンドが、現在ドライブにロックされているメディアを持つ装置に送信されました。
  • データ・バッファー長が、 戦略 操作に定義された最大長を超えています。
EIO 以下のいずれかの状況を示します。
  • ターゲット・デバイスが見つからないか、応答していません。
  • ターゲット装置がリカバリー不能ハードウェア・エラーを示しました。
emedia 以下のいずれかの状況を示します。
  • ターゲット装置が回復不能媒体エラーを示しています。
  • 媒体が変更されました。
EMFILE 既に最大許容数のオープン・デバイスを持つアダプターに対して オープン 操作が試行されたことを示します。
ENODEV 以下のいずれかの状況を示します。
  • 未定義の装置にアクセスしようとしました。
  • 未定義の装置をクローズしようとしました。
ENOTREADY ドライブにメディアがないことを示します。
ENXIO 以下のいずれかの状況を示します。
  • Ioctl サブルーチンが無効なパラメーターを提供しました。
  • 読み取り または 書き込み 操作が、ハード・ディスクの終わりを超えて試行されました。
EPERM 試行されたサブルーチンには適切な権限が必要であることを示します。
ESTALE 読み取り専用光ディスクが (最初にユーザーによってクローズされずに) 排出されてから、2 番目の光ディスクに再挿入または置換されたことを示します。
ETIMEDOUT 入出力操作が指定されたタイマー値を超えたことを示します。
エヴルプロテクト 以下のいずれかの状況を示します。
  • 読み取り/書き込み モードを要求した オープン 操作が、読み取り専用メディアで試行されました。
  • 書き込み 操作が読み取り専用メディアに対して試行されました。

信頼性と保守性の情報

SCSI ハード・ディスク、CD-ROM ドライブ、および読み取り/書き込み光ディスク・ドライブは、以下のエラーを戻します。

項目 説明
打ち切られたコマンド 装置がコマンドを終了したことを示します。
アダプター・エラー アダプターがエラーを返したことを示します。
正常終了 コマンドが正常に完了したことを示します。
HARDWARE ERROR コマンドの実行中または自己診断テスト中にリカバリー不能なハードウェア障害が発生したことを示します。
無許可の要求 コマンドまたはコマンド・パラメーターが正しくないことを示します。
メディア・エラー コマンドがリカバリー不能メディア・エラー状態で終了したことを示します。
作動不能 論理装置がオフラインであるか、またはメディアが欠落していることを示します。
リカバリーされたエラー 何らかのリカバリーが適用された後、コマンドが正常に実行されたことを示します。
ユニット・アテンション 装置がリセットされているか、電源がオンになっていることを示します。

メディア・エラーのエラー・レコード値

ハード・ディスク・エラー、CD-ROM エラー、および読み取り/書き込み光メディア・エラーのエラー・レコード・テンプレートに定義されているフィールドは、以下のとおりです。

項目 説明
Comment ハード・ディスク、CD-ROM、または読み取り/書き込み光メディアのエラーを示します。
Class ハードウェア・エラーを示す H の値と等しい。
Report True の値に相当します。これは、エラー・レポートの生成時にこのエラーを含める必要があることを示します。
Log True の値に相当します。これは、このエラーが発生したときにエラー・ログ・エントリーを作成する必要があることを示します。
Alert False の値と等しい。これは、このエラーがアラート可能ではないことを示します。
Err_Type 永続的な障害を示す Perm の値と等しい。
Err_Desc 値 1312 に等しい。これは、ディスク操作の失敗を示します。
Prob_Causes メディアを示す 5000 の値に相当します。
User_Causes 値 5100 に相当します。これは、メディアに欠陥があることを示します。
User_Actions 以下の値に等しくなります。
  • 0000。問題判別手順を実行する必要があることを示します。
  • 1601 は、取り外し可能メディアを交換して再試行する必要があることを示します。
Inst_Causes ありません。
Inst_Actions ありません。
Fail_Causes 以下の値に等しくなります。
  • 5000。メディア障害を示します。
  • 6310。ディスク・ドライブの障害を示します。
Fail_Actions 以下の値に等しくなります。
  • 0000。問題判別手順を実行する必要があることを示します。
  • 1601 は、取り外し可能メディアを交換して再試行する必要があることを示します。
Detail_Data 156、11、HEX の値に等しい。 この値は 16 進形式を示します。
注:
このDetail_Dataエラー・レコード 構造体のフィールドには、 sc_error_log_df 構造体が含まれます。 err_rec 構造体は、 /usr/include/sys/errids.h ファイルに定義されています。 sc_error_log_df 構造体は、 /usr/include/sys/scsi.h ファイルに定義されます。

sc_error_log_df 構造体には、以下のフィールドが含まれます。

req_sense_data
エラーがあった特定の装置からの要求センス情報が入っています (有効な場合)。
reserved2
セグメント・カウントが入ります。これは、エラー発生時にデバイスから読み取られたメガバイト数です。
reserved3
セグメント・カウントが最後に増やされてから読み取られたバイト数が入っています。

特定の装置の要求センス・データの形式については、「 Small Computer System Interface (SCSI) 仕様 」を参照してください。

ハードウェア・エラーのエラー・レコード値

ハード・ディスク・エラー、CD-ROM エラー、および読み取り/書き込み光ディスク・ハードウェア・エラー、ならびにハード打ち切りコマンド・エラーについて、エラー・レコード・テンプレートに定義されているフィールドは、以下のとおりです。

項目 説明
Comment ハード・ディスク、CD-ROM、または読み取り/書き込み光ディスクのハードウェア・エラーを示します。
Class ハードウェア・エラーを示す H の値と等しい。
Report True の値に相当します。これは、エラー・レポートの生成時にこのエラーを含める必要があることを示します。
Log True の値に相当します。これは、このエラーが発生したときにエラー・ログ・エントリーを作成する必要があることを示します。
Alert FALSE の値に等しい。これは、このエラーがアラート可能でないことを示します。
Err_Type 永続的な障害を示す Perm の値と等しい。
Err_Desc 値 1312 に等しい。これは、ディスク操作の失敗を示します。
Prob_Causes ディスク・ドライブを示す値 6310 に等しい。
User_Causes ありません。
User_Actions ありません。
Inst_Causes ありません。
Inst_Actions ありません。
Fail_Causes 以下の値に等しくなります。
  • 6310。ディスク・ドライブの障害を示します。
  • 6330。ディスク・ドライブの電子障害を示します。
Fail_Actions 0000 の値。これは、問題判別手順を実行する必要があることを示します。
Detail_Data 156、11、HEX の値に等しい。 この値は 16 進形式を示します。
注:
このDetail_Dataエラー・レコード 構造体のフィールドには、 sc_error_log_df 構造体が含まれます。 err_rec 構造体は、 /usr/include/sys/errids.h ファイルに定義されています。 sc_error_log_df 構造体は、 /usr/include/sys/scsi.h ファイルに定義されます。

sc_error_log_df 構造体には、以下のフィールドが含まれます。

req_sense_data
エラーがあった特定の装置からの要求センス情報が入っています (有効な場合)。
reserved2
セグメント・カウントが入ります。これは、エラー発生時にデバイスから読み取られたメガバイト数です。
reserved3
セグメント・カウントが最後に増やされてから読み取られたバイト数が入っています。

特定の装置の要求センス・データの形式については、「 Small Computer System Interface (SCSI) 仕様 」を参照してください。

アダプターのエラー・レコード値-検出されたハードウェア障害

ハード・ディスク、CD-ROM、および読み取り/書き込み光ディスク・メディア・エラー・アダプターが検出したハードウェア・エラーについて、エラー・レコード・テンプレートで定義されているフィールドは、以下のとおりです。

項目 説明
Comment アダプターが検出したハード・ディスク、CD-ROM、または読み取り/書き込み光ディスク・ハードウェアの障害を示します。
Class ハードウェア・エラーを示す H の値と等しい。
Report True の値に相当します。これは、エラー・レポートの生成時にこのエラーを含める必要があることを示します。
Log True の値に相当します。これは、このエラーが発生したときにエラー・ログ・エントリーを作成する必要があることを示します。
Alert FALSE の値に等しい。これは、このエラーがアラート可能でないことを示します。
Err_Type 永続的な障害を示す Perm の値と等しい。
Err_Desc 値 1312 に等しい。これは、ディスク操作の失敗を示します。
Prob_Causes 以下の値に等しくなります。
  • 3452。装置ケーブルの障害を示します。
  • 6310。ディスク・ドライブの障害を示します。
User_Causes ありません。
User_Actions ありません。
Inst_Causes ありません。
Inst_Actions ありません。
Fail_Causes 以下の値に等しくなります。
  • 3452。ストレージ・デバイスのケーブル障害を示します。
  • 6310。ディスク・ドライブの障害を示します。
  • 6330 (ディスク・ドライブの電子障害を示す)
Fail_Actions 0000 の値。これは、問題判別手順を実行する必要があることを示します。
Detail_Data 156、11、HEX の値に等しい。 この値は 16 進形式を示します。
注:
このDetail_Dataエラー・レコード 構造体のフィールドには、 sc_error_log_df 構造体が含まれます。 err_rec 構造体は、 /usr/include/sys/errids.h ファイルに定義されています。 sc_error_log_df 構造体は、 /usr/include/sys/scsi.h ファイルに定義されます。

sc_error_log_df 構造体には、以下のフィールドが含まれます。

req_sense_data
エラーがあった特定の装置からの要求センス情報が入っています (有効な場合)。
reserved2
セグメント・カウントが入ります。これは、エラー発生時にデバイスから読み取られたメガバイト数です。
reserved3
セグメント・カウントが最後に増やされてから読み取られたバイト数が入っています。

特定の装置の要求センス・データの形式については、「 Small Computer System Interface (SCSI) 仕様 」を参照してください。

リカバリーされたエラーのエラー・レコード値

ハード・ディスク、CD-ROM、および読み取り/書き込み光ディスク・エラー・リカバリー・エラーのエラー・レコード・テンプレートに定義されているフィールドは、以下のとおりです。

項目 説明
Comment ハード・ディスク、CD-ROM、または読み取り/書き込み光ディスク・リカバリー・エラーを示します。
Class ハードウェア・エラーを示す H の値と等しい。
Report True の値に相当します。これは、エラー・レポートの生成時にこのエラーを含める必要があることを示します。
Log True の値に相当します。これは、このエラーが発生したときにエラー・ログ・エントリーを作成する必要があることを示します。
Alert FALSE の値に等しい。これは、このエラーがアラート可能でないことを示します。
Err_Type Temp の値と等しくなります。これは一時的な障害を示します。
Err_Desc 値 1312 に等しい。これは、物理ボリューム操作の失敗を示します。
Prob_Causes 以下の値に等しくなります。
  • 5000。メディア障害を示します。
  • 6310。ディスク・ドライブの障害を示します。
User_Causes 値 5100 に等しい。これは、メディアに欠陥があることを示します。
User_Actions 以下の値に等しくなります。
  • 0000。問題判別手順を実行する必要があることを示します。
  • 1601 は、取り外し可能メディアを交換して再試行する必要があることを示します。
Inst_Causes ありません。
Inst_Actions ありません。
Fail_Causes 以下の値に等しくなります。
  • 5000。メディア障害を示します。
  • 6310。ディスク・ドライブの障害を示します。
Fail_Actions 以下の値に等しくなります。
  • 0000。問題判別手順を実行する必要があることを示します。
  • 1601 は、取り外し可能メディアを交換して再試行する必要があることを示します。
Detail_Data 156、11、HEX の値に等しい。 この値は 16 進形式を示します。
注:
このDetail_Dataエラー・レコード 構造体のフィールドには、 sc_error_log_df 構造体が含まれます。 err_rec 構造体は、 /usr/include/sys/errids.h ファイルに定義されています。 sc_error_log_df 構造体は、 /usr/include/sys/scsi.h ファイルに定義されます。

sc_error_log_df 構造体には、以下のフィールドが含まれます。

req_sense_data
エラーがあった特定の装置からの要求センス情報が入っています (有効な場合)。
reserved2
セグメント・カウントが入ります。これは、エラー発生時にデバイスから読み取られたメガバイト数です。
reserved3
セグメント・カウントが最後に増やされてから読み取られたバイト数が入っています。

特定の装置の要求センス・データの形式については、「 Small Computer System Interface (SCSI) 仕様 」を参照してください。

不明なエラーのエラー・レコード値

ハード・ディスク・エラー、CD-ROM エラー、および光ディスク・メディア読み取り/書き込みエラーのエラー・レコード・テンプレートに定義されているフィールドは、以下のとおりです。

項目 説明
Comment ハード・ディスク、CD-ROM、または読み取り/書き込み光ディスクの不明な障害を示します。
Class ハードウェア・エラーを示す H の値と等しい。
Report True の値に相当します。これは、エラー・レポートの生成時にこのエラーを含める必要があることを示します。
Log True の値に相当します。これは、このエラーが発生したときにエラー・ログ・エントリーを作成する必要があることを示します。
Alert FALSE の値に等しい。これは、このエラーがアラート可能でないことを示します。
Err_Type Unkn の値に等しい。これは、エラーのタイプが不明であることを示します。
Err_Desc FE00の値に等しい。これは、判別できないエラーを示します。
Prob_Causes 以下の値に等しくなります。
  • 3300。アダプター障害を示します。
  • 5000。メディア障害を示します。
  • 6310。ディスク・ドライブの障害を示します。
User_Causes ありません。
User_Actions ありません。
Inst_Causes ありません。
Inst_Actions ありません。
Fail_Causes FFFF の値に等しくなります。これは、障害の原因が不明であることを示します。
Fail_Actions 以下の値に等しくなります。
  • 0000。問題判別手順を実行する必要があることを示します。
  • 1601 は、取り外し可能メディアを交換して再試行する必要があることを示します。
Detail_Data 156、11、HEX の値に等しい。 この値は 16 進形式を示します。
注:
このDetail_Dataエラー・レコード 構造体のフィールドには、 sc_error_log_df 構造体が含まれます。 err_rec 構造体は、 /usr/include/sys/errids.h ファイルに定義されています。 sc_error_log_df 構造体は、 /usr/include/sys/scsi.h ファイルに定義されます。

sc_error_log_df 構造体には、以下のフィールドが含まれます。

req_sense_data
エラーがあった特定の装置からの要求センス情報が入っています (有効な場合)。
reserved2
セグメント・カウントが入ります。これは、エラー発生時にデバイスから読み取られたメガバイト数です。
reserved3
セグメント・カウントが最後に増やされてから読み取られたバイト数が入っています。

特定の装置の要求センス・データの形式については、「 Small Computer System Interface (SCSI) 仕様 」を参照してください。

特殊ファイル

ディスク SCSI デバイス・ドライバーは、その機能を実行する際にロー・ファイルおよびブロック・スペシャル・ファイルを使用します。

注意: ページング、論理ボリューム、またはマウントされたファイルシステムをサポートするデバイスがブロック・スペシャル・ファイルを使用してアクセスされると、データ破損、データ損失、またはシステム保全性の喪失 (システム・クラッシュ) が発生します。 ブロック・スペシャル・ファイルは、論理ボリュームおよびディスク・デバイス用に提供されており、ファイルシステム、ページング・デバイス、および論理ボリュームの管理におけるシステム専用です。 これらのファイルは、他の目的で使用してはなりません。

ディスク デバイス・ドライバーによって使用される特殊ファイルには、以下のものが含まれます (デバイスのタイプ別にリストされています)。

  • ハード・ディスク装置:
    項目 説明
    /dev/rhdisk0/dev/rhdisk1.../dev/rhdiskn SCSI ハード・ディスクへの SCSI デバイス・ドライバー文字アクセス (ロー入出力アクセスおよび制御機能) を可能にするインターフェースを提供します。
    /dev/hdisk0/dev/hdisk1.../dev/hdiskn SCSI デバイス・ドライバーが SCSI ハード・ディスクへの入出力アクセスをブロックできるようにするインターフェースを提供します。
  • CD-ROM 装置:
    項目 説明
    /dev/rcd0/dev/rcd1.../dev/rcdn SCSI CD-ROM ディスクへの SCSI デバイス・ドライバー文字アクセス (ロー I/O アクセスおよび制御機能) を可能にするインターフェースを提供します。
    /dev/cd0/dev/cd1.../dev/cdn SCSI デバイス・ドライバーが SCSI CD-ROM ディスクへの入出力アクセスをブロックできるようにするインターフェースを提供します。
  • 読み取り/書き込み光ディスク装置:
    項目 説明
    /dev/romd0/dev/romd1.../dev/romdn SCSI デバイス・ドライバーの文字アクセス (ロー I/O アクセスおよび制御機能) を SCSI 読み取り/書き込み光ディスク装置に対して許可するインターフェースを提供します。
    /dev/omd0/dev/omd1.../dev/omdn SCSI デバイス・ドライバーが SCSI 読み取り/書き込み光ディスク装置への入出力アクセスをブロックできるようにするインターフェースを提供します。
    注: 特殊ファイル名の接頭部 R は、ドライブがブロック・デバイスではなくロー・デバイスとしてアクセスされることを示します。 ハード・ディスク、CD-ROM、または読み取り/書き込み光ディスクを使用してロー入出力を実行するには、すべてのデータ転送が装置ブロック・サイズの倍数でなければなりません。 ロー・デバイス・ドライバーに対して作成されるすべての シーク サブルーチンの結果は、装置ブロック・サイズの倍数であるファイル・ポインター値でなければなりません。