特性配置 - 深入分析: Namespace Management 命令 (第293页)
NVME2.0协议解读 1 min read

特性配置 - 深入分析: Namespace Management 命令 (第293页)

Blog Author

深入分析: Namespace Management 命令

命令概述

Namespace Management 命令用于管理命名空间的创建与删除。它可以由主机发出,用于管理命名空间的生命周期。这个命令对于命名空间的创建和删除非常重要,确保了命名空间在存储系统中的正确配置和管理。

命令结构

  1. Data Pointer (DPTR)
  2. Data Pointer 用来指定数据缓冲区的起始位置。这个字段用于创建和管理命名空间时,指向数据缓冲区。如果使用 PRP(Physical Region Pages)时,数据缓冲区不得跨越多个页面边界,确保操作的有效性。
  3. 该字段不应指向 PRP 列表(即,PRP 列表不可以跨越多个页面边界)。

  4. Command Dword 10 (SEL)

  5. Select (SEL) 字段指定命名空间管理操作的类型:
    • 0h:创建命名空间(Create)
    • 1h:删除命名空间(Delete)
    • 2hFh:保留字段(Reserved)
  6. 根据 SEL 字段的值,控制器会执行不同的操作:创建命名空间或者删除命名空间。

  7. Command Dword 11 (CSI)

  8. Command Set Identifier (CSI):指定命名空间创建时使用的 I/O 命令集。如果 SEL 字段为 0h(创建操作),则此字段指定用于创建命名空间的 I/O 命令集。对于删除操作,此字段保留。

    • CSI 值为 0h 时,使用 NVM 命令集来创建命名空间。
    • 对于其他 I/O 命令集,该字段会按照相应的命令集规范设置。
  9. Data Structure for Create

  10. 对于创建命名空间的操作,命名空间的标识符(NSID)由控制器选择。主机软件清空 NSID 字段并设置为 0h,控制器将选择一个可用的命名空间标识符(NSID)进行操作。
  11. 对于删除操作,NSID 字段指定要删除的命名空间。如果指定值为 FFFFFFFFh,则删除所有命名空间。如果没有有效命名空间,命令仍然成功完成。

命令完成后的处理

  • 当命令完成时,控制器会向 Admin Completion Queue 发送一条完成队列条目,指示命令的执行状态。
  • 删除命名空间的操作会检查系统中是否存在有效的命名空间。如果指定的 NSIDFFFFFFFFh,则删除所有命名空间;如果没有有效的命名空间,命令也会成功完成。

命令状态值

对于命名空间管理操作,如果出现错误,以下是可能的命令状态值: - Namespace Already Attached:命名空间已经附加,无法进行某些操作。 - Namespace Is Private:命名空间是私有的,无法附加到另一个控制器。 - Namespace Not Attached:无法执行分离操作,因为控制器未附加到命名空间。

总结

Namespace Management 命令主要负责命名空间的创建与删除操作。创建操作由控制器选择适当的命名空间标识符进行处理,删除操作通过指定 NSID 删除特定的命名空间或全部命名空间。命令通过清晰的字段结构和错误代码确保命名空间操作的安全性和正确性。