SCSI リファレンス マニュアルでは、固定記述子ベースと可変記述子ベースの 2 種類のセンス データ フォーマットが定義されています (2.4 章)。MODE SENSE SCSI コマンドへの応答として返されることになっている "Control Mode Page (0Ah)" (4.3.8) には、次のように定義されている D_SENSE ビットが含まれています。
D_SENSE (DESCRIPTOR FORMAT SENSE DATA) ビット
0 ゼロに設定されたディスクリプタ フォーマット センス データ (D_SENSE) ビットは、同じ I_T_L_Q nexus トランザクションで CHECK CONDITION ステータスとしてセンス データを返すときに、デバイス サーバーが固定形式のセンス データを返すことを指定します。
1 1 に設定された D_SENSE ビットは、2.4.1 で定義されている場合を除き、CHECK CONDITION ステータスとして同じ I_T_L_Q nexus トランザクションでセンス データを返すときに、デバイス サーバーが記述子形式のセンス データを返すことを指定します。
私の質問は、SCSI ターゲット側でのこのビットの解釈についてです。このビットが 1 の場合、ターゲット サーバーは記述子形式でセンス データを返す義務がありますか? それとも、このデータを任意の形式で返す可能性があるだけですか?
センス データの最初のバイトは、そのフォーマットを決定するために使用できるため、SCSI イニシエータは、受信したセンス データをデコードする方法を決定するために、実際には D_SENSE ビット値を必要としません。
私がこの質問をしているのは、SCSI ターゲットをシミュレートするはずのソフトウェアに取り組んでいるためです。そのため、複数の SCSI ドキュメントを消化して正しくする必要があります。