SCSI PRs命令研究总结2 - PRs命令规范

Persistent Reservations(PRs)概述

  • PRs包含“PERSISTENT RESERVE IN”和“PERSISTENT RESERVE OUT”两个命令;
  • PRs操作的最基本单位是I_T连接,即一个启动器和目标器连接;
  • PRs配置不会因为启动器失效、硬件复位、逻辑单元复位或者I_T连接丢失而重置(跟配置相关,详见5.14.5小结);
  • 一个获取的PRs只会因“释放”、“抢占”或者“清除”命令而释放,即便是目标器设备电源被断开,PRs依旧会被保留(跟配置相关,5.14.5小结)。

SPC-5 Persistent Reservations Overview

(来源:SPC-5第136页)

“Persistent Reservation”范围(命令参数中的“SCOPE”域)

PRs必须针对整个LUN,使用“PERSISTENT RESERVE OUT”命令进行设置时需要设置为“LU_SCOPE”。

SPC-5 Persistent Reservations Scope

(来源:SPC-5第330页)

“Persistent Reservation”类型(命令参数中的“TYPE”域)

可用的“Persistent Reservation”类型:

  • 独占写入(Write Exclusive) 只有PRs持有者才能进行写入相关操作,且只有一个PRs持有者;
  • 独占存取(Exclusive Access) 只有PRs持有者才能进行存取相关操作,且只有一个PRs持有者;
  • 独占写入-仅注册者(Write Exclusive-Registrants Only) 所有注册者均可进行写入操作,且只有一个PRs持有者;
  • 独占存取-仅注册者(Exclusive Access-Registrants Only) 所有注册者均可进行存取操作,且只有一个PRs持有者;
  • 独占写入-所有注册者(Write Exclusive-All Registrants) 所有注册者均可进行写入操作,同时所有的已注册I_T连接均是持有者;
  • 独占存取-所有注册这(Exclusive Access-All Registrants) 所有注册者均可进行存取操作,同时所有的已注册I_T连接均是持有者。

SPC-5 Persistent Reservations Type

(来源:SPC-5第330页)

SPC-4命令在不同类型的“Persistent Reservation”中的“允许”与“冲突”对照表:

SPC-4 Commands That Are Allowed In The Presence Of Various Reservations(Part1)

(来源:SPC-5第138页)

SPC-4 Commands That Are Allowed In The Presence Of Various Reservations(Part2)

(来源:SPC-5第139页)

SPC-4 Commands That Are Allowed In The Presence Of Various Reservations(Part3)

“PERSISTENT RESERVE OUT”命令的“SERVICE ACTION”在不同类型的“Persistent Reservation”中的“允许”与“冲突”对照表:

SPC-5 PERSISTENT RESERVE OUT Service Actions That Are Allowed In The Presence Of Various Reservations

(来源:SPC-5第141页)

“Reservation Key”

应用客户端需要在建立PRs之前为每个I_T连接注册一个“Reservation Key”,“Reservation Key”提供一种协议无关的识别I_T连接的方法,可以使用“Reservation Key”通过“PERSISTENT RESERVE IN”命令来查询关联的I_T状态。“Reservation Key”也可用于在“PERSISTENT RESERVE OUT”命令中注册和验证I_T连接。

一个“Reservation Key”可以对应多个I_T连接,一个I_T连接也可以注册多个“Reservation Key”(但是SG工具包中只支持一个),所以可以使用一个“Reservation Key”同时操作一组I_T连接!

“Persistent Reservation Holder”

“Persistent Reservation Holder”就是获取“Persistent Reservation”权限的持有者,成为持有者的情况如下:

  • 对于“Write Exclusive – All Registrants” 或者 “Exclusive Access – All Registrants”类型的PRs来说,所有的已注册I_T连接均为“Persistent Reservation”持有者。

  • 使用“RESERVE”、“PREEMPT”、 “PREEMPT AND ABORT”、“REPLACE LOST RESERVATION”、或者“REGISTER AND MOVE”这些“PERSISTENT RESERVE OUT”命令的“Server Action”的I_T连接就是“Persistent Reservation”持有者。

  • 使用“REGISTER AND MOVE”的“Server Action”的目标I_T连接就是“Persistent Reservation”持有者。

