2014-10-10 289 views
0

SCSI參考手冊定義了兩種類型的感應數據格式 - 基於固定和可變描述符的(第2.4章)。應該作爲MODE SENSE SCSI命令的響應返回的「Control Mode Page(0Ah)」(4.3.8)包含一個D_SENSE位,其定義如下:SCSI感應數據格式和MODE SENSE控制頁面

D_SENSE(DESCRIPTOR FORMAT感測數據)位

  • 0描述符格式檢測數據(D_SENSE)比特設置爲零指定在相同I_T_L_Q關係的交易返回感測數據作爲時設備服務器應當返回固定格式 感測數據檢查狀態狀態。

  • 1所述的D_SENSE位設置爲一指定在相同I_T_L_Q關係交易返回 感測數據時,爲CHECK CONDITION狀態,除非在2.4.1中定義的設備服務器將返回描述符格式檢測數據。

我的問題是有關在SCSI目標端該位解釋 - 在目標服務器有義務在描述符格式返回檢測數據,如果該位是1?或者它只是一個的可能性以任何格式返回它想要的數據?

感測數據的第一個字節可用於確定其格式,因此SCSI啓動器實際上不需要D_SENSE位值來決定如何解碼接收到的感測數據。

我在問這個問題,因爲我正在研究一些應該模擬SCSI目標的軟件,所以我需要消化多個SCSI文檔才能使其正確。

回答

0

如果SCSI目標實現了設置此位的功能,它必須能夠返回任意一種檢測格式。 SCSI目標可能會選擇只提供此位來讀取而不寫入,然後決定它返回的格式。

另請注意,要正確地符合SCSI規範,您還需要在「掩碼模式」下提供模式頁,以顯示模式頁的哪些位可設置。

+0

「掩碼模式下的模式頁面」 - 您的意思是位,可以通過MODE SELECT設置,對不對?我可以看到,目標數據應作爲對REQUEST SENSE的響應返回。幸運的是,這個命令有兩個變體 - 用於固定感和描述性感。所以,如果D_SENSE是* not *設置,那麼目標應該返回「CDB中的錯誤」,對吧? – HEKTO 2014-10-13 15:22:02

+0

如果未設置D_SENSE,則應返回固定感知格式的感應緩衝區。你可以防止設置這個位,所以你只需要實現固定的傳感格式。 – 2014-10-14 08:38:00

+0

我實際上也需要以描述符格式實現感測數據,因爲需要這種格式來報告「格式化進行中」(作爲對REQUEST SENSE的響應)等信息。所以我擔心如果沒有(或者很少)破壞我的目標應該生成的所有其他感覺數據消息,該怎麼做。 – HEKTO 2014-10-14 14:51:17