sphinx.addnodesdocument)}( rawsourcechildren]( translations LanguagesNode)}(hhh](h pending_xref)}(hhh]docutils.nodesTextEnglish}parenthsba attributes}(ids]classes]names]dupnames]backrefs] refdomainstdreftypedoc reftarget /scsi/libsasmodnameN classnameN refexplicitutagnamehhh ubh)}(hhh]hChinese (Traditional)}hh2sbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget/translations/zh_TW/scsi/libsasmodnameN classnameN refexplicituh1hhh ubh)}(hhh]hItalian}hhFsbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget/translations/it_IT/scsi/libsasmodnameN classnameN refexplicituh1hhh ubh)}(hhh]hJapanese}hhZsbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget/translations/ja_JP/scsi/libsasmodnameN classnameN refexplicituh1hhh ubh)}(hhh]hKorean}hhnsbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget/translations/ko_KR/scsi/libsasmodnameN classnameN refexplicituh1hhh ubh)}(hhh]hPortuguese (Brazilian)}hhsbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget/translations/pt_BR/scsi/libsasmodnameN classnameN refexplicituh1hhh ubh)}(hhh]hSpanish}hhsbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget/translations/sp_SP/scsi/libsasmodnameN classnameN refexplicituh1hhh ubeh}(h]h ]h"]h$]h&]current_languageChinese (Simplified)uh1h hh _documenthsourceNlineNubhcomment)}(h SPDX-License-Identifier: GPL-2.0h]h SPDX-License-Identifier: GPL-2.0}hhsbah}(h]h ]h"]h$]h&] xml:spacepreserveuh1hhhhhhL/var/lib/git/docbuild/linux/Documentation/translations/zh_CN/scsi/libsas.rsthKubhnote)}(hX{此文件的目的是为让中文读者更容易阅读和理解,而不是作为一个分支。 因此, 如果您对此文件有任何意见或更新,请先尝试更新原始英文文件。 如果您发现本文档与原始文件有任何不同或者有翻译问题,请发建议或者补丁给 该文件的译者,或者请求中文文档维护者和审阅者的帮助。h]h paragraph)}(hX{此文件的目的是为让中文读者更容易阅读和理解,而不是作为一个分支。 因此, 如果您对此文件有任何意见或更新,请先尝试更新原始英文文件。 如果您发现本文档与原始文件有任何不同或者有翻译问题,请发建议或者补丁给 该文件的译者,或者请求中文文档维护者和审阅者的帮助。h]hX{此文件的目的是为让中文读者更容易阅读和理解,而不是作为一个分支。 因此, 如果您对此文件有任何意见或更新,请先尝试更新原始英文文件。 如果您发现本文档与原始文件有任何不同或者有翻译问题,请发建议或者补丁给 该文件的译者,或者请求中文文档维护者和审阅者的帮助。}(hhhhhNhNubah}(h]h ]h"]h$]h&]uh1hh5Documentation/translations/zh_CN/disclaimer-zh_CN.rsthKhhubah}(h]h ]h"]h$]h&]uh1hhhhhhhhNubh field_list)}(hhh](hfield)}(hhh](h field_name)}(hOriginalh]hOriginal}(hhhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhhhKubh field_body)}(hDocumentation/scsi/libsas.rst h]h)}(hDocumentation/scsi/libsas.rsth]hDocumentation/scsi/libsas.rst}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1hhhubeh}(h]h ]h"]h$]h&]uh1hhhhKhhhhubh)}(hhh](h)}(h翻译h]h翻译}(hj"hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhhhKubj)}(h3张钰杰 Yujie Zhang h]h)}(h2张钰杰 Yujie Zhang h](h张钰杰 Yujie Zhang <}(hj4hhhNhNubh reference)}(hyjzhang@leap-io-kernel.comh]hyjzhang@leap-io-kernel.com}(hj>hhhNhNubah}(h]h ]h"]h$]h&]refuri!mailto:yjzhang@leap-io-kernel.comuh1j<hj4ubh>}(hj4hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhKhj0ubah}(h]h ]h"]h$]h&]uh1hhjubeh}(h]h ]h"]h$]h&]uh1hhhhKhhhhubh)}(hhh](h)}(h校译h]h校译}(hjghhhNhNubah}(h]h ]h"]h$]h&]uh1hhjdhhhKubj)}(hhh]h}(h]h ]h"]h$]h&]uh1hhjdubeh}(h]h ]h"]h$]h&]uh1hhhhK hhhhubeh}(h]h ]h"]h$]h&]uh1hhhhhhhhKubhsection)}(hhh](htitle)}(hSAS 层h]hSAS 层}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjhhhhhKubh)}(hXSAS 层是一个管理基础架构,用于管理 SAS LLDD。它位于 SCSI Core 与 SAS LLDD 之间。 体系结构如下: SCSI Core 关注的是 SAM/SPC 相 关的问题;SAS LLDD 及其序列控制器负责 PHY 层、OOB 信号以及链路 管理;而 SAS 层则负责以下任务::h]hXSAS 层是一个管理基础架构,用于管理 SAS LLDD。它位于 SCSI Core 与 SAS LLDD 之间。 体系结构如下: SCSI Core 关注的是 SAM/SPC 相 关的问题;SAS LLDD 及其序列控制器负责 PHY 层、OOB 信号以及链路 管理;而 SAS 层则负责以下任务:}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjhhubh literal_block)}(hX* SAS Phy、Port 和主机适配器(HA)事件管理(事件由 LLDD 生成,由 SAS 层处理); * SAS 端口的管理(创建与销毁); * SAS 域的发现与重新验证; * SAS 域内设备的管理; * SCSI 主机的注册与注销; * 将设备注册到 SCSI Core(SAS 设备)或 libata(SATA 设备); * 扩展器的管理,并向用户空间导出扩展器控制接口。h]hX* SAS Phy、Port 和主机适配器(HA)事件管理(事件由 LLDD 生成,由 SAS 层处理); * SAS 端口的管理(创建与销毁); * SAS 域的发现与重新验证; * SAS 域内设备的管理; * SCSI 主机的注册与注销; * 将设备注册到 SCSI Core(SAS 设备)或 libata(SATA 设备); * 扩展器的管理,并向用户空间导出扩展器控制接口。}hjsbah}(h]h ]h"]h$]h&]hhuh1jhhhKhjhhubh)}(hSAS LLDD 是一种 PCI 设备驱动程序。它负责 PHY 层和 OOB(带外) 信号的管理、厂商特定的任务,并向 SAS 层上报事件。h]hSAS LLDD 是一种 PCI 设备驱动程序。它负责 PHY 层和 OOB(带外) 信号的管理、厂商特定的任务,并向 SAS 层上报事件。}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjhhubh)}(hBSAS 层实现了 SAS 1.1 规范中定义的大部分 SAS 功能。h]hBSAS 层实现了 SAS 1.1 规范中定义的大部分 SAS 功能。}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK!hjhhubh)}(hsas_ha_struct 结构体用于向 SAS 层描述一个 SAS LLDD。该结构的 大部分字段由 SAS 层使用,但其中少数字段需要由 LLDD 进行初始化。h]hsas_ha_struct 结构体用于向 SAS 层描述一个 SAS LLDD。该结构的 大部分字段由 SAS 层使用,但其中少数字段需要由 LLDD 进行初始化。}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK#hjhhubh)}(hX在完成硬件初始化之后,应当在驱动的 probe() 函数中调用 sas_register_ha()。该函数会将 LLDD 注册到 SCSI 子系统中,创 建一个对应的 SCSI 主机,并将你的 SAS 驱动程序注册到其在 sysfs 下创建的 SAS 设备树中。随后该函数将返回。接着,你需要使能 PHY, 以启动实际的 OOB(带外)过程;此时驱动将开始调用 notify_* 系 列事件回调函数。h]hX在完成硬件初始化之后,应当在驱动的 probe() 函数中调用 sas_register_ha()。该函数会将 LLDD 注册到 SCSI 子系统中,创 建一个对应的 SCSI 主机,并将你的 SAS 驱动程序注册到其在 sysfs 下创建的 SAS 设备树中。随后该函数将返回。接着,你需要使能 PHY, 以启动实际的 OOB(带外)过程;此时驱动将开始调用 notify_* 系 列事件回调函数。}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK&hjhhubj)}(hhh](j)}(h结构体说明h]h结构体说明}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjhhhhhK.ubj)}(hhh](j)}(h``struct sas_phy``h]hliteral)}(hj h]hstruct sas_phy}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j hj ubah}(h]h ]h"]h$]h&]uh1jhjhhhhhK1ubh)}(hf通常情况下,该结构体会被静态地嵌入到驱动自身定义的 PHY 结构体中, 例如::h]he通常情况下,该结构体会被静态地嵌入到驱动自身定义的 PHY 结构体中, 例如:}(hj"hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK3hjhhubj)}(hMstruct my_phy { blah; struct sas_phy sas_phy; bleh; }h]hMstruct my_phy { blah; struct sas_phy sas_phy; bleh; }}hj0sbah}(h]h ]h"]h$]h&]hhuh1jhhhK6hjhhubh)}(h随后,在主机适配器(HA)的结构体中,所有的 PHY 通常以 my_phy 数组的形式存在(如下文所示)。h]h随后,在主机适配器(HA)的结构体中,所有的 PHY 通常以 my_phy 数组的形式存在(如下文所示)。}(hj>hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKsas_ha.sas_addr = &my_ha->sas_addr[0]; for (i = 0; i < MAX_PHYS; i++) { sas_phys[i] = &my_ha->phys[i].sas_phy; sas_ports[i] = &my_ha->sas_ports[i]; } my_ha->sas_ha.sas_phy = sas_phys; my_ha->sas_ha.sas_port = sas_ports; my_ha->sas_ha.num_phys = MAX_PHYS; my_ha->sas_ha.lldd_port_formed = my_port_formed; my_ha->sas_ha.lldd_dev_found = my_dev_found; my_ha->sas_ha.lldd_dev_gone = my_dev_gone; my_ha->sas_ha.lldd_execute_task = my_execute_task; my_ha->sas_ha.lldd_abort_task = my_abort_task; my_ha->sas_ha.lldd_abort_task_set = my_abort_task_set; my_ha->sas_ha.lldd_clear_task_set = my_clear_task_set; my_ha->sas_ha.lldd_I_T_nexus_reset= NULL; (2) my_ha->sas_ha.lldd_lu_reset = my_lu_reset; my_ha->sas_ha.lldd_query_task = my_query_task; my_ha->sas_ha.lldd_clear_nexus_port = my_clear_nexus_port; my_ha->sas_ha.lldd_clear_nexus_ha = my_clear_nexus_ha; my_ha->sas_ha.lldd_control_phy = my_control_phy; return sas_register_ha(&my_ha->sas_ha); }h]hX<static int register_sas_ha(struct my_sas_ha *my_ha) { int i; static struct sas_phy *sas_phys[MAX_PHYS]; static struct sas_port *sas_ports[MAX_PHYS]; my_ha->sas_ha.sas_addr = &my_ha->sas_addr[0]; for (i = 0; i < MAX_PHYS; i++) { sas_phys[i] = &my_ha->phys[i].sas_phy; sas_ports[i] = &my_ha->sas_ports[i]; } my_ha->sas_ha.sas_phy = sas_phys; my_ha->sas_ha.sas_port = sas_ports; my_ha->sas_ha.num_phys = MAX_PHYS; my_ha->sas_ha.lldd_port_formed = my_port_formed; my_ha->sas_ha.lldd_dev_found = my_dev_found; my_ha->sas_ha.lldd_dev_gone = my_dev_gone; my_ha->sas_ha.lldd_execute_task = my_execute_task; my_ha->sas_ha.lldd_abort_task = my_abort_task; my_ha->sas_ha.lldd_abort_task_set = my_abort_task_set; my_ha->sas_ha.lldd_clear_task_set = my_clear_task_set; my_ha->sas_ha.lldd_I_T_nexus_reset= NULL; (2) my_ha->sas_ha.lldd_lu_reset = my_lu_reset; my_ha->sas_ha.lldd_query_task = my_query_task; my_ha->sas_ha.lldd_clear_nexus_port = my_clear_nexus_port; my_ha->sas_ha.lldd_clear_nexus_ha = my_clear_nexus_ha; my_ha->sas_ha.lldd_control_phy = my_control_phy; return sas_register_ha(&my_ha->sas_ha); }}hjIsbah}(h]h ]h"]h$]h&]hhuh1jhhhKhjhhubhenumerated_list)}(hhh]j)}(hASAS 1.1 未定义 I_T Nexus Reset TMF(任务管理功能)。 h]h)}(h@SAS 1.1 未定义 I_T Nexus Reset TMF(任务管理功能)。h]h@SAS 1.1 未定义 I_T Nexus Reset TMF(任务管理功能)。}(hj`hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhj\ubah}(h]h ]h"]h$]h&]uh1jhjYhhhhhNubah}(h]h ]h"]h$]h&]enumtypearabicprefix(suffix)startKuh1jWhjhhhhhMubeh}(h]sas-portah ]h"]sas_portah$]h&]uh1jhjhhhhhKubeh}(h]struct-sas-ha-structah ]h"]struct sas_ha_structah$]h&]uh1jhjhhhhhKubeh}(h]id1ah ]h"]结构体说明ah$]h&]uh1jhjhhhhhK.ubj)}(hhh](j)}(h事件h]h事件}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjhhhhhM ubh)}(h事件是 SAS LLDD 唯一的通知 SAS 层发生任何情况的方式。 LLDD 没有其他方法可以告知 SAS 层其内部或 SAS 域中发生的事件。h]h事件是 SAS LLDD 唯一的通知 SAS 层发生任何情况的方式。 LLDD 没有其他方法可以告知 SAS 层其内部或 SAS 域中发生的事件。}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhM hjhhubh)}(h Phy 事件::h]h Phy 事件:}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhjhhubj)}(hRPHYE_LOSS_OF_SIGNAL, (C) PHYE_OOB_DONE, PHYE_OOB_ERROR, (C) PHYE_SPINUP_HOLD.h]hRPHYE_LOSS_OF_SIGNAL, (C) PHYE_OOB_DONE, PHYE_OOB_ERROR, (C) PHYE_SPINUP_HOLD.}hjsbah}(h]h ]h"]h$]h&]hhuh1jhhhMhjhhubh)}(h$端口事件,通过 _phy_ 传递::h]h#端口事件,通过 _phy_ 传递:}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhjhhubj)}(hPORTE_BYTES_DMAED, (M) PORTE_BROADCAST_RCVD, (E) PORTE_LINK_RESET_ERR, (C) PORTE_TIMER_EVENT, (C) PORTE_HARD_RESET.h]hPORTE_BYTES_DMAED, (M) PORTE_BROADCAST_RCVD, (E) PORTE_LINK_RESET_ERR, (C) PORTE_TIMER_EVENT, (C) PORTE_HARD_RESET.}hjsbah}(h]h ]h"]h$]h&]hhuh1jhhhMhjhhubjw)}(hhh]j|)}(h#主机适配器事件: HAE_RESET h](j)}(h主机适配器事件:h]h主机适配器事件:}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhhhMhjubj)}(hhh]h)}(h HAE_RESETh]h HAE_RESET}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhj ubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1j{hhhMhjubah}(h]h ]h"]h$]h&]uh1jvhjhhhhhNubh)}(h&SAS LLDD 应能够生成以下事件::h]h%SAS LLDD 应能够生成以下事件:}(hj( hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhM hjhhubj)}(hX2 - 来自 C 组的至少一个事件(可选), - 标记为 M(必需)的事件为必需事件(至少一种); - 若希望 SAS 层处理域重新验证(domain revalidation),则 应生成标记为 E(扩展器)的事件(仅需一种); - 未标记的事件为可选事件。h]hX2 - 来自 C 组的至少一个事件(可选), - 标记为 M(必需)的事件为必需事件(至少一种); - 若希望 SAS 层处理域重新验证(domain revalidation),则 应生成标记为 E(扩展器)的事件(仅需一种); - 未标记的事件为可选事件。}hj6 sbah}(h]h ]h"]h$]h&]hhuh1jhhhM"hjhhubh)}(h含义h]h含义}(hjD hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhM(hjhhubjw)}(hhh](j|)}(h8HAE_RESET - 当 HA 发生内部错误并被复位时。 h](j)}(h HAE_RESETh]h HAE_RESET}(hjY hhhNhNubah}(h]h ]h"]h$]h&]uh1jhhhM+hjU ubj)}(hhh]j)}(hhh]j)}(h,当 HA 发生内部错误并被复位时。 h]h)}(h+当 HA 发生内部错误并被复位时。h]h+当 HA 发生内部错误并被复位时。}(hjq hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhM+hjm ubah}(h]h ]h"]h$]h&]uh1jhjj ubah}(h]h ]h"]h$]h&]jjuh1jhhhM+hjg ubah}(h]h ]h"]h$]h&]uh1jhjU ubeh}(h]h ]h"]h$]h&]uh1j{hhhM+hjR ubj|)}(h8PORTE_BYTES_DMAED - 在接收到 IDENTIFY/FIS 帧时。 h](j)}(hPORTE_BYTES_DMAEDh]hPORTE_BYTES_DMAED}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhhhM.hj ubj)}(hhh]j)}(hhh]j)}(h$在接收到 IDENTIFY/FIS 帧时。 h]h)}(h#在接收到 IDENTIFY/FIS 帧时。h]h#在接收到 IDENTIFY/FIS 帧时。}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhM.hj ubah}(h]h ]h"]h$]h&]uh1jhj ubah}(h]h ]h"]h$]h&]jjuh1jhhhM.hj ubah}(h]h ]h"]h$]h&]uh1jhj ubeh}(h]h ]h"]h$]h&]uh1j{hhhM.hjR hhubj|)}(h6PORTE_BROADCAST_RCVD - 在接收到一个原语时。 h](j)}(hPORTE_BROADCAST_RCVDh]hPORTE_BROADCAST_RCVD}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhhhM1hj ubj)}(hhh]j)}(hhh]j)}(h在接收到一个原语时。 h]h)}(h在接收到一个原语时。h]h在接收到一个原语时。}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhM1hj ubah}(h]h ]h"]h$]h&]uh1jhj ubah}(h]h ]h"]h$]h&]jjuh1jhhhM1hj ubah}(h]h ]h"]h$]h&]uh1jhj ubeh}(h]h ]h"]h$]h&]uh1j{hhhM1hjR hhubj|)}(hUPORTE_LINK_RESET_ERR - 定时器超时、信号丢失、丢失 DWS 等情况。 [1]_ h](j)}(hPORTE_LINK_RESET_ERRh]hPORTE_LINK_RESET_ERR}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhhhM4hj ubj)}(hhh]j)}(hhh]j)}(h>定时器超时、信号丢失、丢失 DWS 等情况。 [1]_ h]h)}(h=定时器超时、信号丢失、丢失 DWS 等情况。 [1]_h](h9定时器超时、信号丢失、丢失 DWS 等情况。 }(hj7 hhhNhNubhfootnote_reference)}(h[1]_h]h1}(hjA hhhNhNubah}(h]id3ah ]h"]h$]h&]refidid7docnametranslations/zh_CN/scsi/libsasuh1j? hj7 resolvedKubeh}(h]h ]h"]h$]h&]uh1hhhhM4hj3 ubah}(h]h ]h"]h$]h&]uh1jhj0 ubah}(h]h ]h"]h$]h&]jjuh1jhhhM4hj- ubah}(h]h ]h"]h$]h&]uh1jhj ubeh}(h]h ]h"]h$]h&]uh1j{hhhM4hjR hhubj|)}(h>PORTE_TIMER_EVENT - DWS 复位超时定时器到期时。[1]_ h](j)}(hPORTE_TIMER_EVENTh]hPORTE_TIMER_EVENT}(hjw hhhNhNubah}(h]h ]h"]h$]h&]uh1jhhhM7hjs ubj)}(hhh]j)}(hhh]j)}(h*DWS 复位超时定时器到期时。[1]_ h]h)}(h)DWS 复位超时定时器到期时。[1]_h](h%DWS 复位超时定时器到期时。}(hj hhhNhNubj@ )}(h[1]_h]h1}(hj hhhNhNubah}(h]id4ah ]h"]h$]h&]jP jQ jR jS uh1j? hj jT Kubeh}(h]h ]h"]h$]h&]uh1hhhhM7hj ubah}(h]h ]h"]h$]h&]uh1jhj ubah}(h]h ]h"]h$]h&]jjuh1jhhhM7hj ubah}(h]h ]h"]h$]h&]uh1jhjs ubeh}(h]h ]h"]h$]h&]uh1j{hhhM7hjR hhubj|)}(h/PORTE_HARD_RESET - 收到 Hard Reset 原语。 h](j)}(hPORTE_HARD_RESETh]hPORTE_HARD_RESET}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhhhM:hj ubj)}(hhh]j)}(hhh]j)}(h收到 Hard Reset 原语。 h]h)}(h收到 Hard Reset 原语。h]h收到 Hard Reset 原语。}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhM:hj ubah}(h]h ]h"]h$]h&]uh1jhj ubah}(h]h ]h"]h$]h&]jjuh1jhhhM:hj ubah}(h]h ]h"]h$]h&]uh1jhj ubeh}(h]h ]h"]h$]h&]uh1j{hhhM:hjR hhubj|)}(h4PHYE_LOSS_OF_SIGNAL - 设备已断开连接。 [1]_ h](j)}(hPHYE_LOSS_OF_SIGNALh]hPHYE_LOSS_OF_SIGNAL}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhhhM=hj ubj)}(hhh]j)}(hhh]j)}(h设备已断开连接。 [1]_ h]h)}(h设备已断开连接。 [1]_h](h设备已断开连接。 }(hj" hhhNhNubj@ )}(h[1]_h]h1}(hj* hhhNhNubah}(h]id5ah ]h"]h$]h&]jP jQ jR jS uh1j? hj" jT Kubeh}(h]h ]h"]h$]h&]uh1hhhhM=hj ubah}(h]h ]h"]h$]h&]uh1jhj ubah}(h]h ]h"]h$]h&]jjuh1jhhhM=hj ubah}(h]h ]h"]h$]h&]uh1jhj ubeh}(h]h ]h"]h$]h&]uh1j{hhhM=hjR hhubj|)}(hEnumerated list start value not ordinal-1: “2” (ordinal 2)}(hj,hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj)ubah}(h]h ]h"]h$]h&]levelKtypeINFOsourcehnjlineKuh1j'hjhhhhhMubj()}(hhh]h)}(h:Enumerated list start value not ordinal-1: "2" (ordinal 2)h]h>Enumerated list start value not ordinal-1: “2” (ordinal 2)}(hjHhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjEubah}(h]h ]h"]h$]h&]levelKtypejBsourcehnjlineKuh1j'hjm hhhhhMubj()}(hhh]h)}(h:Enumerated list start value not ordinal-1: "3" (ordinal 3)h]h>Enumerated list start value not ordinal-1: “3” (ordinal 3)}(hjchhhNhNubah}(h]h ]h"]h$]h&]uh1hhj`ubah}(h]h ]h"]h$]h&]levelKtypejBsourcehnjlineKuh1j'hjm hhhhhMubj()}(hhh]h)}(h:Enumerated list start value not ordinal-1: "4" (ordinal 4)h]h>Enumerated list start value not ordinal-1: “4” (ordinal 4)}(hj~hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj{ubah}(h]h ]h"]h$]h&]levelKtypejBsourcehnjlineKuh1j'hjm hhhhhMubetransform_messages] transformerN include_log]0Documentation/translations/zh_CN/scsi/libsas.rst(NNNNta decorationNhhub.