“PERSISTENT RESERVE OUT”命令

基本格式

SPC-5 PERSISTENT RESERVE OUT Command

(来源:SPC-5第337页)

“SERVICE ACTION”域

“PERSISTENT RESERVE OUT”命令支持的服务动作:

  • REGISTER - 注册活者反注册一个“Reservation Key”;
  • RESERVE - 根据指定的“SCOPE”和“Type”创建一个“Persistent Reservation”;
  • RELEASE - 释放选定的“Persistent Reservation”;
  • CLEAR - 清除所有的“Reservation Key”和“Persistent Reservation”;
  • PREEMPT - 抢占一个“Persistent Reservation”或移除注册;
  • PREEMPT AND ABORT - 抢占一个“Persistent Reservation”或移除注册,同时忽略所有之前的抢占;
  • REGISTER AND IGNORE EXISTING KEY - 注册活者反注册一个“Reservation Key”,同时忽略已经注册的“Reservation Key”;
  • REGISTER AND MOVE - 为另外一个I_T连接注册一个“Reservation Key”,并移动一个已经存在的“Persistent Reservation”到这个I_T连接;
  • REPLACE LOST RESERVATION - 恢复丢失的“Persistent Reservation”。

SPC-5 PERSISTENT RESERVE OUT Service Action Codes

(来源:SPC-5第339页)

“PERSISTENT RESERVE OUT”命令服务动作的有效参数:

SPC-5 PERSISTENT RESERVE OUT Service Actions And Valid Parameters(Part1)

(来源:SPC-5第340页)

SPC-5 PERSISTENT RESERVE OUT Service Actions And Valid Parameters(Part2)

(来源:SPC-5第341页)

“PARAMETER LIST LENGTH”域

“PARAMETER LIST LENGTH”用于指定该命令所包含的参数列表长度。

  • 当参数列表中的“SPEC_I_PT”位为0,且“Service Action”不是“REGISTER AND MOVE”时,这个值必须为24,否则会返回“PARAMETER LIST LENGTH ERROR”错误。

  • 当这个值大于“Device Server”可以处理的参数列表的最大长度时,也会返回“PARAMETER LIST LENGTH ERROR”错误。

基本的“PARAMETER LIST”域

参数列表格式:

SPC-5 PERSISTENT RESERVE OUT Parameter List

(来源:SPC-5第342页)

“RESERVATION KEY”参数
  • 是一个8字节长的值,用于标示发送“PERSISTENT RESERVE OUT”命令的I_T连接。
  • 如果“Service Action”是“REGISTER AND IGNORE EXISTING KEY”,则会忽略这个值。
  • 如果“Service Action”是“REGISTER”或者“REPLACE LOST RESERVATION”,此处应该填0。
  • 除此之外,“Device Server”会对把这个值与已经注册“RESERVATION KEY”的I_T连接进行比较,如果不一致,则会返回“RESERVATION CONFLICT”。
“SERVICE ACTION RESERVATION KEY”参数

如下“Service Action”需要提供“SERVICE ACTION RESERVATION KEY”:

a) REGISTER; b) REGISTER AND IGNORE EXISTING KEY; c) PREEMPT; d) PREEMPT AND ABORT; e) REPLACE LOST RESERVATION。

如下“Service Action”需要忽略“SERVICE ACTION RESERVATION KEY”:

a) RESERVE; b) RELEASE; c) CLEAR。

  • 当“Service Action”是“REGISTER”或者“REGISTER AND IGNORE EXISTING KEY”时,“SERVICE ACTION RESERVATION KEY”用于指定新的“RESERVATION KEY”,或者是0用于取消“RESERVATION KEY”的注册;
  • 当“Service Action”是“PREEMPT”或者“PREEMPT AND ABORT”时,“SERVICE ACTION RESERVATION KEY”指明将要被抢占的“RESERVATION KEY”;
  • 当“Service Action”是“REPLACE LOST RESERVATION”时,“SERVICE ACTION RESERVATION KEY”包含一个新的要被注册的“RESERVATION KEY”。
