--- ./source/private_module/bdm/ld/ld_forward.c	2018-02-09 07:36:26.000000000 +0000
+++ ./source/private_module/bdm/ld/ld_forward.c.hotpatch	2022-11-02 06:32:20.000000000 +0000
@@ -1094,12 +1094,12 @@
     LD_REQ_PRIVATE_INFO* private = NULL;
 	
     private = (LD_REQ_PRIVATE_INFO*)(void*)req->producerPrivate;
-    memset(&private->newErrorInfo, 0, sizeof(CFG_ERR_INFO_S));
     /*End Modified by c00230409 AR.SR.SF-0000248292.008.006 20171213*/
     SMART_TP_CALL(LD_TP_REQ_FWD_FAIL, &ret);
     if (RETURN_OK != ret)
     {
         /*Begin Modified by c00230409 AR.SR.SF-0000248292.008.006 20171213*/
+        memset(&private->newErrorInfo, 0, sizeof(CFG_ERR_INFO_S));
         private->newErrorInfo.bdmByte = BDM_INNER_ERROR_XNET;
         /*End Modified by c00230409 AR.SR.SF-0000248292.008.006 20171213*/
         DBG_LogError(LOG_ID_LD_0279, "TP set IO_FORWARD failed.");
--- ./source/private_module/bdm/ld/stub_v3/stub_ld.c	2018-04-11 12:46:26.000000000 +0000
+++ ./source/private_module/bdm/ld/stub_v3/stub_ld.c.hotpatch	2022-11-06 02:17:59.000000000 +0000
@@ -65,9 +65,9 @@
 #include "fdsa_inner.h"
 #include "fdsa.h"
 /* End Modified by m00385535 ALMCA2017121419303314 20171226 */
-
-
 MODULE_ID(PID_BDM_LD);
+#define LD_REQ_TIMEOUT_MASK    9 
+#define LD_TIMEOUT_DIAG_INTERVAL_SPH050  (5 * 60 * HZ)
 
 extern const char* g_ldDiskReqActionStr[];
 
@@ -710,7 +710,7 @@
     
     if (isDisk)
     {
-        ret = LD_REQ_DIF_VERIFY(req, OP_WRITE, DIF_VERIFY_LEVEL_TRACE);

+        ret = LD_REQ_DIF_VERIFY(req, OP_WRITE, DIF_VERIFY_LEVEL_TRACE);
         /* Dorado 5000 modified begin */
         ANY_TRACE_CALL(LD_DIF_HANDLE_TRACE, 3, "[LD_DIF_H]Req(0x%p) op(%u) from LDID(%llu) forward dif verify result(%d).",
                         req, req->opCode, req->objectId, ret);
@@ -1646,7 +1646,7 @@
         sioSetReqFlag(childReq, SIO_REQ_FLAG_NOMERGE);
     }
 }
-
+extern bool SdStartDiagnoseSph050(uint32_t sdevId, uint32_t diagnoseCode, SD_DIAG_INFO_S* diag, bool hasTimeoutErr);
 /*Begin DTS2017111801777 y00378818 2017.11.18*/
 static inline bool ldDiskQuickBackJudge(REQ_S *req)
 {
@@ -1665,7 +1665,7 @@
     }
     return FALSE;
 }
