--- ./source/private_module/logzone_kernel/logzone_ctrlhandle.c	2018-12-02 02:40:58.000000000 +0800
+++ ./source/private_module/logzone_kernel/logzone_ctrlhandle.c.hotpatch	2018-12-02 02:40:58.000000000 +0800
@@ -29,7 +29,7 @@
 #include "logzone_debug.h"
 
 /***************************궨****************************************/
-
+#define LOGZONE_TYPE_IS_PRE_HANDLE(optype) (optype == READ_LOG_OP_PRE_HANDLE)
 /**************************öٶ***************************************/
 
 /***********************ݽṹ**************************************/
@@ -868,7 +868,10 @@
 
     hangIOMgr = &g_hangIOMgr[zoneId];
     privateInfo = GET_HANG_IO_PRIVATE(hangIOMgr);
-
+    if (LOGZONE_TYPE_IS_PRE_HANDLE(opType)){
+        doIO(context, callback, context);
+        return;
+    }
     spin_lock(&hangIOMgr->lock);
     if (HANG_IO_MGR_PAUSED == hangIOMgr->state) //Ѿhang IO
     {
@@ -904,16 +907,13 @@
     else
     {
         privateInfo->forwardFlyingCnt++;
-    }
-        
+    }     
     if (READ_LOG_OP_START < opType)
     {
         privateInfo->flyingReadCnt++;
     }
     spin_unlock(&hangIOMgr->lock);
-
     doIO(context, callback, context);
-
     return;
 }
 
@@ -943,10 +943,11 @@
 {
 	MGR_S *hangIOMgr;
 	HANG_IO_PRIVATE_INFO_S *privateInfo;
-
 	hangIOMgr = &g_hangIOMgr[zoneId];
 	privateInfo = GET_HANG_IO_PRIVATE(hangIOMgr);
-
+	if (LOGZONE_TYPE_IS_PRE_HANDLE(opType)) {
+        return;
+    }
 	spin_lock(&hangIOMgr->lock);
 	privateInfo->forwardFlyingCnt--;
 	if (READ_LOG_OP_START < opType)
@@ -954,7 +955,6 @@
 		privateInfo->flyingReadCnt--;
 	}
 	spin_unlock(&hangIOMgr->lock);
-
 	return;
 }
 
@@ -970,14 +970,15 @@
     INIT_LIST_HEAD(&list);
     hangIOMgr = &g_hangIOMgr[zoneId];
     privateInfo = GET_HANG_IO_PRIVATE(hangIOMgr);
-
+	if (LOGZONE_TYPE_IS_PRE_HANDLE(opType)){
+        return retval;
+    }
     spin_lock(&hangIOMgr->lock);
     privateInfo->flyingCnt--;
     if (READ_LOG_OP_START < opType)
     {
         privateInfo->flyingReadCnt--;
     }
-
     if (HANG_IO_MGR_PAUSED == hangIOMgr->state)
     {
         if (RETURN_OK != result)
@@ -1018,7 +1019,6 @@
             return retval;
         }
     }
-
     spin_unlock(&hangIOMgr->lock);
     return retval;
 }
--- ./source/private_module/logzone_kernel/logzone_ioroute.c	2018-12-02 02:40:58.000000000 +0800
+++ ./source/private_module/logzone_kernel/logzone_ioroute.c.hotpatch	2018-12-02 02:40:58.000000000 +0800
@@ -84,7 +84,7 @@
 
 void doIOWriteRemote(void *Para, void *callback, void *context);
 void doIOGetRemote(void *Para, void *callback, void *context);
-
+void getPreCtxType(LOGZONE_GETLOG_PARA_S *batchGetLogPara, LOG_OP_TYPE_E *preOpType);
 void writeLogWithLogIdAndSgl(uint64_t logId, 
                        uint64_t key, 
                        SGL_S *logDataPage,
@@ -4464,7 +4464,8 @@
     FN_LOGZONE_BATCHGET_CALLBACK callback = (FN_LOGZONE_BATCHGET_CALLBACK)(ptrdiff_t)batchGetLogPara->callback;
     //uint16_t localNid = getLocalNid();
     uint16_t dstNid = getMainNid(zoneArray[curZoneIndex]);
-
+	LOG_OP_TYPE_E preOpType = LOG_OP_BUTT;
+    getPreCtxType(batchGetLogPara, &preOpType); 
     LVOS_TP_START(GET_LOG_2_252_2_1, zoneArray[curZoneIndex])
     LVOS_TP_END
     DBG_LogDebug(123, "LOGZONE: batchGetIoRoute start, curZoneIndex(%u).", curZoneIndex);
@@ -4498,10 +4499,9 @@
             return;
         }
 
-        LOGZONE_IO_START(zoneArray[curZoneIndex], batchGetLogPara->opType, doIOGetRemote,
+        LOGZONE_IO_START(zoneArray[curZoneIndex], preOpType, doIOGetRemote,
 		        batchGetLogRemoteCallback, batchGetLogPara, batchGetIoRoute, TRUE);
     }
-
     return;
 }
 
@@ -6037,4 +6037,12 @@
 
     return RETURN_OK;
 }
-
+void getPreCtxType(LOGZONE_GETLOG_PARA_S *batchGetLogPara, LOG_OP_TYPE_E *preOpType)
+{
+    if (batchGetLogPara->handleFunc != NULL){        
+        *preOpType = READ_LOG_OP_PRE_HANDLE; /*תԤ̲,hangioʱʹ*/
+    } else {
+        *preOpType = batchGetLogPara->opType;
+    }
+    return;
+}
