--- ./source/private_module/ramcache/iocore/iobase/io_base.c	2018-04-27 09:42:16.000000000 +0000
+++ ./source/private_module/ramcache/iocore/iobase/io_base.c.hotpatch	2020-01-08 07:03:36.000000000 +0000
@@ -7026,11 +7026,11 @@
 
     return;
 }
-
+void abortIoInRetryListForHotpatch(bool (*abortFunc)(void *, void *),void *arg,WAIT_ALLOC_PRIORITY_QUEUE_S *priQueue,uint32_t priority);
 void abortIoInRetryListInAllVolumeInPtt(bool (*abortFunc)(void *, void *), void *arg, uint32_t partitionId)
 {
     WAIT_ALLOC_PRIORITY_QUEUE_S *priQueue = NULL;
-    SPIN_LOCK_LIST_HEAD_S *retryList = NULL;
+    //SPIN_LOCK_LIST_HEAD_S *retryList = NULL;
     uint32_t retryType;
     uint32_t priority;
 
@@ -7039,8 +7039,8 @@
         priQueue = &g_waitAllocList[partitionId][CACHE_RETRY_BASE_VOLUME].priQueue[retryType];
         for (priority= 0; priority< CACHE_PRIORITY_BUTT; priority++)
         {
-            retryList = &priQueue->retryList[priority];
-            abortIoInRetryList(abortFunc, arg, retryList);
+            
+            abortIoInRetryListForHotpatch(abortFunc, arg, priQueue, priority);
         }
     }
 
@@ -9385,3 +9385,44 @@
     return;
 }
 
+void abortIoInRetryListForHotpatch(bool (*abortFunc)(void *, void *),
+                                          void *arg,
+                                          WAIT_ALLOC_PRIORITY_QUEUE_S *priQueue,
+                                          uint32_t priority)
+{
+    CACHE_REQ_PRIVATE_COMMON_S *ioCommon  = NULL;
+    struct list_head head;
+    struct list_head *node = NULL;
+    struct list_head *next = NULL;
+    REQ_S *curReq = NULL;
+    SPIN_LOCK_LIST_HEAD_S *retryList = NULL;
+    
+    retryList = &priQueue->retryList[priority];
+
+    INIT_LIST_HEAD(&head);
+
+    spinLockListLock(retryList);
+    list_for_each_safe(node, next, &retryList->head)
+    {
+        ioCommon = list_entry(node, CACHE_REQ_PRIVATE_COMMON_S, nodeInWaitAllocList);
+        curReq = GET_REQ_PTR_FROM_PRIVATE(ioCommon);
+        if (TRUE == abortFunc(curReq, arg))
+        {
+            spinLockListDelNoLock(node, retryList);
+            atomic_dec(&priQueue->sum);
+            list_add_tail(node, &head);
+        }
+    }
+    spinLockListUnLock(retryList);
+
+    list_for_del_each(node, &head)
+    {
+        list_del(node);
+        ioCommon = list_entry(node, CACHE_REQ_PRIVATE_COMMON_S, nodeInWaitAllocList);
+        curReq = GET_REQ_PTR_FROM_PRIVATE(ioCommon);
+        curReq->result = RETURN_IO_BUSY_NEED_RETRY;
+        ioCommon->retryWaitAllocFunc(curReq);
+    }
+
+    return;
+}