-
+int32_t LdDiskReqProcMulDiskDiagnoseSph050(REQ_S *req, REQ_S *childReq, LD_S* logicDisk);
 int32_t ldDIskReqSetChildReqInfoProcErrorAction(REQ_S *req, REQ_S *childReq, LD_S *logicDisk)
 {
     LD_REQ_PRIVATE_INFO *private = (LD_REQ_PRIVATE_INFO *)(void *)req->producerPrivate;
@@ -1674,14 +1674,21 @@
     uint32_t diagInfo = 0;
     uint64_t reservedSec = 0x100000; /* ӲԤ */
     uint64_t upperPhyLbaStart = 0;
+    bool hasTimeoutErr = FALSE;
 
     diagInfo = (((uint32_t)private->diagErrorInfo.sk<<24) | ((uint32_t)private->diagErrorInfo.asc<<16) |
                         ((uint32_t)private->diagErrorInfo.ascq<<8) | ((uint32_t)private->diagErrorInfo.fru));
+    
+    if (LdDiskReqProcMulDiskDiagnoseSph050(req, childReq, logicDisk) != RETURN_OK) {     
+        BDM_LOG_ERR_CAN_PRINT(DBG_LOG_BUTT, (60 * HZ), 1ULL, 
+            "SPH050: The result of tiomeout disk diagnose is multiple.");                  
+        return RETURN_ERROR;          
+    }
+    
     switch(private->actionInfo.action)
     {
         case CFG_IO_ERROR_ACTION_QUICK_DIAGNOSE:
             //SDϽӿ
-            /*Begin Modified by j00285232 DTS2015072206717 20150723*/
             BDM_LOG_ERR_CAN_PRINT(LOG_ID_LD_0041,
                 (1*HZ),
                 req->objectId,
@@ -1695,16 +1702,13 @@
                 private->newErrorInfo.asc,
                 private->newErrorInfo.ascq,
                 private->newErrorInfo.fru);
-            /*Begin Modified by j00285232 DTS2015072206717 20150723*/
             private->timeout += (int64_t)(((uint64_t)private->fgIoStgy.rePairTimeOut/1000)*HZ);/*תHZ*/
             repairTimeout = (uint32_t)((private->timeout*1000)/HZ);                  /*HZת*/
             sdDiagInfo.errLba = private->errLba;
             sdDiagInfo.errLen = private->errLen;
             sdDiagInfo.errCode = diagInfo;
             sdDiagInfo.opCode = req->opCode;
-            /*Begin Modified by j90006936 DTS2014111100568 2014.11.27*/
             sdDiagInfo.isDidError = (0 == private->newErrorInfo.hostByte) ? 0 : 1;
-            /*End Modified by j90006936 DTS2014111100568 2014.11.27*/
             SET_BIT32(private->flag, LD_REQ_DIAG_MASK);
             private->diagExeNid = GET_LOCAL_NID();
             if (BDM_CFG_IO_TYPE_DISK_FOREEND == private->ioInfo.ioType)
@@ -1732,7 +1736,6 @@
             //SDϽӿ
             ANY_TRACE_CALL(LD_DISK_REQ_ERROR_TRACE, 3, "LD disk req(0x%p) current diagnose(stgyId:%u)(diagId:%u).", 
                     req, private->strategyInfo.curStgyCode, private->actionInfo.diagnoseId);
-            /*Begin Modified by j00285232 DTS2015072206717 20150723*/
             BDM_LOG_ERR_CAN_PRINT(LOG_ID_LD_0042,
                 (1*HZ),
                 req->objectId,
@@ -1746,7 +1749,6 @@
                 private->newErrorInfo.asc,
                 private->newErrorInfo.ascq,
                 private->newErrorInfo.fru);
-            /*Begin Modified by j00285232 DTS2015072206717 20150723*/
             sdDiagInfo.errLba = private->errLba;
             sdDiagInfo.errLen = private->errLen;
             upperPhyLbaStart = req->objectLba + reservedSec + logicDisk->lbaOffset;
@@ -1758,17 +1760,15 @@
             }
             sdDiagInfo.errCode = diagInfo;
             sdDiagInfo.opCode = req->opCode;
-            /*Begin Modified by j90006936 DTS2014111100568 2014.11.27*/
             sdDiagInfo.isDidError = (0 == private->newErrorInfo.hostByte) ? 0 : 1;
-            /*End Modified by j90006936 DTS2014111100568 2014.11.27*/
+            hasTimeoutErr = BDM_TEST_BIT(LD_REQ_TIMEOUT_MASK, (void *)&private->flag) ? TRUE : FALSE;
             SET_BIT32(private->flag, LD_REQ_DIAG_MASK);
             private->diagExeNid = GET_LOCAL_NID();
-            (void)sdStartDiagnose((uint32_t)childReq->objectId, private->actionInfo.diagnoseId, &sdDiagInfo);
+            (void)SdStartDiagnoseSph050((uint32_t)childReq->objectId, private->actionInfo.diagnoseId, 
+                &sdDiagInfo,hasTimeoutErr);
             REQ_DELETE(childReq);
             req->result = (int32_t)private->strategyInfo.errCode;
-            /* DTS2016022407985 modify by y00376877 20160803 begin */
             BDM_IOD_ADD_DONEQ(req);
-            /* DTS2016022407985 modify by y00376877 20160803 end */
             return RETURN_ERROR;
         default:
             return RETURN_OK;
@@ -2701,7 +2701,7 @@
         
         if (RETURN_OK == req->result)
         {
-            ret = LD_REQ_DIF_VERIFY(req, OP_READ, DIF_VERIFY_LEVEL_TRACE);

+            ret = LD_REQ_DIF_VERIFY(req, OP_READ, DIF_VERIFY_LEVEL_TRACE);
             /* Dorado 5000 modified begin */
             ANY_TRACE_CALL(LD_DIF_HANDLE_TRACE, 1, "[LD_DIF_H]Req(0x%p) op(%u) from LDID(%llu) dif verify result(%d).", req, req->opCode, req->objectId, ret);
             /* Dorado 5000 modified end */
@@ -3304,7 +3304,7 @@
             ldPrintEhInfo(selfReq, childReq);
         }
 
-        /* Dorado 5000 modified begin */

+        /* Dorado 5000 modified begin */
         ldCopyDiagErrorInfo(logicDisk, selfReq);
         /* Dorado 5000 modified end */
     }
