--- ./source/private_module/ld/stub_v3/stub_ld.c	2018-04-11 12:46:26.000000000 +0000
+++ ./source/private_module/ld/stub_v3/stub_ld.c.hotpatch	2020-01-16 14:15:41.000000000 +0000
@@ -1427,7 +1427,7 @@
     
     return ctrlId;
 }
-
+void ldDiskReqModifyRetCodePatch(REQ_S* req);
 /**************************************************************************
    : ldDiskReqExecuteStrategy
      : ݲִREQ
@@ -1452,9 +1452,9 @@
     {
         case CFG_IO_ERROR_ACTION_FINISH:
             req->result = (int32_t)private->strategyInfo.errCode;
-            /* DTS2016022407985 modify by y00376877 20160803 begin */
+            ldDiskReqModifyRetCodePatch(req);
+            
             BDM_IOD_ADD_DONEQ(req);
-            /* DTS2016022407985 modify by y00376877 20160803 end */
             break;
         case CFG_IO_ERROR_ACTION_RETRY:
             if (0xff > private->actionInfo.cycle)
@@ -5195,3 +5195,37 @@
 /* PC-Lint */
 LD_USE_TRACE_POINT
 
+void ldDiskReqModifyRetCodePatch(REQ_S* req)
+{
+    LD_REQ_PRIVATE_INFO* private = NULL;
+
+    private = (LD_REQ_PRIVATE_INFO*)(void*)req->producerPrivate;
+
+    if (private->newErrorInfo.bdmByte != BDM_INNER_ERROR_QUEUE_TIMEOUT) {
+        return;
+    }
+
+    if (req->result != IO_ERR_ABNORMAL_ERROR) {
+        return;
+    }
+
+    if (private->ioInfo.ioReduType == BDM_CFG_IO_REDU_TYPE_DEFAULT
+        || private->ioInfo.ioReduType == BDM_CFG_IO_REDU_TYPE_WITH_REDU) {
+        req->result = IO_ERR_REDUNDANT_ABORT;
+        BDM_LOG_ERR_CAN_PRINT(LOG_ID_LD_0505, (10*HZ), req->objectId,
+                "BDM_SPH110:ld disk(%llu) req(0x%p) done, opCode(0x%x),lba(0x%llx),redu(%u),ret(0x%x).", 
+                req->objectId, req, req->opCode, req->objectLba, private->ioInfo.ioReduType, req->result);
+    } else if (private->ioInfo.ioReduType == BDM_CFG_IO_REDU_TYPE_NO_REDU) {
+        req->result = RETURN_IO_BUSY_NEED_RETRY;
+        BDM_LOG_ERR_CAN_PRINT(LOG_ID_LD_0505, (10*HZ), req->objectId,
+                "BDM_SPH110:ld disk(%llu) req(0x%p) done, opCode(0x%x),lba(0x%llx),redu(%u),ret(0x%x).", 
+                req->objectId, req, req->opCode, req->objectLba, private->ioInfo.ioReduType, req->result);
+    } else {
+        BDM_LOG_ERR_CAN_PRINT(LOG_ID_LD_0505, (10*HZ), req->objectId,
+                "BDM_SPH110:ld disk(%llu) req(0x%p) done, opCode(0x%x),lba(0x%llx),redu(%u),ret(0x%x).", 
+                req->objectId, req, req->opCode, req->objectLba, private->ioInfo.ioReduType, req->result);
+    }
+
+    return;
+}
+