“SPEC_I_PT”参数

“SPEC_I_PT”参数用于确定是否指定启动器端口(Specify Initiator Ports)。

  • 当“SPEC_I_PT”被设置为0时,“Device Server”只处理已经注册的I_T连接发送的“PERSISTENT RESERVE OUT”命令;
  • 当“SPEC_I_PT”被设置为1,且“Service Action”不是“REGISTER”时,“Device Server”将会返回“INVALID FIELD IN PARAMETER LIST”错误;
  • 当“SPEC_I_PT”被设置为1,且“Service Action”是“REGISTER”时,“Additional Parameter Data”域必须包含“Transport IDs”列表,其格式如下:

SPC-5 PERSISTENT RESERVE OUT Specify Initiator Ports Additional Parameter Data

(来源:SPC-5第344页)

其中“TRANSPORTID PARAMETER DATA LENGTH”指定下面的“TransportIDs”列表的字节数,如果“PARAMETER LIST LENGTH”未包含“TRANSPORTID PARAMETER DATA LENGTH”的长度,或者“TRANSPORTID PARAMETER DATA LENGTH”比实际的“TransportIDs”列表字节数不一致,“Device Server”会返回“PARAMETER LIST LENGTH ERROR”错误。

“TransportID”参数

每个“TransportID”参数长度至少24字节,且必须是4的倍数,格式如下:

SPC-5 TransportID Format

(来源:SPC-5第619页)

  • TPID FORMAT - “TransportID”的格式类型,可用的格式如下:

SPC-5 TransportID Formats For Specific SCSI Transport Protocols

(来源:SPC-5第619页)

  • PROTOCOL IDENTIFIER - 协议标识符,可用的标识符如下:

SPC-5 PROTOCOL IDENTIFIER Field Values

(来源:SPC-5第597页)

  • SCSI Transport Protocol Specific Data - 传输协议特定数据,每种协议的描述方法都不一样,具体的请参考SPC-5的7.6.4中的内容,这里只粗略说明一下iSCSI的格式,其格式如下:

SPC-5 iSCSI TPID FORMAT Field Codes

(来源:SPC-5第621页)

可见iSCSI中的“TransportID”有两种格式,在使用sg_persist命令时,通过“−−transport−id=file=transport_ids.txt”参数指定的“TransportID”参数描述文件中,只需加入类似“iqn.5886.com.acme.diskarrays-sn-a8675309”这样的参数指明启动器接口即可。

“ALL_TG_PT”参数

“ALL_TG_PT”参数只针对“REGISTER”和“ REGISTER AND IGNORE EXISTING KEY”这两个“Service Action”,其他的“Service Action”应该忽略该参数,用于指明是否注册所有目标端口(All Target Ports)。

  • 如果“ALL_TG_PT”参数为0,则只注册发送“PERSISTENT RESERVE OUT”命令的I_T连接;
  • 如果“ALL_TG_PT”参数为1,则注册全部的“Device Server”已知的目标端口(SG工具包没有实现该功能)。
“APTPL”参数

“APTPL”(Activate Persist Through Power Loss)参数用于指定注册时是否激活掉电前已获取的“Persist”。

  • 只对“REGISTER”和“REGISTER AND IGNORE EXISTING KEY”有效,其他的“Service Action”应该忽略此参数;
  • 同时如果“Device Server”不支持“APTPL”被置位1,则会返回“INVALID FIELD IN PARAMETER LIST”错误;
  • 如果“APTPL”被置位0,“Device Server”将会释放掉电之前的“Persistent Reversvation”以及已注册的“Reservation Key”;
  • 如果“APTPL”被置位1,“Device Server”将会保留掉电之前的“Persistent Reversvation”以及已注册的“Reservation Key”。