@@ -3702,7 +3702,7 @@
     /* תдIO DIFҪ½DIFУ飬УʧֱӷأҪһ */
     if (BDM_INNER_ERROR_FWD_DIF == private->newErrorInfo.bdmByte)
     {
-        ret = LD_REQ_DIF_VERIFY(req, OP_WRITE, DIF_VERIFY_LEVEL_CRITICAL);

+        ret = LD_REQ_DIF_VERIFY(req, OP_WRITE, DIF_VERIFY_LEVEL_CRITICAL);
         /* Dorado 5000 modified begin */
         ANY_TRACE_CALL(LD_DIF_HANDLE_TRACE, 3, "[LD_DIF_H]Req(0x%p) op(%u) from LDID(%llu) forword io back error, dif verify result(%d).", req,req->opCode, req->objectId, ret);
         /* Dorado 5000 modified end */
@@ -5195,3 +5195,125 @@
 /* PC-Lint */
 LD_USE_TRACE_POINT
 
+extern void GetSdTimeoutDiagRecordSph050(uint64_t *diagTime, char sn[DISK_SN_LEN]);
+extern bool SdDiskIsDiagnoseStateSph050(uint32_t sdId);
+
+/**************************************************************************
+   : BdmIsTimeOutBdmByteSph050
+     : bdmbyteֶжǷIOʱĴ
+ :     uint32_t bdmByte IOBDMֶ
+ : 
+   ֵ: TRUE:Ǽ¼IOʱر
+           FALSE:Ǽ¼IOʱر
+     : 
+**************************************************************************/
+bool BdmIsTimeOutBdmByteSph050(uint32_t bdmByte)
+{ 
+    if (bdmByte == BDM_INNER_ERROR_TIMEOUT ||
+        bdmByte == BDM_INNER_ERROR_TOTAL_TIMEOUT ||
+        bdmByte == BDM_INNER_ERROR_BACKEND_TIMEOUT ||
+        bdmByte == BDM_INNER_ERROR_CONTROLLER_RESET_FAIL ||
+        bdmByte == BDM_INNER_ERROR_NVME_TIMEOUT ||
+        bdmByte == BDM_INNER_ERROR_IO_OUT_QUEUE_TIME_OUT ||
+        bdmByte == BDM_INNER_ERROR_QUEUE_TIMEOUT) {
+        return TRUE;
+    } else {
+        return FALSE;
+    }    
+}
+
+/**************************************************************************
+   : LdDiskIsRepeatedTimeOutDiagSph050
+     : жǷظIOʱ
+ :     
+         1REQ_S *req:IO
+         2uint32_t logicId:Ӳ̵߼ID
+         3uint32_t bdmByte:IO¼bdm
+ : 
+   ֵ: TRUE:ظIOʱ
+           FALSE:ظIOʱ
+     : 
+**************************************************************************/
+bool LdDiskIsRepeatedTimeOutDiagSph050(REQ_S *req, uint32_t logicId, uint32_t bdmByte) 
+{
+    LD_REQ_PRIVATE_INFO* private = NULL;
+    uint64_t diagTime = 0;
+    uint32_t diskNum = 0;
+    
+    LD_S* logicDisks[DISK_PARTITION_BUTT];
+    memset(logicDisks, 0, sizeof(logicDisks));
+    
+    char sn[DISK_SN_LEN];
+    memset(sn, 0, DISK_SN_LEN);
+
+    /* IOʱϣԼ */
+    if (BdmIsTimeOutBdmByteSph050(bdmByte) == FALSE) {
+        return FALSE;
+    }
+
+    private = (LD_REQ_PRIVATE_INFO*)(void*)req->producerPrivate;
+    BDM_SET_BIT(LD_REQ_TIMEOUT_MASK, (void*)&private->flag);
+
+    GetSdTimeoutDiagRecordSph050(&diagTime, sn);
+    if (strlen(sn) == 0 || diagTime == INVALID_VALUE64) {
+        return FALSE;
+    }
+
+    if (ldGetLogicDiskByWwn((uint8_t*)sn, &diskNum, logicDisks) != RETURN_OK) {
+        return FALSE;
+    }
+
+    if (diskNum == 0) {
+        return FALSE;
+    }
+
+    if(SdDiskIsDiagnoseStateSph050(logicDisks[0]->sdiskId[GET_LOCAL_NID()]) 
+        || jiffies - diagTime <= LD_TIMEOUT_DIAG_INTERVAL_SPH050) {
+        BDM_LOG_INFO_CAN_PRINT(DBG_LOG_BUTT, (60 * HZ), 1ULL, "SPH050: diag in 5 mins, disk(%u), record disk(%u), "
+                               "now(%lu), record time(%lu), inteval(%u).", 
+                               logicId, logicDisks[0]->logicId, jiffies, diagTime, LD_TIMEOUT_DIAG_INTERVAL_SPH050);  
+        return TRUE;
+    }
+
+    return FALSE;
+}
+
+/**************************************************************************
+   : LdDiskReqProcMulDiskDiagnoseSph050
+     : ϲԣIOʱ򲻽
+ :   req       ldreq
+                            childReq  sdreq
+                            logicDisk ߼
+                            diagInfo Ϣ
+ : 
+   ֵ: OK:Խ
+           ERRORظIOʱϣµ
+     : 
+**************************************************************************/
+int32_t LdDiskReqProcMulDiskDiagnoseSph050(REQ_S *req, REQ_S *childReq, LD_S* logicDisk)
+{
+    LD_REQ_PRIVATE_INFO* private = NULL;
+
+    /*ǳԱ̣Ҫ⴦*/
+    if (logicDisk->refCount == 0) {
+        return RETURN_OK;
+    }
+
+    private = (LD_REQ_PRIVATE_INFO*)(void*)req->producerPrivate;
+    
+    /*quick_diagnosediagnosẹܵǷظIOʱ */    
+    if ((CFG_IO_ERROR_ACTION_QUICK_DIAGNOSE == private->actionInfo.action) 
+        || (CFG_IO_ERROR_ACTION_DIAGNOSE == private->actionInfo.action)) {
+        
+       if (LdDiskIsRepeatedTimeOutDiagSph050(req, logicDisk->logicId, private->newErrorInfo.bdmByte) == TRUE) {
+ 	       REQ_DELETE(childReq);
+ 	 	   req->result = 0x3000010;
+ 	 	   IOD_ADD_DONEQ(req);
+ 	 	   return RETURN_ERROR;
+       }
+    }
+    return RETURN_OK;
+}
+
+
+
--- ./source/private_module/bdm/ld/stub_v3/stub_ld_forward.c	2018-02-09 07:36:26.000000000 +0000
+++ ./source/private_module/bdm/ld/stub_v3/stub_ld_forward.c.hotpatch	2022-11-02 07:33:00.000000000 +0000
@@ -1130,7 +1130,7 @@
     LD_REQ_PRIVATE_INFO* private = NULL;
 
     private = (LD_REQ_PRIVATE_INFO*)(void*)req->producerPrivate;
-    memset(&private->newErrorInfo, 0, sizeof(CFG_ERR_INFO_S));
+    
     /*End Modified by c00230409 AR.SR.SF-0000248292.008.006 20171213*/
     
     /* Dorado 5000 modified begin */
@@ -1147,7 +1147,7 @@
     if (GET_LOCAL_NID() == nodeId)
     {
         DBG_LogError(LOG_ID_LD_027B, "IO_FORWARD:Input nodeId is localNid. Do not forward.");
-        /*Begin Modified by c00230409 AR.SR.SF-0000248292.008.006 20171213*/
+        memset(&private->newErrorInfo, 0, sizeof(CFG_ERR_INFO_S));
         private->newErrorInfo.bdmByte = BDM_INNER_ERROR_XNET;
         /*End Modified by c00230409 AR.SR.SF-0000248292.008.006 20171213*/
         return RETURN_ERROR;
@@ -1165,7 +1165,7 @@
                                req, req->objectId, 
                                req->opCode, req->objectLba, 
                                req->length, nodeId);
-        /*Begin Modified by c00230409 AR.SR.SF-0000248292.008.006 20171213*/   
+        memset(&private->newErrorInfo, 0, sizeof(CFG_ERR_INFO_S));
         private->newErrorInfo.bdmByte = BDM_INNER_ERROR_NO_RES;
         /*End Modified by c00230409 AR.SR.SF-0000248292.008.006 20171213*/
         return RETURN_ERROR;
@@ -1188,7 +1188,7 @@
         /*ͷĿռ*/
         XRB_FreeIbd(ibdData);
         ibdData = NULL;
-        /*Begin Modified by c00230409 AR.SR.SF-0000248292.008.006 20171213*/
+        memset(&private->newErrorInfo, 0, sizeof(CFG_ERR_INFO_S));
         private->newErrorInfo.bdmByte = BDM_INNER_ERROR_XNET;
         /*End Modified by c00230409 AR.SR.SF-0000248292.008.006 20171213*/
         return RETURN_ERROR;
@@ -1241,7 +1241,7 @@
             /*Begin Modified by w90005722 DTS2015031103947 20150211*/
             XRB_FreeIbd(ibdData);
             ibdData = NULL;
-            /*Begin Modified by c00230409 AR.SR.SF-0000248292.008.006 20171213*/
+            memset(&private->newErrorInfo, 0, sizeof(CFG_ERR_INFO_S));
             private->newErrorInfo.bdmByte = BDM_INNER_ERROR_XNET;
             /*End Modified by c00230409 AR.SR.SF-0000248292.008.006 20171213*/
             SYS_BUG(SYS_BUG_NORM, MODULE_FUNC_END,"Get send mode failed.");
@@ -1249,9 +1249,9 @@
             //break;
             /*End Modified by w90005722 DTS2015031103947 20150211*/
     } 
