--- ./source/private_module/mp/mp_selector.c	2018-02-09 07:36:26.000000000 +0000
+++ ./source/private_module/mp/mp_selector.c.hotpatch	2022-12-06 12:28:54.000000000 +0000
@@ -1057,7 +1057,7 @@
     return retCode;
 }
 /* end b00285202@20150921 */
-
+uint64_t sioReqTypeMultiCtrlPc(REQ_S *req);
 /**************************************************************************
 *     : ڿĶ·ѡ񱾵·
 * : req:ѡ·REQ
@@ -1072,13 +1072,11 @@
     LOGICAL_UNIT_S *lun = NULL;
     MP_SEL_PATH_RETVALUE_E retCode = MP_SEL_PATH_BUTT;
     MP_PATH_DRV_DATA_S* drvData = NULL;
-
     if (unlikely(NULL == req))
     {
         DBG_LogError(LOG_ID_MP_045F, "MP para Req is NULL.");
         return MP_SEL_PATH_BUTT;
     }
-    
     sdisk = SD_DEVICE_LOOK_UP((uint32_t)req->objectId);
     if (unlikely(NULL == sdisk))
     {
@@ -1094,21 +1092,20 @@
         SD_PUT_DEVICE(sdisk);
         return MP_SEL_NO_AVAIL_PATH;
     }
-
-    /* begin b00285202@20150921 */
     /* жΪӲҵIOѡ·, ִµж߼ */
     if ((MP_LOCAL_DISK == lun->lunType)
         && (0x0 == sioReqTypePc(req)))
     {
-        /* Ӳѡ·㷨 */
+        retCode = mpSelectDiskPath(req, lun);
+    }
+    else if (MP_LOCAL_DISK == lun->lunType && 0x1 == sioReqTypeMultiCtrlPc(req))
+    {
         retCode = mpSelectDiskPath(req, lun);
     }
     else
     {
-        /* ⲿLUNѡ·㷨 */
         retCode = lun->pathSelector.selector->multiPathSelector(req, lun);
     }
-
     if ((MP_SEL_PATH_OK == retCode) && (0x0 == sioReqTypePc(req)))
     {
         drvData = sioGetPathFromReq(req);
@@ -1117,8 +1114,11 @@
         /* ѡ·ɹ, REQPATH ID, ⲿLUNøֶ, Ӱѡ· */
         mpUpdatePathId(req, drvData);
     }
-    /* end b00285202@20150921 */
-
+    if (MP_LOCAL_DISK == lun->lunType && MP_SEL_PATH_OK == retCode && 0x1 == sioReqTypeMultiCtrlPc(req))
+    {
+        drvData = sioGetPathFromReq(req);
+        mpUpdatePathId(req, drvData);
+    }
     SD_PUT_DEVICE(sdisk);
     return retCode;
 }
@@ -1159,4 +1159,9 @@
     mpPriv->orgPath = INVALID_VALUE64;
     /*p90006404 DTS2015021308212 end 2015-2-26*/
 }
-
+uint64_t sioReqTypeMultiCtrlPc(REQ_S *req)
+{
+    uint64_t isMultiCtrl = 0;
+    isMultiCtrl = (req->ctrlFlag >> BDM_REQ_FLAG_MULTI_CTRL) & 1;
+    return (sioReqTypePc(req) && isMultiCtrl);
+}
\ No newline at end of file