针对“REGISTER AND MOVE”的“PARAMETER LIST”域

当“Service Action”是“REGISTER AND MOVE”时的“PARAMETER LIST”域格式如下:

SPC-5 PERSISTENT RESERVE OUT Command With REGISTER AND MOVE Service Action Parameter List

(来源:SPC-5第345页)

此处不再详述,具体的请参看SPC-5第6.17.4小节。

“PERSISTENT RESERVE IN”命令

基本格式

“PERSISTENT RESERVE IN”命令的格式定义如下:

SPC-5 PERSISTENT RESERVE IN Command.jpg

(来源:SPC-5第326页)

“SERVICE ACTION”域

“PERSISTENT RESERVE IN”命令支持的“SERVICE ACTION”如下:

  • READ KEYS - 获取所有已注册的“Reservation Keys”;
  • READ RESERVATION - 获取当前存在的“Persistent Reservation”;
  • REPORT CAPABILITIES - 获取功能描述信息;
  • READ FULL STATUS - 获取完整的状态信息,包括“Reservation Keys”和“Persistent Reservation”。

SPC-5 PERSISTENT RESERVE IN Service Action Codes

(来源:SPC-5第326页)

“ALLOCATION LENGTH”域

指定客户端接收数据缓冲区(用于保存返回的参数列表)的最大大小(以字节为单位),详见SPC-5的第4.2.5.6小节。

READ KEYS

读取设备上已经注册的“Reservation Key”,如果有多个I_T连接注册了相同的Key,则会重复出现多次。返回的参数列表个输入下:

SPC-5 PERSISTENT RESERVE IN Parameter Data For READ KEYS

(来源:SPC-5第327页)

“PRGENERATION”参数

“PRGENERATION”是一个32位的会重绕的计数器,每次处理“PERSISTENT RESERVE OUT”命令后可能被更新(具体的说明请参考SPC-5的6.17.2小节),该数值不会被“PERSISTENT RESERVE IN”命令或者失败和被拒绝的“PERSISTENT RESERVE OUT”命令更新。无论是否设置“APTPL”位,每次上电后,“PRGENERATION”都会被重置为0。

“ADDITIONAL LENGTH”参数

指明“Reservation Key List”的字节数。

“Reservation Key List”参数

每个“Reservation Key”占用8字节。

READ RESERVATION

获取持有的“Reservation Key”状态,当没有持有者时的返回格式如下:

SPC-5 Format Of PERSISTENT RESERVE IN parameter Data For READ RESERVATION With No Reservation Held

(来源:SPC-5第328页)

当含有持有者时的返回格式如下:

SPC-5 Format Of PERSISTENT RESERVE IN parameter Data For READ RESERVATION With A Reservation Held

(来源:SPC-5第329页)

REPORT CAPABILITIES

查询当前设备的“Persistent Reservations”功能和特性信息,返回个数如下:

SPC-5 PERSISTENT RESERVE IN Parameter Data For REPORT CAPABILITIES

(来源:SPC-5第332页)

  • RLR_C(Replace Lost Reservation Capable) - 置一则表明可以使用“REPLACE LOST RESERVATION”这个“Server Action”。

  • CRH(Compatible Reservation Handling) - 置一则表明按照5.14.3小节所描述的方式处理,否则按照SPC-2标准处理。

  • SIP_C(Specify Initiator Ports Capable) - 置一则表明支持指定启动器端口功能(PRs OUT时可以设置SPEC_I_PT标志)。

  • ATP_C(All Target Ports Capable) - 置一则表明支持指定目标器端口功能(PRs OUT时可以设置ALL_TG_PT标志)。

  • PTPL_C(Persist Through Power Loss Capable) - 置一则表明支持掉电保持功能(PRs OUT时可以设置APTPL标志)。

  • TMV(Type Mask Valid) - 置一则表明“PERSISTENT RESERVATION TYPE MASK”参数有效,否则忽略掉即可。

  • ALLOW COMMANDS - 指明某一类“Persistent Reservation”是否支持某一个命令,详细描述见下表:

SPC-5 ALLOW COMMANDS Field(Part1)

(来源:SPC-5第333页)

SPC-5 ALLOW COMMANDS Field(Part2)

(来源:SPC-5第334页)

  • PTPL_A(Persist Through Power Loss Active) - 置一则表明掉电保持功能被激活,否则是未激活。

  • PERSISTENT RESERVATION TYPE MASK - 包含一个位图,指明“Device Server”支持哪些类型的“Persistent Reservations”,详见下表:

SPC-5 Persistent Reservation Type Mask Format

(来源:SPC-5第334页)

a) WR_EX_AR - 置一表明支持“Write Exclusive – All Registrants”类型; b) EX_AC_RO - 置一表明支持“Exclusive Access – Registrants Only”类型; c) WR_EX_RO - 置一表明支持“Write Exclusive – Registrants Only”类型; d) EX_AC - 置一表明支持“Exclusive Access”类型; e) WR_EX - 置一表明支持“Write Exclusive”类型; f) EX_AC_AR - 置一表明支持“ Exclusive Access – All Registrants”类型。

READ FULL STATUS

读取完整的设备状态信息,其返回数据格式如下:

SPC-5 PERSISTENT RESERVE IN Parameter Data For READ FULL STATUS

(来源:SPC-5第335页)

“PRGENERATION”参数

与“PERSISTENT RESERVE IN”命令的“READ KEYS” “Server Action”描述相同,请参考6.16.2小结。

“ADDITIONAL LENGTH”参数

说明“Full Status Descriptors”部分所包含的字节数。

“Full Status Descriptors”参数

“Full Status Descriptors”的格式如下:

SPC-5 PERSISTENT RESERVE IN Full Status Descriptor Format

(来源:SPC-5第336页)

  • RESERVATION KEY - 已注册的“Reservation Key”。
  • R_HOLDER(Reservation Holde) - 置一说明此“Reservation Key”是“Persistent Reservation”持有者。
  • ALL_TG_PT(All Target Ports) - 置零说明此“Reservation Key”只对应一个“Target Port”,否则对应所有“Target Port”。

后面的参数根据上述参数的取值不同而不同,详见6.16.5小结。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
想要刷中文固件在Sony Reader PRS-700上,可以按照以下步骤进行操作: 1. 首先,确保你已经将Sony Reader PRS-700连接到电脑,并打开电脑上的浏览器。 2. 在浏览器中搜索并下载适用于Sony Reader PRS-700的中文固件文件。这些文件可以在一些电子书论坛或者相关的网站上找到。 3. 下载完固件文件后,将其保存到电脑上的一个易于访问的位置,例如桌面。 4. 然后,打开Sony Reader PRS-700所连接的电脑上的文件浏览器,找到Sony Reader PRS-700的内部存储空间。 5. 在内部存储空间中创建一个名为"upgrade"的新文件夹。 6. 将下载的固件文件复制或移动到刚刚创建的"upgrade"文件夹中。 7. 确保将固件文件正确地放置在"upgrade"文件夹中后,安全地断开Sony Reader PRS-700与电脑的连接。 8. 在Sony Reader PRS-700上,进入设备的设置菜单。这个菜单通常可以通过点击屏幕上的“菜单”按钮或通过主屏幕上的设置图标来访问。 9. 在设置菜单中,找到并选择“固件升级”选项。 10. 进入固件升级选项后,Sony Reader PRS-700将会检测到内部存储器中的固件文件,然后提示你进行固件升级。 11. 确认进行固件升级后,Sony Reader PRS-700将自动开始固件升级过程。 12. 等待固件升级过程完成。这个过程可能需要几分钟时间,取决于固件文件的大小和设备的性能。 13. 当固件升级完成后,Sony Reader PRS-700将会重新启动,并在启动过程中加载新的中文固件。 通过这些步骤,你可以成功地将中文固件刷入Sony Reader PRS-700,让你可以在设备上阅读中文内容。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值