日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

SCSI 协议命令字 中文含义

發(fā)布時(shí)間:2024/3/26 编程问答 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 SCSI 协议命令字 中文含义 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
  • SCSI協(xié)議基礎(chǔ)概念
  • SCSI設(shè)備的連接類似樹形的分層結(jié)構(gòu),從PCIE總線遍歷,可以找到所有的SCSI設(shè)備,從上到下的層次為:PCIE->HOST->channel->target->lun。

    Scsi架構(gòu)中主機(jī)上的scsi接口卡稱為initiator,與其相連接的scsi 磁盤等設(shè)備稱為target,在邏輯上,initiator和target之間通信的工作模式,與兩個(gè)網(wǎng)絡(luò)設(shè)備之間的模式相似,他們之間采用client-server的“請(qǐng)求-響應(yīng)”模式。

    SPC:SCSI Primary Command,所有SCSI設(shè)備都需要支持的命令;項(xiàng)目實(shí)現(xiàn)SPC-5

    SBC:SCSI Block Command,塊設(shè)備需要支持的命令;SBC-4

    這里的client是initiator端的驅(qū)動(dòng),server是target端的邏輯單元 logic unit。與網(wǎng)絡(luò)設(shè)備相似,scsi設(shè)備對(duì)信息的處理也是分層進(jìn)行的,最上面的是應(yīng)用層,發(fā)出的是scsi命令,最下面的是物理層,發(fā)出的是光或電信號(hào),中間通過層層封裝,保證傳輸?shù)目煽啃?#xff0c;并對(duì)上層屏蔽底層的差異。也就是說,client可以與server通信,而不需要知道底層的物理互連或SCSI傳輸協(xié)議。

    SCSI 實(shí)現(xiàn)了一種客戶機(jī)/服務(wù)器風(fēng)格的通信架構(gòu)。發(fā)起者向目標(biāo)設(shè)備發(fā)送命令請(qǐng)求。該目標(biāo)處理此請(qǐng)求并向發(fā)起者返回響應(yīng)。發(fā)起者可以是托管計(jì)算機(jī)中的一個(gè) SCSI 設(shè)備,而 SCSI 目標(biāo)則可以是一個(gè)磁盤、光盤和磁帶設(shè)備或特殊設(shè)備(比如箱體設(shè)備)。

    LUN:一個(gè)Target設(shè)備中可能有多個(gè)Logical Unit,每個(gè)都由Logical Unit Number(LUN)標(biāo)識(shí)。

    Nexus:來自拉丁文,意思是紐帶(tie or bind),描述事物之間的連接關(guān)系。在SCSI系統(tǒng)中,表示設(shè)備之間的關(guān)系,如用于Target重連Initiator、Initiator獲取是哪個(gè)Target發(fā)送來的事物。例如:

    a) I_T Nexus:Initiator和Target之間的連接;

    b) I_T_L Nexus:Initiator和Target及內(nèi)部的LU之間的連接;

    c) I_T_L_Q Nexus:帶有權(quán)重的I_T_L之間的連接。

    當(dāng)應(yīng)用client發(fā)送命令到設(shè)備服務(wù)端時(shí),作為數(shù)據(jù)傳輸?shù)拈_始[徐1] 。

    Server端接受任務(wù),通過發(fā)送或接收數(shù)據(jù)作為響應(yīng),然后返回這個(gè)事務(wù)的狀態(tài)值。服務(wù)端包含任務(wù)調(diào)度器,處理加入隊(duì)列后的任務(wù)集。SCSI為客戶端定義了一套任務(wù)管理功能(Task Management Function)來管理隊(duì)列。例如“Abort Current Task”,客戶端可以產(chǎn)生一個(gè)任務(wù)相關(guān)的請(qǐng)求發(fā)給服務(wù)端的任務(wù)管理功能,然后從Target端獲取一個(gè)響應(yīng),如下圖所示:

    要求每個(gè)LUN都支持4個(gè)SPC命令,如下所示。例如,INQUIRY命令返回Target設(shè)備信息,包括該設(shè)備支持的命令集。

    LU服務(wù)完一個(gè)命令后,將返回一個(gè)Status Code(狀態(tài)碼)。最常見的狀態(tài)碼如下表所示。如果狀態(tài)碼是02h(CHECK CONDITION),同時(shí)將返回Sense Data進(jìn)一步解釋問題是什么。

    完整的Sense Key參見SPC標(biāo)準(zhǔn),這里列出常見的Key,如下圖所示:

    1.1. CDB:Command Descriptor Block
    根據(jù)SCSI定義,一共有4個(gè)命令組:

    (1) Non-Data command:如TEST UNIT READY命令。

    (2) Write command:如寫數(shù)據(jù)到硬盤,因?yàn)閺腎nitiator角度看,寫數(shù)據(jù)命令也稱為Data Out命令。

    (3) Read command:如讀磁盤命令,讀命令也稱為Data In命令。

    (4) Bi-directional command:該命令中既有數(shù)據(jù)發(fā)送也有接收。但是不少操作系統(tǒng)不支持該命令,但是該命令對(duì)于支持RAID實(shí)現(xiàn)是有意義的,例如:Initiator可能發(fā)送數(shù)據(jù),硬盤(drive)利用已存在的數(shù)據(jù)進(jìn)行計(jì)算并返回結(jié)果。

    邏輯單元驗(yàn)證保留的CDB字段,并且在CDB保留字段內(nèi)收到不為零的數(shù)據(jù),則邏輯單元應(yīng)當(dāng)以CHECK CONDITION狀態(tài)終止命令,并且將sense key設(shè)置為ILLEGAL REQUEST,并且將其設(shè)置為CDB中的INVALID FIELD IN。

    邏輯單元在OPERATION CODE字段以外的字段中接收到保留的CDB碼值,則該邏輯單元應(yīng)以CHECK CONDITION狀態(tài)終止命令,將sense key設(shè)置為ILLEGAL REQUEST,并附加sense code設(shè)置為CDB中的INVALID FIELD IN。

    1.1.1. CDB用例
    命令通過向設(shè)備server端發(fā)送CDB來進(jìn)行通信。對(duì)于幾個(gè)個(gè)命令,CDB在Data-Out緩沖區(qū)[徐2] 中伴隨著參數(shù)列表。詳見指定命令的詳細(xì)信息。

    如果邏輯單元驗(yàn)證保留的CDB字段并且保留字段內(nèi)容不為0,則邏輯單元應(yīng)該以CHECK CONDITION狀態(tài)終止,sense key設(shè)置為ILLEGAL REQUEST,sense code設(shè)置為INVALID FIELD IN CDB。

    如果邏輯單元在OP CODE字段以外的其他字段中接收到保留的CDB碼。則邏輯單元以CHECK CONDITION狀態(tài)終止,sense key設(shè)置為ILLEGAL REQUEST,sense code設(shè)置為INVALID FIELD IN CDB。

    定長(zhǎng)/變長(zhǎng)CDB見下面的相關(guān)描述,如果設(shè)備server端收到的CDB包含無效的或者不支持的OP CODE則,則邏輯單元以CHECK CONDITION狀態(tài)終止,sense key設(shè)置為ILLEGAL REQUEST,sense code設(shè)置為INVALID COMMAND OPERATION CODE。

    對(duì)于所有的命令,如果CDB的參數(shù)無效,則設(shè)備server端應(yīng)終止并不改變媒介。

    1.1.2. 定長(zhǎng)CDB
    OPERATION CODE最為第一1 byte,CONTROL Byte作為最后1 byte。

    定長(zhǎng)6-byte、10-byte、12-byte、16-byte如下

    (1)6 byte命令格式CDB

    (2)10 byte命令格式CDB

    (3)12 byte令格式CDB

    (4)16字節(jié)命令格式CDB,長(zhǎng)LBA

    1.1.3. 變長(zhǎng)CDB
    變長(zhǎng)CDB的第1 byte 應(yīng)為OPERATION CODE :7Fh,第1 byte為CONTROL byte。

    ADDITIONAL CDB LENGTH (n–7):表示額外的CDB字節(jié)長(zhǎng)度,必須為4的倍數(shù)。如果傳輸與此長(zhǎng)度不符,則該命令應(yīng)以CHECK CONDITION狀態(tài)截止,且sense key設(shè)置為ILLEGAL REQUEST,附加sense code設(shè)置為INVALID FIELD IN CDB

    [徐3]

    1.2. CDB格式結(jié)構(gòu)說明
    1.2.1. OPERATION CODE
    CDB第1個(gè)byte為 operation code(OP code),用于標(biāo)識(shí)CDB的請(qǐng)求操作。某些operation code需要基于server action碼來標(biāo)識(shí)對(duì)應(yīng)的CDB請(qǐng)求。Operation code 數(shù)據(jù)格式,包括group code和command code如下表格。Group code: 3-bit標(biāo)識(shí)8組command code。Command code: 5-bit 提供32個(gè)cmd code在每個(gè)group內(nèi)。

    5~7bit:0表示6字節(jié)長(zhǎng)命令。1/2表示10字節(jié)命令。5組表示12個(gè)字節(jié)命令。4表示16個(gè)字節(jié)命令。

    1.2.2. SERVICE ACITON
    除6-byte外數(shù)據(jù)格式外,CDB都提供一個(gè)Service Action字段,與operation code字段配合執(zhí)行特定操作。在CDB數(shù)據(jù)格式中定義了Server Action字段,但僅在包含了該描述中使用,當(dāng)CDB中Server action沒有被定義試。按照CDB格式指定的方式使用。

    1.2.3. LOGICAL BLOCK ADDRESS
    邏輯區(qū)塊地址:邏輯單元卷或分區(qū)內(nèi)的邏輯塊地址連續(xù)地從0塊開始直到該邏輯單元的最后一個(gè)邏輯塊。

    一個(gè)6-byte的CDB可能包含一個(gè)21bit的LBA字段。10-byte和12-byte的CDB包含32 bit LBA字段。16 byte 的 CDB具有兩種格式:一種允許32bit LBA字段,另一種允許64bit LBA字段。附加參數(shù)數(shù)據(jù)中的邏輯塊地址字段的長(zhǎng)度為每次出現(xiàn)指定。

    1.2.4. TRANSFER LENGTH
    Transfer Length字段要傳輸?shù)臄?shù)據(jù)量,通常以塊為單位,一些描述中定義為發(fā)送請(qǐng)求的字節(jié)數(shù)。最多運(yùn)行一個(gè)命令傳輸256個(gè)塊256個(gè)字節(jié)的數(shù)據(jù),多字節(jié)的Transfer Length字段標(biāo)中,長(zhǎng)度為零指定為無數(shù)據(jù)傳輸。

    1.2.5. PRAMETER LIST LENGTH
    參數(shù)列表長(zhǎng)度:用于從Data-out緩沖區(qū)發(fā)送的字節(jié)數(shù)。在CDB中用戶發(fā)送到server設(shè)備的參數(shù)(如模式、診斷、日志參數(shù))。參數(shù)列表參數(shù)為0,為不傳輸任何數(shù)據(jù)。

    1.2.6. ALLOCATION LENGTH[x4]
    分配長(zhǎng)度:表示應(yīng)用client端在已經(jīng)申請(qǐng)的Data-in緩沖區(qū)中分配的最大字節(jié)數(shù)。分配長(zhǎng)度為0表示沒有任何數(shù)據(jù)傳輸。當(dāng)分配長(zhǎng)度的字節(jié)或者所有有效數(shù)據(jù)(以較小者為準(zhǔn))已經(jīng)傳輸時(shí)候,設(shè)備的server端需要終止傳輸?shù)綌?shù)據(jù)輸入緩沖區(qū)。Allocation Length用于限制返回給應(yīng)用的client端可變數(shù)據(jù)的的最大長(zhǎng)度。如果傳輸?shù)紻ata-in緩沖區(qū)的信息包括一些或者全部字段,這些字段內(nèi)容不允許更改以反映由于分配長(zhǎng)度不足而導(dǎo)致的階段,除非手冊(cè)另有說明。

    如果要傳輸?shù)臄?shù)據(jù)信息超過分配長(zhǎng)度的最大值,則設(shè)備的server端將不傳輸任何數(shù)據(jù),命令會(huì)以CHECK CONDITION狀態(tài)結(jié)束,sense key被置位 ILLEGAL REQUEST。Sense code被置為INVALID FIELD.

    1.2.7. CONTROL

    控制字對(duì)所有命令具有相同的定義。所有的CDB都包含一個(gè)控制字節(jié),控制字節(jié)的定義如上表格表示。所有的SCSI協(xié)議標(biāo)準(zhǔn)都應(yīng)該定義NACA位所需的功能。

    NACA(Normal ACA)bit:

    指定當(dāng)狀態(tài)以CHECK CONDITION回復(fù)是否建立偶然事件自動(dòng)通信。用于指示LU是否進(jìn)行auto contingent allegiance (ACA),ACA是在命令執(zhí)行過程中萬一發(fā)生錯(cuò)誤時(shí)LU所采取的一種措施,如果ACA位沒有置1,那么只要下一個(gè)命令是從同一個(gè)client發(fā)出的,該錯(cuò)誤狀態(tài)就被清除,如果ACA為被置1,就會(huì)保持這種錯(cuò)誤狀態(tài),讓引起錯(cuò)誤的啟動(dòng)器通過REQUEST SENSE命令來獲取檢測(cè)數(shù)據(jù)。在ACA狀態(tài)下所接受的第一個(gè)命令將刪除檢測(cè)數(shù)據(jù)并結(jié)束ACA狀態(tài)。

    1.2.8. GRUOPING FUNCTION
    分組函數(shù)是收集與命令相關(guān)聯(lián)的屬性信息的函數(shù)(關(guān)于具有相同組值的命令被收集到指定的組中)

    1.2.9. SENSE DATA
    返回錯(cuò)誤的狀態(tài)給應(yīng)用client端或者應(yīng)答REQUST SENSE命令。

    Sense Data的格式描述見手冊(cè)。

  • SCSI命令
  • 2.1. TEST UNIT READY
    查詢硬盤狀態(tài)是否準(zhǔn)備好。

    如果邏輯單元能夠接收一個(gè)恰當(dāng)?shù)脑L問命令,則不返回CHECK CONDITION狀態(tài),應(yīng)返回GOOD狀態(tài)。如果邏輯單元將設(shè)置為ready但是無法置為可操作狀態(tài)或者應(yīng)用client端正處于執(zhí)行某命令的狀態(tài),這個(gè)命令需要以CHECK CONDITION狀態(tài)結(jié)束,sense key置為NOT READY。(回復(fù)數(shù)據(jù)的格式)[徐5]

    OP code: 0x00H

    2.2. INQUIRY
    查詢?cè)O(shè)備信息。Inquiry命令發(fā)送到應(yīng)用client端用來請(qǐng)求有關(guān)邏輯單元和SCSI目標(biāo)設(shè)備信息。

    OP code: 0x12h

    EVPD(Enable Vital Product Data)bit:標(biāo)志位表示設(shè)備server端返回一個(gè)重要的產(chǎn)品數(shù)據(jù),而不是標(biāo)準(zhǔn)查詢。Page Code字段表示返回的是哪個(gè)重要的產(chǎn)品數(shù)據(jù)[徐6] 。

    0b:設(shè)備server端返回標(biāo)準(zhǔn)Inquiry數(shù)據(jù)。如果Page Code未設(shè)置為0且EVPD位為0,則該命令以CHECK CONDITION狀態(tài)終止,sense key置為ILLEGAL REQUEST,附加sensen code置為INVALID FIELD。

    1b:Page Code空間指定設(shè)備服務(wù)端返回產(chǎn)品重要信息的頁信息。

    CMDDT(Command Support Date):

    T10委員會(huì)宣布此位作廢,某些產(chǎn)品上可能還有實(shí)現(xiàn),模擬平臺(tái)不對(duì)此位進(jìn)行處理。

    2.3. ALLOCATION LENGTH:分配長(zhǎng)度[徐7]
    (1)如果EVPD為0,則分配長(zhǎng)度至少為5,以使參數(shù)數(shù)據(jù)中的ADDITIONAL LENGTH空間返回。如果EVPD為1,則分配長(zhǎng)度至少為4,以使參數(shù)數(shù)據(jù)中的PAGE LENGTH空間返回。

    (2)如果響應(yīng)錯(cuò)誤的邏輯單元的Inquiry命令,SCSI目標(biāo)設(shè)備應(yīng)返回如表 定義的外設(shè)限定符。查詢?cè)O(shè)備命令盡在無能返回Inquiry請(qǐng)求的數(shù)據(jù)時(shí),返回CHECK CONDITION狀態(tài)。

    (3)從具有等待關(guān)注的條件的端口接收到Inquiry命令,設(shè)備server端執(zhí)行Inquiry命令,不應(yīng)清除設(shè)備關(guān)注的條件。

    (4)即使設(shè)備server端還沒有準(zhǔn)備好接受其他的命令,Inquiry數(shù)據(jù)也需要返回。標(biāo)準(zhǔn)Inquiry數(shù)據(jù)應(yīng)可以用,而不會(huì)引起任何媒介訪問的延遲,如果設(shè)備server端媒介上存儲(chǔ)了部分標(biāo)準(zhǔn)Inquiry或者VPD數(shù)據(jù),可能會(huì)在返回ASCII碼中的空格(20H)控在其他空間中返回0字段,直到可從媒介收獲得數(shù)據(jù)。

    (5)當(dāng)SCSI設(shè)備及其邏輯單元執(zhí)行初始化序列時(shí),Inquiry數(shù)據(jù)可能會(huì)被更改。

    (6)任何導(dǎo)致Inquiry數(shù)據(jù)的改變,則設(shè)備server端應(yīng)與每個(gè)I_T關(guān)聯(lián)的啟動(dòng)端口建立單元關(guān)注條件。并將sense code置為INQUIRY DATA HAS CHANGED。

    (7)設(shè)備硬重置或開機(jī)后,應(yīng)用client端可以使用Inquiry命令來確定系統(tǒng)配置的設(shè)備類型。

    2.3.1. 標(biāo)準(zhǔn)Inquiry數(shù)據(jù)結(jié)構(gòu)
    標(biāo)準(zhǔn)Inquiry數(shù)據(jù)結(jié)構(gòu)至少包含36字節(jié)

    BitByte

    7

    6

    5

    4

    3

    2

    1

    0

    0
    PERIPHERAL QUALIFIER
    PERIPHERAL DEVICE TYPE

    1
    RMB
    Reserved

    2
    VERSION

    3
    Obsolete
    Obsolete
    NORMACA
    HISUP
    RESPONSE DATA FORMAT

    4
    ADDITIONAL LENGTH (n-4)

    5
    SCCS
    ACC
    TPGS
    3PC
    Reserved
    PROTECT

    6
    BQUE
    ENCSERV
    VS
    MULTIP
    MCHNGR
    Obsolete
    Obsolete
    ADDR16a

    7
    Obsolete
    Obsolete
    WBUS16a
    SYNCa
    LINKED
    Obsolete
    CMDQUE
    VS

    8
    (MSB)

    T10 VENDOR IDENTIFICATION

    (LSB)

    15

    16
    (MSB)

    PRODUCT IDENTIFICATION

    (LSB)

    31

    32
    (MSB)

    PRODUCT REVISION LEVEL

    (LSB)

    35

    36

    Vendor specific

    55

    56
    Reserved
    CLOCKINGa
    QASa
    IUSa

    57
    Reserved

    58
    (MSB)

    VERSION DESCRIPTOR 1

    59

    (LSB)

    .

    .

    .

    72
    (MSB)

    VERSION DESCRIPTOR 8

    73

    (LSB)

    74

    Reserved

    95

    Vendor specific parameters

    96

    Vendor specific

    n

    PERIPHERAL QUALIFIER:外圍設(shè)備限定符,指出設(shè)備是否和查詢的邏輯單元相連接。

    000b:標(biāo)識(shí)具有指定的DeviceType的外圍設(shè)備已和邏輯單元建立了連接。如果設(shè)備server端不能確定是否和外圍設(shè)備是否連接,也可以使用這個(gè)限定符值。此值并不表示連接到邏輯單元的外圍設(shè)備已經(jīng)準(zhǔn)備就緒。

    001b:標(biāo)識(shí)具有指定的DeviceType的外圍設(shè)備沒有和邏輯單元建立連接。設(shè)備server端在邏輯單元上具有支持該DeviceType的外圍設(shè)備的能力。

    010b:保留

    011b:設(shè)備Server端在邏輯單元上不具有支持外設(shè)的能力。對(duì)于此限定符,DeviceType應(yīng)配置為1FH。其他的DeviceType類型對(duì)于該限定符保留。

    100b~111B:廠商專用

    PERIPHERAL DEVICE TYPE:外圍設(shè)備類型,SCSI的類型碼[徐8] 。

    00h:直接存儲(chǔ)設(shè)備(磁盤驅(qū)動(dòng)器)

    01h:順序存儲(chǔ)設(shè)備(磁盤驅(qū)動(dòng)器)

    02h:打印設(shè)備

    03h:處理器設(shè)備

    04h:一次寫入設(shè)備

    05h:CD-ROM設(shè)備

    06h:掃描儀設(shè)備

    07h:光存儲(chǔ)設(shè)備

    08h:介質(zhì)轉(zhuǎn)換設(shè)備

    1Fh:未知設(shè)備類型

    RMB(Removable Media)bit:可移動(dòng)媒介位[x9]

    0b:表示不支持可移動(dòng)

    1b:表示可以移動(dòng)媒介

    VERSION field:

    表示實(shí)現(xiàn)SPC實(shí)現(xiàn)的版本

    06h:SPC-4

    07h:SPC-5

    NORMACA(Normal ACA Supported):

    0b:表示設(shè)備server端不支持NACA為1,和ACA任務(wù)屬性

    1b:表示設(shè)備server端支持CDB中NACA為1,和ACA任務(wù)屬性

    HISUP(Hierarchical Support)bit

    0b:表示SCSI目標(biāo)設(shè)備部不使用分層尋址模式將LUN(邏輯單元號(hào))分配給邏輯單元。

    1b:表示SCSI目標(biāo)設(shè)備使用分層尋址模式將LUN分配給邏輯單元。

    RESPONSE DATA FORMAT field:

    該字段值為2時(shí)候表示數(shù)據(jù)采用手冊(cè)中定義的格式。小于2時(shí)表示格式無效。大于2表示

    保留。

    ADDITIONAL LENGTH field:

    附加數(shù)據(jù)長(zhǎng)度,表示在標(biāo)準(zhǔn)查詢數(shù)據(jù)頭后面跟隨著的多少數(shù)據(jù)字節(jié)長(zhǎng)度是可以使用的。

    SCCS(SCC Supported)bit:

    0b:表示不支持SCSI目標(biāo)設(shè)備支持嵌入式存儲(chǔ)控制器。

    1b:表示支持SCSI目標(biāo)設(shè)備支持嵌入式存儲(chǔ)控制器。

    ACC(ACCESS Control Coordinator)bit:

    0b:表示SCSI目標(biāo)設(shè)備沒有邏輯單元尋址的訪問控制協(xié)調(diào)器。如果SCSI目標(biāo)設(shè)備可以通過邏輯單元進(jìn)行尋址兒不是通過ACCESS CONTROLS,0邏輯單元號(hào)的ACC設(shè)置為1。

    1b:表示SCSI目標(biāo)設(shè)備包含可通過此邏輯單元尋址的訪問控制協(xié)調(diào)器。

    TPGS(Target Port Group Support)field:

    目標(biāo)端口組支持TPGS字段表示支持邏輯單元不對(duì)稱訪問。

    00b:SCSI目標(biāo)設(shè)備不支持不對(duì)稱邏輯單元訪問或支持廠商指定的形式的不對(duì)稱訪問。不支持Report Target Groups和Set Target Group命令。01b:僅支持非對(duì)稱邏輯單元訪問(SPC-5)。SCSI目標(biāo)設(shè)備不使用SET TARGET PORT GROUPS命令即可更改目標(biāo)端口非對(duì)稱訪問。支持REPORT TARGET PORTGROUPS命令,不支持SET TARGET PORT GROUPS命令。11b:支持顯式和隱式的非對(duì)稱邏輯單元訪問。支持REPORT TARGET PORTGROUPS命令,支持SET TARGET PORT GROUPS命令。

    3PC(Third-Part Copy)bit:

    0b:SCSI目標(biāo)設(shè)備不支持此命令1b:SCSI目標(biāo)設(shè)備支持第三方拷貝命令,比如EXTENED COPY命令。

    PROTECT bit:

    0b:邏輯單元不支持保護(hù)信息[x10] 。1b:邏輯單元支持1/2/3保護(hù)類型。SPT空間在Extened Inquiry數(shù)據(jù)頁。

    ENCSERV(Enclosure Services)bit:

    0b:SCSI目標(biāo)設(shè)備不具有嵌入式附加組件。1b:SCSI目標(biāo)設(shè)備含有嵌入式附加組件。具體參考SES。

    MULTIP(Multi Port)bit:

    0b:SCSI目標(biāo)設(shè)備只有一個(gè)端口,不實(shí)現(xiàn)多端口需求。1b:SCSI目標(biāo)設(shè)備具有多個(gè)符合SCSI標(biāo)準(zhǔn)的端口。

    CMDQUE(Command Queuing)bit:

    命令隊(duì)列1如果不支持BQUE bit,CMDQUE應(yīng)置為0,表示邏輯單元不支持任務(wù)管理2如果支持BQUE bit,CMDQUE和BQUE表示的任務(wù)管理模式如下表描述

    T10 VENDOR IDENTIFICATION field:

    T10廠商標(biāo)識(shí)字段,包含8byte左對(duì)齊的ASCII信息。用于表示產(chǎn)品廠商,供應(yīng)商表示應(yīng)為INCITS分配的表示。8byte~15byte表示“SEAGATE”。

    PRODUCT IDENTIFICATION:

    產(chǎn)品表示字段,左對(duì)齊的ASCII信息。16byte~31byte使用空格(20h)填滿。

    PRODUCT REVISION LEVEL field:

    產(chǎn)品版本等級(jí)字段,使用左對(duì)齊ASCII信息。32Byte

    VERSION DESCRIPTOR fields:

    版本描述字段,用于標(biāo)識(shí)SCSI目標(biāo)設(shè)備的目標(biāo)設(shè)備的8個(gè)標(biāo)準(zhǔn)。可參考最新的SPC

    Copyright Notice field:

    版本聲明字段,Seagate使用96~143byte提供版權(quán)聲明ASCII碼。

    2.4. MODE SENSE 6
    查詢硬盤參數(shù)命令為設(shè)備Server端向應(yīng)用Client端上報(bào)參數(shù)的方法,是MODE SELECT命令的互補(bǔ)命令。(6字節(jié))

    OP CODE:0x1Ah

    DBD(disable block descriptor)bit:

    0b:表示設(shè)備server端可能在MODE SENSE date中返回0或者更多的塊描述符。

    1b:表示設(shè)備server端不用在MODE SENSE data返回塊描述符。

    PC(Page Control)field:

    表示請(qǐng)求的參數(shù)類型,對(duì)應(yīng)值如下表:

    11b的錯(cuò)誤處理見手冊(cè)。

    PAGE CODE and SUBPAGE CODE fields:

    PAGE CODE和SUBPAGE CODE字段指定要返回的模式頁面和子頁面。如下表

    ALLOCATION LENGTH field:

    分配長(zhǎng)度通知目標(biāo)設(shè)備為返回?cái)?shù)據(jù)分配了多少空間。錯(cuò)誤處理詳見手冊(cè)

    2.5. MODE SENSE 10
    查詢硬盤參數(shù)命令為設(shè)備Server端向應(yīng)用Client端上報(bào)參數(shù)的方法,是MODE SELECT10命令的互補(bǔ)命令。(10字節(jié))

    OP CODE:0x5Ah

    LLBAA (Long LBA Accepted) bit:

    0b:設(shè)備Server端LONGLBA在參數(shù)數(shù)據(jù)中為0并返回。

    1b:設(shè)備Server端返回參數(shù)數(shù)據(jù)并且LONGLBA位返回值為0

    其他字段參考MODE SENSE(6)。

    2.6. START STOP UNIT
    啟動(dòng)/停止單元命令請(qǐng)求設(shè)備Server更換邏輯單元電源功率、加載或者彈出介質(zhì)操作。包含指定設(shè)備server端通過控制功率和定時(shí)器來使能或禁止介質(zhì)訪問操作的直接訪問塊設(shè)備。

    如果設(shè)備Server端正在處理該命令,后續(xù)有確認(rèn)過的CDB請(qǐng)求邏輯單元執(zhí)行啟動(dòng)/停止單元命令更換電源狀態(tài)的話,設(shè)備server端應(yīng)中斷后續(xù)的啟動(dòng)/停止單元命令,CHECK CONDITION,sense key設(shè)置為NOT READY,sense code設(shè)置為L(zhǎng)OGICAL UNIT NOT REAY, START STOP UNIT COMMAND IN PROGRESS。

    OP CODE:0x1Bh

    IMMED(Immediate)bit:

    0b:設(shè)備server端在操作執(zhí)行完成后返回狀態(tài)信息。1b:設(shè)備server端在CDB驗(yàn)證過后盡快返回狀態(tài)信息。

    POWER CONDITION field and POWER CONDITION MODIFIER field:

    功率控制狀態(tài)字段,功率條件修改。如果支持電源條件則POWER CONDITION值設(shè)為非0,START和LOEJ位忽略。如下表所述如果START STOP UNIT命令指定的電源條件與正在進(jìn)行的操作沖突,在啟動(dòng)/停止單元命令以GOOD狀態(tài)完成后,邏輯單元可能沒有電源條件請(qǐng)求的命令,這個(gè)不是個(gè)錯(cuò)誤。

    NO_FLUSH bit:

    0b:表示在進(jìn)入任何阻止訪問介質(zhì)電源條件之前,包含cache的邏輯單元所有的邏輯塊寫入媒介中,以應(yīng)答SYNCHRONIZE CACHE命令其中SYNC_NV位[徐11] 設(shè)置為0,LOGICAL BLOCK ADDRESS字段設(shè)置為0,NUMBER OF LOGICAL BLOCKS設(shè)置為0 1b:在進(jìn)入任何阻止訪問介質(zhì)功率條件之前,邏輯單元不應(yīng)將緩存的邏輯塊寫入媒介。

    LOEJ (load eject) bit:

    加載/彈出位0b:表示邏輯單元不會(huì)對(duì)加載/彈出介質(zhì)做任何操作。1b:如果START 位同時(shí)為0,則邏輯單元卸載介質(zhì)。如果START位同時(shí)為1,則表示邏輯單元加載介質(zhì)。如果支持POWER CONDITION字段,POWER CONDITION設(shè)置非0h,設(shè)備server端應(yīng)該忽略LOEJ位。

    START bit:

    0b:設(shè)備server端執(zhí)行如下操作

    a) 使邏輯單元轉(zhuǎn)換到停止電源。

    b) 停止任何已經(jīng)使能的空閑狀態(tài)定時(shí)器。

    c) 停止任何已經(jīng)使能的待機(jī)狀態(tài)定時(shí)器。

    1b:設(shè)備server端執(zhí)行如下操作1.符合SCSI傳輸協(xié)議標(biāo)準(zhǔn)定義的要求2.邏輯單元轉(zhuǎn)換到有效的power condition;3.初始化使能任何空閑狀態(tài)定時(shí)器。4.初始化使能任何待機(jī)狀態(tài)定時(shí)器。如果power condition字段支持,同時(shí)設(shè)置為非0h值,設(shè)備server端應(yīng)忽略START位。

    2.7. READ CAPACITY 10
    返回當(dāng)前硬盤容量。請(qǐng)求設(shè)備server端向date-in緩沖區(qū)傳送直接訪問塊設(shè)備的參數(shù)數(shù)據(jù)和媒介格式[x12] 。可以像處理HEAD OF QUEUE任務(wù)屬性一樣處理此命令。如果邏輯單元支持protection information,應(yīng)用client端必須使用16字節(jié)的READ CAPACITY。

    OP CODE:0x25h

    此功能協(xié)助存儲(chǔ)管理軟件確定是否在CDB中描述的邏輯塊地址起始有足夠空間,包含頻繁訪問的數(shù)據(jù)結(jié)構(gòu),不會(huì)引起額外的延遲。

    LOGICAL BLOCK ADDRESS field:

    廢棄。

    PMI (Partial Medium Indicator) bit:

    廢棄。

    2.8. REQUEST SENSE[x13]
    請(qǐng)求查詢Sense命令請(qǐng)求設(shè)備Server端發(fā)送Sense Date到應(yīng)用client端。

    OP Code:0x03h

    DESC(Descriptor Format)bit:

    描述格式位

    0b:返回固定格式sense data

    1b:返回描述格式sense data

    ALLOCATION LENGTH field:

    應(yīng)用Client端應(yīng)該請(qǐng)求252字節(jié)的sense data,以確保他們?nèi)』厮械膕ense data。如果求情的字節(jié)少于252, sense data可能已丟失,因?yàn)閹в腥我鈇llocation length的請(qǐng)求REQUESET SENSE命令會(huì)清楚sense data

    Sense data 應(yīng)在SAM-5規(guī)定的條件下可用并清除。如果設(shè)備server端沒有其他sense data可回復(fù),則如下:

    (1) 返回sense key設(shè)置為NO SENSE, sense code設(shè)置為NO ADDITIONAL SENSE INFORMATION

    (2) 以GOOD狀態(tài)完成REQUESET SENSE命令。

    (3) 命令完成后,邏輯單元在接收REQUESET SENSE命令之前應(yīng)返回相同的有效的power condition 。REQUESET SENSE命令不可以重啟任何power condition定時(shí)器。

    設(shè)備server端應(yīng)向REQUESET SENSE命令返回CHECK CONDITION狀態(tài),上報(bào)特定的REQUESET

    SENSE本身的異常狀態(tài)。

    設(shè)備Server端應(yīng)返回至少18字節(jié)的參數(shù)數(shù)據(jù)響應(yīng)一[x14] 個(gè)REQUESET SENSE命令,并且DESC設(shè)置為0。應(yīng)用Client端可以確定返回了多少sense data,通改過檢驗(yàn)CDB中的ALLOCATION LENGTH字段和sense data中的ADDITIONAL SENSE LENGTH字段。如果allocation length小于sense data長(zhǎng)度,設(shè)備server端不可以適應(yīng)截?cái)嗖糠謥碚{(diào)整additional sense length。

    2.9. SYNCHRONIZE CACHE[x15]
    同步緩存信息命令,請(qǐng)求設(shè)備server端確保指定的邏輯塊的最新數(shù)據(jù)記錄在非易失性cache和媒介上。邏輯塊包含用戶數(shù)據(jù),如果媒介啟用了保護(hù)信息,則邏輯塊包括保護(hù)信息。由于同步緩存的操作,邏輯塊可能會(huì)或可能不會(huì)從易失性和非易失性cache中刪除。

    OP CODE:0x35h

    IMMED(Immediate)bit:

    0b:設(shè)備server端在同步緩存操作執(zhí)行完成后返回狀態(tài)信息。

    1b:設(shè)備server端在CDB有效后盡快返回狀態(tài)信息。如果IMMED位為1且設(shè)備Server端不支持IMMED,設(shè)備Server端以CHECK CONDITION狀態(tài)結(jié)束,sense key置為ILLEGAL REQUEST,sense code置為INVALID FIELD IN CDB。

    如果IMMED位置為1,synchronize cache操作未完成,Cathing mode page定義的SYNC_PROG定義設(shè)備server動(dòng)作行為。

    LOGICAL BLOCK ADDRESS field:

    分配長(zhǎng)度字段告訴設(shè)備client端在Data-In-Buffer已經(jīng)申請(qǐng)的長(zhǎng)度。

    GROUP NUMBER field:

    組號(hào)字段與命令相關(guān)的的屬性[x16] 收集到指定的組。一個(gè)組好字段設(shè)置為0表示與該命令相關(guān)的任何屬性都不收集到任何組中。

    NUMBER OF BLOCKS field:

    塊數(shù)量字段指定應(yīng)同步的邏輯塊的數(shù)量,由LOGICAL BLOCK ADDRESS字段指定邏輯塊的起始地址。該字段設(shè)置為0表示LOGICAL BLOCK ADDRESS字段中指定開始位置到介質(zhì)上最后一個(gè)邏輯塊的所有邏輯塊都應(yīng)進(jìn)行同步。如果logical block address 加上 the number of blocks超過了過媒介的容量,設(shè)備server端以CHECK CONDITION狀態(tài)終止命令,sense key設(shè)置為ILLEGAL REQUEST,sense code設(shè)置為L(zhǎng)OGICAL BLOCK ADDRESS OUT OF RANGE。不存在cache內(nèi)的邏輯塊不被認(rèn)為是錯(cuò)誤。

    2.10. SEEK 10
    硬盤LBA定位,請(qǐng)求硬盤驅(qū)動(dòng)來定位指定的邏輯塊地址。

    OP CODE:0x2Bh

    LUN(Logical Unit Number)field:

    邏輯數(shù)據(jù)塊0,Seagate驅(qū)動(dòng)只支持Logical Unit Number

    LOGICAL BLOCK ADDRESS field:

    指定4byte邏輯地址。驅(qū)動(dòng)在收到命令后定位指定的地址。最大的邏輯塊地址在Read Capacity Data定義。

    CONTROL byte:

    在1.2.7中定義的描述。

    2.11. MODE SELECT 6
    模式選擇指令(6)使應(yīng)用client去指定媒介、邏輯單元或者外設(shè)參數(shù)設(shè)備server端的模式。設(shè)備server端需要執(zhí)行MODE SENSE(6)命令。應(yīng)用Client端在每個(gè)MODE SELECT執(zhí)行之前先發(fā)出相應(yīng)的MODE SENSE命令,來確定支持的mode pages,page lengths和其他參數(shù)。關(guān)于Mode page[x17] 參見手冊(cè)。

    OP CODE:0x15h

    PF(Page Format)bit:

    0b:在塊描述(block descriptors)之后的所有參數(shù)為廠商配置。1b:表示消息投和塊描述被構(gòu)造為手冊(cè)中定義的相關(guān)參數(shù),如果RTD為1,則忽略PF值。

    RTD(revert to defaults)bit

    0b:表示設(shè)備server端應(yīng)基于CDB中其他字段和參數(shù)來處理MODE SELECT命令1b:如果RTD_SUP位置為1,RTD位置為1表示設(shè)備server服務(wù)端應(yīng)該還原:a)如果SP置為0,所有模擬頁面的當(dāng)前模式頁面值為默認(rèn)值b)如果SP置為1,所有頁面的當(dāng)前mode page和已保存的mode page恢復(fù)為默認(rèn)值。

    SP(save pages)bit:

    0b:表示設(shè)備server端應(yīng)該執(zhí)行指定的MODE SELECT操作,不需要保存mode pages。如果邏輯單元在當(dāng)前和保存的mode pages之間實(shí)現(xiàn)任何差別,則命令應(yīng)以CHECK CONDITION狀態(tài)終止,sense key設(shè)置為ILLEGAL REQUEST,sense code設(shè)置為INVALID FIELD IN CDB。如果SP位設(shè)置為1則設(shè)備服務(wù)端應(yīng)該執(zhí)行指定的MODE SELECT操作,然后將所有保存的mode page(包括在Data-Out緩存中發(fā)從的)保存在非易失性廠商指定的位置。通過MODE SENSE命令在每個(gè)mode page第一個(gè)字節(jié)中返回PS(parameter saveable)來保存指定的mode pages.1b:表示如果在MODE SENSE數(shù)據(jù)中PS位設(shè)置為1,通過使用MODE SELECT命令發(fā)送可以保存的mode pages。如果邏輯單元未實(shí)現(xiàn)已保存的mode pages同時(shí)SP位設(shè)置為1,則命令應(yīng)以CHECK CONDITION狀態(tài)終止,則sense key設(shè)置為ILLEGAL REQUEST,sense code設(shè)置為INVALID FIELD IN CDB。

    PARAMETER LIST LENGTH field:

    參數(shù)列表長(zhǎng)度,表示指定的mode parameter list的長(zhǎng)度,這個(gè)長(zhǎng)度應(yīng)包含在Data-Out緩沖區(qū)中。一個(gè)參數(shù)列表長(zhǎng)度為0表示指定Data-Out緩沖區(qū)為空,這種情況不認(rèn)為是錯(cuò)誤。如果參數(shù)列表長(zhǎng)度導(dǎo)致任何mode parameter head,模式描述,模式page被截?cái)?#xff0c;則命令操作應(yīng)該以CHECK CONDITION結(jié)束,sense key設(shè)置為ILLEGAL REQUEST,sense code被設(shè)置為PARAMETER LIST LENGTH ERROR。Mode parameter list 在MODE SENSE中定義,每個(gè)模式參數(shù)列表都以device-type相關(guān)的方式定義,在使用的命令標(biāo)準(zhǔn)中找到每種模式中各設(shè)備類型唯一的定義。以下所述情況,設(shè)備server端以CHECK CONDITION狀態(tài)終止,sense key設(shè)置為ILLEGAL REQUEST,sense code設(shè)置為INVALID FIELD IN PARAMETER LIST,不需要改變?nèi)魏蝝ode parameter參數(shù):a)應(yīng)用client端將設(shè)備上報(bào)為不可更改的任何字段設(shè)置與當(dāng)前值不同。b)應(yīng)用client端將模式參數(shù)頭或塊描述中的任何字段設(shè)置為不支持的值。c)應(yīng)用client端發(fā)送的mode page的頁面長(zhǎng)度不等于MODE SENSE命令返回的page長(zhǎng)度,d)應(yīng)用client端發(fā)送了不支持的模式參數(shù)值,并未對(duì)該模式的參數(shù)進(jìn)行取整。e)應(yīng)用client端將模式參數(shù)中的任何保留字段設(shè)置為非0,并設(shè)備server端檢查保留字段。設(shè)備server端可以更改任何模式參數(shù)在任何mode page(甚至是上報(bào)的不可更改的)。設(shè)備server端根據(jù)MODE SELECT命令之前存在的模式參數(shù)與當(dāng)前值來驗(yàn)證不可更改的模式參數(shù)。

    2.12. MODE SELETCT 10
    模式選擇指令(10)使應(yīng)用client去指定媒介、邏輯單元或者外設(shè)參數(shù)設(shè)備server端的模式。設(shè)備server端需要執(zhí)行MODE SENSE(10)命令。應(yīng)用Client端在每個(gè)MODE SELECT執(zhí)行之前先發(fā)出相應(yīng)的MODE SENSE命令。

    OP CODE:0x55h

    2.13. UNMAP
    取消LBA映射,請(qǐng)求設(shè)備server使一個(gè)或者多個(gè)LBA取消映射。NUMAP命令是可以支持精簡(jiǎn)配置實(shí)現(xiàn)的命令之一。

    OP CODE:0x42h

    ANCHOR [x18] bit:

    0b:表示指定的LBA取消映射的操作都將被執(zhí)行并解除分配1b:表的指定的LBA取消映射的操作都將被執(zhí)行并被錨定。錯(cuò)誤處理見手冊(cè)。

    GROUP NUMBER field:

    租號(hào)字段,表示指定與命令關(guān)聯(lián)的屬性收集到同一個(gè)租號(hào)內(nèi)。租號(hào)字段為0表示與命令相關(guān)的屬性不要收集到任何組中。

    PARAMETER LIST LENGTH field:

    表示從應(yīng)用client端發(fā)送到設(shè)備server端的UNMAP 參數(shù)的字節(jié)長(zhǎng)度。字段為0表示不發(fā)送任何數(shù)據(jù)。

    CONTROL byte:

    在1.2.7中定義的描述。

    UNMAP parameter list

    參數(shù)列表定義詳細(xì)見手冊(cè)。

    2.14. WRITE SAME 10
    寫相同數(shù)據(jù)(10),請(qǐng)求設(shè)備server端從Data-Out緩存中以指定的LAB范圍內(nèi)的每個(gè)LBA傳輸單個(gè)邏輯快。a)執(zhí)行邏輯塊內(nèi)容寫操作或者b)unmap操作。操作說明見手冊(cè)。

    OP CODE:0x41h

    WRPROTECT [x19] 寫保護(hù):

    見write寫字段

    LOGICAL BLOCK ADDRESS field:

    見1.2.3

    GROUP NUMBER field:

    見1.2.8

    ANCHOR and UNMAP bits:

    如果邏輯單元支持邏輯塊配置管理(請(qǐng)參閱SBC-4),則ANCHOR位,UNMAP位和ANC_SUP位在邏輯塊配置VPD頁面(請(qǐng)參閱5.4.13)確定設(shè)備服務(wù)器如何處理下表中所述的命令。

    NUMBER OF BLOCKS field:

    表示指定寫入的連續(xù)邏輯塊的數(shù)量,從邏輯塊指定的LOGICAL BLOCK ADDRESS開始。該字段設(shè)置為0表示LOGICAL BLOCK ADDRESS字段表示寫入指定開始位置到介質(zhì)上最后一個(gè)邏輯塊的所有邏輯塊。如果logical block address 加上 the number of blocks超過了過媒介的容量,設(shè)備server端以CHECK CONDITION狀態(tài)終止命令,sense key設(shè)置為ILLEGAL REQUEST,sense code設(shè)置為L(zhǎng)OGICAL BLOCK ADDRESS OUT OF RANGE。

    2.15. WRITE SAME 16
    寫相同數(shù)據(jù)16字節(jié)與10字節(jié)內(nèi)容相同,主要在邏輯塊地址和塊數(shù)量最大長(zhǎng)度不同。

    OP Code:0x93h

    NDOB bit:

    0b:設(shè)備server端應(yīng)使用Data-Out緩沖區(qū)的邏輯塊數(shù)據(jù)來處理命令。

    1b:設(shè)備server端從Data-Out緩沖區(qū)中不傳輸數(shù)據(jù)。詳細(xì)內(nèi)容見手冊(cè)。

    2.16. VERIFY 10
    校驗(yàn)數(shù)據(jù),請(qǐng)求設(shè)備server端檢驗(yàn)指定媒介上的邏輯塊。基于VRPROTECT字段和媒介格式,每個(gè)邏輯塊都包含用戶數(shù)據(jù),并可能包含保護(hù)信息[x20] 。

    OP Code:0x2Fh

    包含的緩存邏輯單元應(yīng)將引用的cache寫入邏輯單元的媒介中(見2.9的SYNCHRONIZE CACHE的SYNC_NV的bit位)

    DPO bit:

    見READ(10)命令

    GROUP NUMBER field:

    組號(hào)字段,表示指定與命令關(guān)聯(lián)的屬性收集到同一個(gè)租號(hào)內(nèi)。租號(hào)字段為0表示與命令相關(guān)的屬性不要收集到任何組中。

    BYTCHK(byte check) field:

    具體含義見手冊(cè)。如果 byte-by-byte比較失敗,則設(shè)備server端以CHECK CONDITION狀態(tài)終止,并將sense key設(shè)置為MISCOMPARE,并將sense code設(shè)置為此條件的適當(dāng)值。

    VERIFICATION LENGTH field:

    驗(yàn)證長(zhǎng)度字段,指定需要驗(yàn)證的連續(xù)邏輯塊的數(shù)量,通過LOGICAL BLOCK ADDRESS字段來指定邏輯塊開始的位置。如果BYTCHK設(shè)置為1,則VERIFICATION LENGTH字段指定設(shè)備server端從Data-Out緩存中傳輸?shù)倪壿媺K數(shù)。如果此字段設(shè)置為0表示沒有邏輯塊校驗(yàn),這種情況不應(yīng)被認(rèn)為是錯(cuò)誤。如果LOGICAL BLOCK ADDRESS加上VERIFICATION LENGTH字段表示的長(zhǎng)度超出媒介容量,設(shè)備server端應(yīng)該以CHECK CONDITION狀態(tài)結(jié)束,sense key設(shè)置為ILLEGAL REQUEST,sense code設(shè)置為L(zhǎng)OGICAL BLOCK ADDRESS OUT OF RANGE。驗(yàn)證長(zhǎng)度字段受VPD頁面中的塊限制。如果BYTCHK字段設(shè)置為00b、01b/11b,設(shè)備server端應(yīng)基于VRPORTECT從介質(zhì)或者date-out緩存讀取保護(hù)信息,含義見手冊(cè)。

    2.17. VERIFY 12

    OP code:0xAFh

    含義可見verify 10

    2.18. VERIFY 16

    OP code:0x8Fh

    含義可見verify 10

    2.19. READ 6
    讀數(shù)據(jù)請(qǐng)求設(shè)備server端讀取指定的邏輯塊并將傳輸這些到data-in緩存中。讀取的每個(gè)邏輯塊均包含用戶數(shù)據(jù),如果媒介使能了保護(hù)信息,還應(yīng)包含保護(hù)信息。傳輸?shù)拿總€(gè)邏輯塊均包含數(shù)據(jù)信息不包含保護(hù)信息。返回在邏輯塊的尋址塊中寫入的或在緩存后寫入的最新數(shù)據(jù)。

    此命令不提供緩存位控制。具有cache訪問的直讀塊設(shè)備在READ(6)具有控制值,但本手冊(cè)未定義默認(rèn)值。如果需要顯示控制,使用READ(10)命令。

    OP code:0x08h

    LOGICAL BLOCK ADDRESS field:

    邏輯塊塊地址字段,表示命令訪問的第一個(gè)邏輯塊。如果邏輯塊地址超出媒介容量,設(shè)備server端應(yīng)以CHECK CONDITION狀態(tài)終止,sense key設(shè)置為ILLEGAL REQUEST,sense code設(shè)置為L(zhǎng)OGICAL BLOCK ADDRESS OUT OF RANGE。

    TRANSFER LENGTH field:

    傳輸長(zhǎng)度字段,讀取指定連續(xù)的數(shù)據(jù)邏輯塊的數(shù)據(jù),這些數(shù)據(jù)傳輸?shù)絛ata-in緩沖區(qū)中,邏輯塊起始地址以LOGICAL BLOCK ADDRESS字段指定。當(dāng)TRANSFER LENGTH設(shè)置為0表示需要讀取256個(gè)邏輯塊,其他數(shù)值表示指定數(shù)量的邏輯塊需要被讀取。如果LOGICAL BLOCK ADDRESS加上VERIFICATION LENGTH字段表示的長(zhǎng)度超出媒介容量,設(shè)備server端應(yīng)該以CHECK CONDITION狀態(tài)結(jié)束,sense key設(shè)置為ILLEGAL REQUEST,sense code設(shè)置為L(zhǎng)OGICAL BLOCK ADDRESS OUT OF RANGE。TRANSFER LENGTH字段值受VPD page中MAXIMUM TRANSFER LENGTH字段限制。

    a) 對(duì)于READ(10),READ(12),READ(16)命令,TRANSFER LENGTH字段值設(shè)置為0表示沒有邏輯塊需要讀取

    b) READ(6)限制尋址空間為2G邏輯塊,對(duì)于512字節(jié)的塊長(zhǎng)度在某些系統(tǒng)初始例程要使用READ(6)命令。系統(tǒng)初始化例程從READ(6)命令遷移到READ(10)命令,該命令能夠以512字節(jié)尋址2TB的塊長(zhǎng)度,或者從READ(16)遷移尋址超過2TB。

    在返回命令狀態(tài)前,設(shè)備server端應(yīng)從媒介中讀取保護(hù)信息,詳細(xì)見手冊(cè)。

    2.20. READ 10
    讀數(shù)據(jù)請(qǐng)求設(shè)備server端讀取指定的邏輯塊并將傳輸這些到data-in緩存中。讀取的每個(gè)邏輯塊均包含用戶數(shù)據(jù),如果媒介使能了保護(hù)信息,還應(yīng)包含保護(hù)信息。傳輸?shù)拿總€(gè)邏輯塊均包含數(shù)據(jù)信息不包含保護(hù)信息。返回在邏輯塊的尋址塊中寫入的或在緩存后寫入的最新數(shù)據(jù)。

    OP Code:0x28h

    RDPROTEST field:

    在返回命令狀態(tài)之前,設(shè)備server端從媒介讀取保護(hù)信息以檢驗(yàn)保護(hù)信息。具體描述見手冊(cè)。

    DPO(Disable Page Out)bit:

    0b:表示由Cache的RETENTION PRIORITY字段的確定保留優(yōu)先級(jí)。1b:表示設(shè)備server端為此命令訪問的邏輯塊分配最低的保留優(yōu)先級(jí),為提取或保留到cache中。

    FUA (Force unit Access)bit:

    0b:表示設(shè)備server端可以從易失性cache、非易失性cache或者其他媒介中讀取邏輯塊,該LBA指定的數(shù)據(jù)格。1b:表示設(shè)備server端以指定的數(shù)據(jù)格式從LBA中,非易失性cache,或者媒介中讀取邏輯塊。如果易失性cache包含最新的邏輯塊,設(shè)備server端在讀邏輯塊之前應(yīng)該將邏輯塊寫入非易失性cache或媒介中。

    RARC(rebuild assist recovery control) bit:

    如果支持重建輔助模式,但未啟用,則將忽略RARC位。如果支持并啟用了重建輔助模式,則RARC表示按照SBC-4中定義處理讀操作。如果不支持重建輔助模式,RARC置為1,設(shè)備server端應(yīng)以CHECK CONDITION狀態(tài)終止,sense key設(shè)置為ILLEGAL REQUEST,sense code設(shè)置為INVALID FIELD IN CDB。

    LOGICAL BLOCK ADDRESS field:

    表示該命令訪問邏輯塊的起始位置。如果邏輯塊地址超出媒介容量,則設(shè)備server端應(yīng)以CHECK CONDITION狀態(tài)終止,sense key設(shè)置為ILLEGAL REQUEST,sense code設(shè)置為L(zhǎng)OGICAL BLOCK ADDRESS OUT OF RANGE。

    GROUP NUMBER field:

    組號(hào)字段表示與該命令相關(guān)屬性收集到一組。GROUP NUMBER設(shè)置為0表示不收集到任何組中。

    TRANSFER LENGTH field:

    傳輸長(zhǎng)度字段,讀取指定連續(xù)的數(shù)據(jù)邏輯塊的數(shù)據(jù),這些數(shù)據(jù)傳輸?shù)絛ata-in緩沖區(qū)中,邏輯塊起始地址以LOGICAL BLOCK ADDRESS字段指定。該字段設(shè)置為0表示沒有邏輯塊需要被讀取。非0數(shù)值表示需要被讀取的塊數(shù)量。如果邏輯塊地址加傳輸長(zhǎng)度超過媒介容量,設(shè)備server端應(yīng)以CHECK CONDITION狀態(tài)結(jié)束,sense key設(shè)置為ILLEGAL REQUEST,sense code設(shè)置為L(zhǎng)OGICAL BLOCK ADDRESS OUT OF RANGE。TRANSFER LENGTH字段受VPD page中MAXIMUM TRANSFER LENGTH字段限制

    2.21. READ 12

    OP code:0xA8h

    功能以及各字段定義與READ(10)相同。

    2.22. READ 16
    功能描述與READ(10)相同

    OP Code:0x88h

    DLD2,DLD1 and DLD0 bits:

    DLD(Duration limit descriptor),命令持續(xù)時(shí)間由DLD2,DLD1,DLD0限制,詳見手冊(cè)。CDLP字段描述參見SPC-5。

    其他字段定義如READ(10)所述。

    2.23. WRITE 6
    寫數(shù)據(jù),T10 已過時(shí),在某些產(chǎn)品上任然需要使用。

    寫數(shù)據(jù)命令,請(qǐng)求設(shè)備server端從Data-Out緩沖區(qū)傳輸指定的邏輯塊并寫入。傳輸?shù)拿總€(gè)邏輯塊均包含用戶數(shù)據(jù),但不包含保護(hù)信息。每個(gè)寫入的邏輯塊包含用戶數(shù)據(jù)信息,如果媒介驅(qū)動(dòng)并使能了保護(hù)信息,還應(yīng)該包含保護(hù)信息。

    [x21]

    OP Code:0x0Ah

    Cache Control bit字段對(duì)此命令不支持。具有cache訪問的直寫塊設(shè)備在WRITE(6)具有控制值,但本手冊(cè)未定義默認(rèn)值。如果需要顯示控制,使用WRITE(10)命令。

    LOGICAL BLOCK ADDRESS field:

    見1.2.3定義

    TRANSFER LENGTH field:

    表示需要從Data-out緩沖區(qū)中傳輸?shù)倪B續(xù)的邏輯塊數(shù)據(jù),以LOGICAL BLOCK ADDRESS field字段表示邏輯塊的起始位置。TRANSFER LENGTH field設(shè)置為0表示有256個(gè)邏輯塊需要寫入,其他任何數(shù)值表示需要寫入的邏輯塊的數(shù)量。如果LOGICAL BLOCK ADDRESS 加上TRANSFER LENGTH 超出媒介容量,設(shè)備server端應(yīng)該以CHECK CONDITION狀態(tài)結(jié)束,sense key設(shè)置為ILLEGAL REQUEST,sense code設(shè)置為L(zhǎng)OGICAL BLOCK ADDRESS OUT OF RANGE。TRANSFER LENGTH字段值受VPD page中MAXIMUM TRANSFER LENGTH字段限制。如果WRITE(6)命令在保護(hù)信息使能下,設(shè)備server端的寫每個(gè)邏輯塊的操作見手冊(cè)。

    2.24. WRITE 10
    寫數(shù)據(jù)(10字節(jié)),功能描述與WRITE 6相同。

    OP Code:0x24h

    見READ(10)中對(duì)DPO bit的定義。

    LOGICAL BLOCK ADDRESS field定義見1.2.8。

    GROUP UNMBER field定義見SPC-5。

    設(shè)備server端根據(jù)WRPOTECT字段校驗(yàn)從Data-Out緩沖區(qū)傳輸保護(hù)信息。詳見手冊(cè)。

    FUA[x22] bit:

    2.25. WRITE 12

    2.26. WRITE 16

    2.27. WRITE VERIFY 10[x23]
    寫校驗(yàn),請(qǐng)求設(shè)備server端從Data-out 緩沖區(qū)傳輸指定的邏輯塊,將其寫入到媒介中,然后驗(yàn)證是否已經(jīng)正確寫入。每個(gè)邏輯塊都基于WRPROTECT字段和媒介格式,其中包含用戶數(shù)據(jù)并可能包含保護(hù)信息。邏輯塊數(shù)據(jù)僅從data-out緩沖區(qū)一次傳輸?shù)皆O(shè)備server端。

    OP Code:0x2Eh

    如果實(shí)現(xiàn)了錯(cuò)誤驗(yàn)證恢復(fù)模式,則此模式頁面中當(dāng)前設(shè)置以及讀-寫錯(cuò)誤恢復(fù)模式將制定驗(yàn)證錯(cuò)誤標(biāo)準(zhǔn)。如果這些mode pages沒有實(shí)施,則驗(yàn)證標(biāo)準(zhǔn)是特定于廠商定義。

    BYTCHK:參見VERIFY(10)定義

    2.28. WRITE VERIFY 12
    操作說明同WRITE VERIFY(10)相同

    2.29. WRITE VERIFY 16
    操作說明同WRITE VERIFY(10)相同。

    2.30. REPORT LUNS
    上報(bào)邏輯塊數(shù)量信息。請(qǐng)求將I_T關(guān)聯(lián)可訪問的外圍設(shè)備邏輯單元清單發(fā)送給應(yīng)用server端。邏輯清單是一個(gè)列表,其中應(yīng)包括具有PERIPHERAL QUALIFIER的值為0000b的所有的邏輯單元號(hào)。除000b和011b意外的PERIPHERAL QUALIFIER值得邏輯單元的邏輯單元號(hào)可以包含在邏輯單元清單中。PERIPHERAL QUALIFIER值為011b的邏輯單元號(hào)不應(yīng)該包含在邏輯單元清單中。

    OP code:0xA0h

    SELECT REPORT field:

    指定上報(bào)的邏輯單元地址類型,詳見手冊(cè)。

    ALLOCATION LENGTH field:

    請(qǐng)求長(zhǎng)度,見1.2.6。錯(cuò)誤處理方式見手冊(cè)。

    設(shè)備server上報(bào)設(shè)備邏輯清單見手冊(cè)。

  • 特殊字段定義
  • 內(nèi)核include/scsi_proto.h

    Service response = Execute Command (IN (I_T_L_Q Nexus, CDB, Task Attribute, [Data-In Buffer Size],

    [Data-Out Buffer], [Data-Out Buffer Size], [Command Reference Number], [Task Priority]),

    OUT ([Data-In Buffer], [Sense Data], [Sense Data Length], Status))

    通訊模型

    總結(jié)

    以上是生活随笔為你收集整理的SCSI 协议命令字 中文含义的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。