同一个盘热插拔换槽位,半小时内进行,结果显示累计通电时间差距60+小时。

问题描述

半小时内 同一个盘 插在不同的槽位 累计通电时间最大应该相差1小时 但是差了60+小时 ,低概率出现,只出现2次



KunLun2280V2_123456_20260226-2000.tar.gz (1.7 MB)

环境信息

  • 软件版本:[如 OpenUBMC251230]

重现步骤

  1. 在槽位A,观察硬盘的通电时间
  2. 热拔插换槽位。
  3. 等硬盘信息获取完毕后,观察通电时间,对比时长变化。

期望结果

通电时间差异变化不大,半小时一小时以内。

实际结果

通电时间变化60h以上。

分析结论


BMC从硬盘pdinfo中获取和解析。暂不清楚为什么pdinfo获取出来就会产生较大差异。

出现问题时 有带内查询过两次硬盘的通电时间吗
这个属性没有持久化 bmc的问题可能比较小

没有在带内查过,我让测试后面关注一下
。那这么说会跟硬盘强相关了?能看下读取的来源或者库吗,是否会有其它处理,比如强转导致精度损失什么的

数据类型是U32 不是浮点数,没有精度损失

/*
 * Description: 获取SATA硬盘的累计上电时间
*/
static guint32 GetSATAPowerOnHours(SML_PD_INFO_S *pPDInfo)
{
    guint32 power_on_hours = STORAGE_INFO_INVALID_DWORD; // indicates not support

    if (pPDInfo->hw_defined_smartinfo.valid_flag == TRUE) {
        power_on_hours = (guint32)(0xFFFFFFFF &
            GetHWDefinedSmartAttrRawById(pPDInfo, HW_DEFINED_SMART_ATTRIBUTE_ID_POWER_ON_HOURS));
        debug_log(DLOG_INFO, "SATA HW Defined Smart, power on hours: %d", power_on_hours);
    } else if (pPDInfo->smartinfo.valid_flag == TRUE) {
        power_on_hours = (guint32)(0xFFFFFFFF &
            GetVendorSmartAttrRawByAttrId(pPDInfo, ATA_SMART_ATTRIBUTE_ID_POWER_ON_HOURS));
        debug_log(DLOG_INFO, "SATA Vendor Smart, power on hours: %d", power_on_hours);
    }
 
    return power_on_hours;
}