--- ./source/private_module/ckg/writehole/writehole_delete.c	2018-04-19 06:34:35.000000000 +0000
+++ ./source/private_module/ckg/writehole/writehole_delete.c.hotpatch	2019-09-30 10:25:53.000000000 +0000
@@ -752,14 +752,11 @@
     WRITEHOLE_XRB_OPCODE_E opCode;
     WRITEHOLE_TRANSMIT_PARAM_S *ioParam = NULL;
     WRITEHOLE_WRITE_HEAD_S *writeHead = NULL;
-
+    CKG_WRITEHOLE_POOL_S *pwriteholePool = NULL;
     UNREFERENCE_PARAM(sgl);
-
     ioParam = &((WRITEHOLE_TRANSMIT_MSG_S *)writeHoleIbd)->writeHoleMsgParam;
     opCode = (WRITEHOLE_XRB_OPCODE_E)XRB_GET_OPCODE_BY_IBD(writeHoleIbd);
-
     writeHead = allocWriteHead();
-
     if(unlikely(NULL == writeHead))
     {
         CKG_PRINT_LIMIT_PERIOD(CKGLOG_CTRL_INTERVAL, CKGLOG_CTRL_COUNT,
@@ -773,7 +770,14 @@
                writeHoleMsgRspCbNoContext, NULL);
         return;
     }
-
+    pwriteholePool = findPoolById(ioParam->otherPara.poolId);
+    if (!pwriteholePool->valid)
+    {
+        DBG_LogInfo(DBG_LOGID_NEW, "Pool %u is invalid when delete volid 0x%llx dg %u ckgid 0x%llx lba %u.", ioParam->otherPara.poolId, ioParam->otherPara.volumeId, ioParam->otherPara.dgId, ioParam->otherPara.ckgObjId, ioParam->otherPara.ckgLba);
+        ioParam->ioResult = RETURN_ERROR;
+        writeHoleSendXrbMsgRsp(rspParam, opCode, ioParam, XRB_GET_SRCNID_BY_IBD(writeHoleIbd), XRB_GET_SRCPID_BY_IBD(writeHoleIbd), writeHoleMsgRspCbNoContext, NULL);
+        return;
+    }
     if(RETURN_ERROR == queryWriteholeHeadByDgId(ioParam->otherPara.poolId, 
                   ioParam->otherPara.dgId, 
                   ioParam->otherPara.ckgObjId, 
@@ -796,7 +800,6 @@
                        writeHoleMsgRspCbNoContext, NULL);
         return;
     }
-    
     /* ҵҪɾheadreqɾhead */
     writeHoleReq = allocWriteHoleIoReq(ioParam->otherPara.poolId, ioParam->otherPara.dgId, 
                                   ioParam->otherPara.ckgObjId, ioParam->otherPara.ckgLba,
@@ -814,7 +817,6 @@
                                writeHoleMsgRspCbNoContext, NULL);
         return ;
     }
-    
     /* ʼ */
     SET_WRITEHOLE_XRB_REQ_MSG_OPCODE(writeHoleReq, opCode);
     SET_WRITEHOLE_XRB_RSPPARAM(writeHoleReq, rspParam);
@@ -824,10 +826,8 @@
     SET_WRITEHOLE_REQ_FLOW_TYPE(writeHoleReq, DELETE_BACKUP_DATA);
     writeHoleReq->ops = &g_writeHoleXrbReqWriteDiskOps;
     SET_WRITEHOLE_IOFRAME(writeHoleReq, g_deleteWriteHoleSpaceFrame);
-
     /* Ӽ */
     writeHoleIncStartCount(writeHoleReq);
-
     /* ȥִ */
     POOL_FORCE_DISPATCH_FOR_IOD_STARTQ(writeHoleReq);
     return;
