【已评审】变更、新增私有对象支持硬盘槽位编码

背景

根据客户要求,硬盘背板上硬盘的整机丝印需要根据内置M.2盘数量动态后移,多硬盘背板场景下硬盘槽位号需要从0开始编码且连续。例如:只有一个M.2硬盘时,M.2的槽位号为0,前置硬盘背板上的硬盘整机丝印从1开始;如果有2个M.2硬盘,M.2硬盘的槽位号为0和1,前置背板上的槽位号为2~x。

关联ISSUE

支持配置硬盘背板的起始槽位

整体方案

1.在platform.sr中新增DriveSlotAllocationEnabled属性表示硬盘槽位号全局编码特性开关
2. 特性开关打开时,general_hardware监听HardwareComplete信号,当其为true时表示所有插入的硬盘背板已分发完成,此时根据DriveStartSlotConfig中的配置进行匹配更新StartSlot
3. general_hardware根据本次和上次的特性开关和配置匹配情况设置DriveSlotAllocationStatus
4. storage组件监听DriveSlotAllocationStatus的状态更新硬盘槽位号并使用更新后的Id作为主键更新持久化数据
5. storage组件调用pcie_device组件提供的设置PcieAddrInfo的SlotID接口更新SlotID,bios组件监听更新丝印

评审点一

对象HddBackPlanes下新增私有属性

详细描述

Storage组件Drive对象持久化数据通过Id作为主键进行存储,因此在全局硬盘槽位编码的过程中,需要综合考虑本次槽位编码配置和上次槽位编码配置情况,及时更新持久化数据,避免主键Id变更之后出现数据冲突。LastAllocationEnabled用于记录上次全局编码特性开关情况,LastAllocationConfig用于记录上次使用的全局编码配置。

变化类型:新增私有属性

应用场景:用于灵活定义硬板槽位

持久化类型: 部分持久化

操作权限:ReadOnly

变更类型 属性名称 签名 只读 变化通知 属性描述 访问权限 属性来源 持久化类型 变更影响
新增 DriveSlotAllocationEnabled b True False 表示硬盘槽位全局编码特性开关 Read: ReadOnly 通过platform.sr配置 不持久化 无影响
新增 LastAllocationEnabled b True False 环境上一次硬盘槽位全局编码特性开关情况 Read: ReadOnly general_hardware组件根据platform.sr的配置维护 持久化 无影响
新增 LastAllocationConfig y True False 环境上一次硬盘槽位全局编码配置 Read: ReadOnly general_hardware组件根据硬盘槽位编码维护 持久化 无影响

评审点二

在私有对象DriveStartSlotCnfig下的Configurations对象进行如下变更:
变更属性:变成属性名ChildStartSlotChildPriority,不再通过csr配死每个背板的起始槽位,改为通过优先级进行全局计算

详细描述

变化类型:PSR中变更私有对象

应用场景:用于灵活定义硬板槽位

持久化类型: 不持久化

操作权限:ReadOnly

变更类型 属性名称 签名 只读 变化通知 属性描述 访问权限 属性来源 持久化类型 变更影响
变更 变更ChildStartSlot为ChildPriority ay True False 表示硬盘背板插在上级单板不同槽位的编码优先级 Read: ReadOnly 通过csr版本配置 不持久化 无影响

参考示例
原配置:

"DriveStartSlotConfig_1": {
    "Configurations": [
      {
        "UID": "000XXX1",
        "Slot": 1,
        "ChildSlotIndex": [1, 6],
        "ChildStartSlot": [9, 0]
      },
      {
        "UID": "000XXX2",
        "Slot": 2,
        "ChildSlotIndex": [1, 2, 6],
        "ChildStartSlot": [5, 13, 1]
      }
    ]
}

新配置:

"DriveStartSlotConfig_1": {
    "Configurations": [
      {
        "UID": "000XXX1",
        "Slot": 1,
        "ChildSlotIndex": [1, 6],
        "ChildPriority": [3, 0]
      },
      {
        "UID": "000XXX2",
        "Slot": 2,
        "ChildSlotIndex": [1, 2, 6],
        "ChildPriority": [2, 4, 1]
      }
    ]
}

评审结论

评审点一、 同意在对象HddBackPlanes下新增私有属性DriveSlotAllocationEnabled、LastAllocationEnabled、 LastAllocationEnabled用于记录环境硬盘背板槽位编码配置。
评审点二、 不同意在私有对象DriveStartSlotCnfig下的Configurations对象中变更属性ChildStartSlot为ChildPriority。

遗留问题