--- ./source/private_module/clone/cln_manage/cln_system_async.c	2018-04-08 11:24:54.000000000 +0000
+++ ./source/private_module/clone/cln_manage/cln_system_async.c.hotpatch	2018-08-21 06:09:39.000000000 +0000
@@ -25,6 +25,9 @@
 MODULE_ID(PID_CLN);
 MODULE_NAME("CLN");
 
+/* ʱ*/
+OSP_U32 g_auiHangLunInStartService[MAX_LUN_NUM];
+
 /*****************************************************************************
    : CLN_RegPolicyFlow
  : Ѿģע̳ʱԺ
@@ -148,6 +151,15 @@
     LVOS_TP_END
 
     pstClnSystem->pfnCallback(pstClnSystem->pArg, v_pstManageJob->uiResult);
+
+    /* LUN鲻Ϊ,ͷڴ*/
+	if ((CLN_SYSTEM_STARTLUNSERVICE == pstClnSystem->uiSysCode)
+		&& (NULL != pstClnSystem->pHangLunIdArray))
+	{
+	    CLN_PutFreeNode((OSP_VOID *)pstClnSystem->pHangLunIdArray, CLN_UINT32_PARTITION);
+		pstClnSystem->pHangLunIdArray = NULL;
+	}
+	
     /* ͷԴ */
     CLN_ReleaseExecutingSysJob((OSP_VOID*)v_pstManageJob);
     CLN_PutFreeNode((OSP_VOID*)pstClnSystem->pauiLunIdArray,
@@ -169,8 +181,10 @@
 static OSP_VOID CLN_AsyncSystemCmdReturn(CLN_MANAGE_S *v_pstManageJob)
 {
     CLN_SYSTEM_S* pstClnSystem = &(v_pstManageJob->ClnManageJob.stClnSystem);
-    
-    if (CLN_SYSTEM_START_BGR != pstClnSystem->uiSysCode)
+
+	/* BGR̨ҲóɴɺһͬLDBGDB */
+    if ((CLN_SYSTEM_START_BGR == pstClnSystem->uiSysCode)
+		|| (CLN_SYSTEM_STARTLUNSERVICE == pstClnSystem->uiSysCode))
     {
         /* ͬΪҪͬ */
         DB_SetAsyncFlag(B_TRUE);
@@ -696,7 +710,7 @@
     return;
 }
 
-void CLN_HandlePairStartService(OSP_U32 uiCloneGroupId, OSP_U32 uiPairIndex, OSP_U32 uiLunId)
+void CLN_HandlePairStartService(CLN_MANAGE_S *v_pstManageJob, OSP_U32 uiCloneGroupId, OSP_U32 uiPairIndex, OSP_U32 uiLunId)
 {
     OSP_U32 uiSlaveLunId = INVALID_VALUE32;
     OSP_U32 uiPairId = INVALID_VALUE32;
@@ -706,6 +720,10 @@
     OSP_U32 uiPairStat = INVALID_VALUE32;
     OSP_U32 uiSlaveLunStat = INVALID_VALUE32;
     int32_t iResult = RETURN_OK;
+	OSP_U32 *puiHangLunArray = NULL;
+	OSP_U32 uiHangLunCnt = 0;
+	OSP_U32 uiLunSize = 0;
+	OSP_BOOL isLunArrayExist = B_FALSE;
 
     dbSyncLockForRead();
     uiPairId = DB_GetClnPairIdFromCloneGroupId(uiCloneGroupId, uiPairIndex);
@@ -757,6 +775,24 @@
         }
     }
 
+    DBG_LogDebug(CLN_LOG_ID_0912, "Start hang IO for pair(%u), srcLUN(%u), dstLUN(%u).",
+		uiPairId, uiLunId, uiSlaveLunId);
+	
+	/* ʱҺͽ2018-07-02 begin pairҺλδhang*/
+    isLunArrayExist = (NULL != v_pstManageJob->ClnManageJob.stClnSystem.pHangLunIdArray);
+	puiHangLunArray = isLunArrayExist 
+        ? v_pstManageJob->ClnManageJob.stClnSystem.pHangLunIdArray
+        : g_auiHangLunInStartService;
+	uiLunSize = isLunArrayExist ? CLN_GetMaxLunNum() : MAX_LUN_NUM;
+	DBG_LogDebug(CLN_LOG_ID_0981, "Alloc lun size, LUN(%u).", uiLunSize);
+	CLN_InitialArray(puiHangLunArray, uiLunSize);
+	(void)CLN_hangLunIO(uiPairId, puiHangLunArray, &uiHangLunCnt, CLN_HANG_LUN_IN_ASYNC_MGRJOBTHREAD);
+    CLN_DishanglunIo(uiPairId, puiHangLunArray, uiHangLunCnt);
+	
+	DBG_LogDebug(CLN_LOG_ID_0912, "End hang IO for pair(%u), srcLUN(%u), dstLUN(%u).",
+		uiPairId, uiLunId, uiSlaveLunId);
+	/* ʱҺͽ2018-07-02 end */
+
     CLN_SetStopOrStartFlag(CLN_LUN_SERVICE_START, INVALID_VALUE32,
                            uiPairId, uiSlaveLunId);
     return;
@@ -826,7 +862,7 @@
         if (CLN_SYSTEM_STARTLUNSERVICE == pstClnSystem->uiSysCode)
         {
             // 
-            CLN_HandlePairStartService(uiCloneGroupId, uiPairIndex, uiLunId);
+            CLN_HandlePairStartService(v_pstManageJob, uiCloneGroupId, uiPairIndex, uiLunId);
         }
         else
         {
@@ -992,6 +1028,12 @@
     /* ѲڱϵLUNΪЧֵ */
     (OSP_VOID)CLN_FilterLunByController(puiLunArray, pstClnSystem->uiArraySize);
 
+    /* ,  ڴ*/
+    if (CLN_SYSTEM_STARTLUNSERVICE == v_pstManageJob->ClnManageJob.stClnSystem.uiSysCode)
+	{
+	    pstClnSystem->pHangLunIdArray = (OSP_U32 *)CLN_GetFreeNode(CLN_UINT32_PARTITION);
+	}
+	
     /* ȻLUNLUNķ */
     CLN_StartLunServiceByMasterLun(v_pstManageJob);
 
--- ./source/private_module/clone/cln_manage/cln_system_interface_async.c	2018-04-03 09:22:57.000000000 +0000
+++ ./source/private_module/clone/cln_manage/cln_system_interface_async.c.hotpatch	2018-08-21 06:09:39.000000000 +0000
@@ -451,6 +451,8 @@
     pstClnSystem->uiPairOffset = 0;
     pstClnSystem->uiLunOffset = 0;
     pstClnSystem->uiSysJobCurStep = CLN_SYSJOB_CURSTEP_START;
+	pstClnSystem->pHangLunIdArray = NULL;
+	pstClnSystem->hangLunIdNum = 0;
 
     flowId = pstClnSystem->uiSysCode;
 
@@ -873,6 +875,9 @@
         return;
     }
 
+    /* ִLUN̨ǰDBҪɺͬGDB */
+    DB_SetAsyncFlag(B_FALSE);
+	
     DBG_LogInfo(CLN_LOG_ID_017A, "start lun bgr end, wait for handling.");
     return;
 }