-    /*Begin Modified by c00230409 AR.SR.SF-0000248292.008.006 20171213*/
-    private->newErrorInfo.bdmByte = BDM_INNER_ERROR_OK;
-    /*End Modified by c00230409 AR.SR.SF-0000248292.008.006 20171213*/
+
+
+
     return RETURN_OK;
 }
 
--- ./source/private_module/bdm/protocol/nvme/ld/ld_nvme.c	2018-02-09 07:36:26.000000000 +0000
+++ ./source/private_module/bdm/protocol/nvme/ld/ld_nvme.c.hotpatch	2022-11-02 06:32:20.000000000 +0000
@@ -15,7 +15,7 @@
 #include "sio_nvme_intf.h"
 
 MODULE_ID(PID_BDM_LD);
-
+#define LD_REQ_TIMEOUT_MASK    9 
 /**************************************************************************
      : ж߼ǷΪNvme SSD
  : LD_S *logicDisk
@@ -32,7 +32,7 @@
 
     return FALSE;
 }
-
+extern int32_t LdDiskReqProcMulDiskDiagnoseSph050(REQ_S *req, REQ_S *childReq, LD_S* logicDisk);
 /*************************************************************************************************************
 *   : ldFillPendingListNvmeCmd2Req
 *     : nvme get pendinglistȡUNCpendinglistб
@@ -66,7 +66,7 @@
     
     return;
 }
-
+extern bool SdStartDiagnoseSph050(uint32_t sdevId, uint32_t diagnoseCode, SD_DIAG_INFO_S* diag, bool hasTimeoutErr);
 extern uint32_t ldGetErrorCodeByDiskErrorInfo(uint8_t sk, uint8_t asc, uint8_t ascq, uint8_t fru);
 extern void ldDiskPIErrVerifyData(REQ_S *req, REQ_S *childReq, LD_REQ_PRIVATE_INFO* private);
 /********************************************************
@@ -87,13 +87,17 @@
     uint32_t diagInfo = 0;
     uint64_t upperPhyLbaStart = 0;
     uint64_t reservedSec = 0x100000; /* ӲԤ */
-    
+    bool hasTimeoutErr = FALSE;
     private = (LD_REQ_PRIVATE_INFO*)(void*)req->producerPrivate;
 
     diagInfo = ldGetErrorCodeByDiskErrorInfo(private->diagErrorInfo.statusCodeType, 
                                              private->diagErrorInfo.statusCode, 
                                              private->diagErrorInfo.reserve[0], 
                                              private->diagErrorInfo.reserve[1]);
+    if (RETURN_OK != LdDiskReqProcMulDiskDiagnoseSph050(req, childReq, logicDisk)) {
+        BDM_LOG_ERR_CAN_PRINT(DBG_LOG_BUTT, (360*HZ), 1ULL, 
+            "Disk process multiple disk diagnose, result is not ok.");                   
+    }
     
     switch(private->actionInfo.action)
     {
@@ -122,9 +126,7 @@
             sdDiagInfo.isDidError = (0 == private->newErrorInfo.hostByte) ? 0 : 1;
             SET_BIT32(private->flag, LD_REQ_DIAG_MASK);
             private->diagExeNid = GET_LOCAL_NID();
-            /*Begin DTS2017111801777 y00378818 2017.11.18*/
-            if (BDM_CFG_IO_TYPE_DISK_FOREEND == private->ioInfo.ioType)
-            {
+            if (BDM_CFG_IO_TYPE_DISK_FOREEND == private->ioInfo.ioType) {
                 (void)sdDevicePowerCycle((uint32_t)childReq->objectId, NULL, 
                                             private->actionInfo.timeOut, repairTimeout, &sdDiagInfo);
                 REQ_DELETE(childReq);
@@ -132,7 +134,6 @@
                 IOD_ADD_DONEQ(req);
                 return RETURN_ERROR;
             }
-            /*End DTS2017111801777 y00378818 2017.11.18*/
             (void)sdDevicePowerCycle((uint32_t)childReq->objectId, childReq, 
                                         private->actionInfo.timeOut, repairTimeout, &sdDiagInfo);
             private->fgIoStgy.rePairTimeOut = 0;
@@ -140,8 +141,7 @@
         case CFG_IO_ERROR_ACTION_DEVICE_RESET:
             private->timeout += (int64_t)(((uint64_t)private->fgIoStgy.rePairTimeOut/1000)*HZ);/*תHZ*/
             repairTimeout = (uint32_t)((private->timeout*1000)/HZ);                  /*HZת*/
-            (void)sdDeviceReset((uint32_t)childReq->objectId, childReq, 
-                                        private->actionInfo.timeOut, repairTimeout);
+            (void)sdDeviceReset((uint32_t)childReq->objectId, childReq, private->actionInfo.timeOut, repairTimeout);
             private->fgIoStgy.rePairTimeOut = 0;
             return RETURN_ERROR;
         case CFG_IO_ERROR_ACTION_DIAGNOSE:
@@ -166,8 +166,7 @@
             sdDiagInfo.errLen = private->errLen;
             upperPhyLbaStart = req->objectLba + reservedSec + logicDisk->lbaOffset;
             if ((sdDiagInfo.errLba < upperPhyLbaStart) 
-                || (sdDiagInfo.errLba >= upperPhyLbaStart + (uint64_t)req->length))
-            {
+                || (sdDiagInfo.errLba >= upperPhyLbaStart + (uint64_t)req->length)) {
                 sdDiagInfo.errLba = upperPhyLbaStart;
                 sdDiagInfo.errLen = 1;
             }
@@ -176,7 +175,8 @@
             sdDiagInfo.isDidError = (0 == private->newErrorInfo.hostByte) ? 0 : 1;
             SET_BIT32(private->flag, LD_REQ_DIAG_MASK);
             private->diagExeNid = GET_LOCAL_NID();
-            (void)sdStartDiagnose((uint32_t)childReq->objectId, private->actionInfo.diagnoseId, &sdDiagInfo);
+            hasTimeoutErr = BDM_TEST_BIT(LD_REQ_TIMEOUT_MASK, (void *)&private->flag) ? TRUE : FALSE;
+            (void)SdStartDiagnoseSph050((uint32_t)childReq->objectId, private->actionInfo.diagnoseId, &sdDiagInfo, hasTimeoutErr);
             REQ_DELETE(childReq);
             req->result = (int32_t)private->strategyInfo.errCode;
             IOD_ADD_DONEQ(req);
