Changeset 107970 in vbox
- Timestamp:
- Jan 28, 2025 3:43:36 PM (3 months ago)
- svn:sync-xref-src-repo-rev:
- 167222
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
TabularUnified trunk/src/VBox/Devices/Storage/DevVirtioSCSI.cpp ¶
r107969 r107970 2051 2051 for (uint16_t uTarget = 0; uTarget < pThis->cTargets; uTarget++) 2052 2052 { 2053 uint16_t cReqsRedo; 2054 rc = pHlp->pfnSSMGetU16(pSSM, &cReqsRedo); 2055 AssertRCReturn(rc, rc); 2056 AssertReturn(cReqsRedo < VIRTQ_SIZE, 2057 pHlp->pfnSSMSetLoadError(pSSM, VERR_SSM_DATA_UNIT_FORMAT_CHANGED, RT_SRC_POS, 2058 N_("Bad count of I/O transactions to re-do in saved state (%#x, max %#x - 1)"), 2059 cReqsRedo, VIRTQ_SIZE)); 2060 2061 for (uint16_t uVirtqNbr = VIRTQ_REQ_BASE; uVirtqNbr < VIRTIOSCSI_VIRTQ_CNT; uVirtqNbr++) 2053 PVIRTIOSCSITARGET pTarget = &pThisCC->paTargetInstances[uTarget]; 2054 2055 /* Place all suspended requests in the request queue. */ 2056 if (pTarget->pDrvMediaEx) 2062 2057 { 2063 PVIRTIOSCSIWORKERR3 pWorkerR3 = &pThisCC->aWorkers[uVirtqNbr]; 2064 pWorkerR3->cRedoDescs = 0; 2065 } 2066 2067 for (int i = 0; i < cReqsRedo; i++) 2068 { 2069 uint16_t uVirtqNbr; 2070 rc = pHlp->pfnSSMGetU16(pSSM, &uVirtqNbr); 2058 2059 uint16_t cReqsRedo; 2060 rc = pHlp->pfnSSMGetU16(pSSM, &cReqsRedo); 2071 2061 AssertRCReturn(rc, rc); 2072 AssertReturn( uVirtqNbr < VIRTIOSCSI_VIRTQ_CNT,2062 AssertReturn(cReqsRedo < VIRTQ_SIZE, 2073 2063 pHlp->pfnSSMSetLoadError(pSSM, VERR_SSM_DATA_UNIT_FORMAT_CHANGED, RT_SRC_POS, 2074 N_("Bad queue index for re-do in saved state (%#x, max %#x)"), 2075 uVirtqNbr, VIRTIOSCSI_VIRTQ_CNT - 1)); 2076 2077 uint16_t idxHead; 2078 rc = pHlp->pfnSSMGetU16(pSSM, &idxHead); 2079 AssertRCReturn(rc, rc); 2080 AssertReturn(idxHead < VIRTQ_SIZE, 2081 pHlp->pfnSSMSetLoadError(pSSM, VERR_SSM_DATA_UNIT_FORMAT_CHANGED, RT_SRC_POS, 2082 N_("Bad queue element index for re-do in saved state (%#x, max %#x)"), 2083 idxHead, VIRTQ_SIZE - 1)); 2084 2085 PVIRTIOSCSIWORKERR3 pWorkerR3 = &pThisCC->aWorkers[uVirtqNbr]; 2086 pWorkerR3->auRedoDescs[pWorkerR3->cRedoDescs++] = idxHead; 2087 pWorkerR3->cRedoDescs %= VIRTQ_SIZE; 2064 N_("Bad count of I/O transactions to re-do in saved state (%#x, max %#x - 1)"), 2065 cReqsRedo, VIRTQ_SIZE)); 2066 2067 for (uint16_t uVirtqNbr = VIRTQ_REQ_BASE; uVirtqNbr < VIRTIOSCSI_VIRTQ_CNT; uVirtqNbr++) 2068 { 2069 PVIRTIOSCSIWORKERR3 pWorkerR3 = &pThisCC->aWorkers[uVirtqNbr]; 2070 pWorkerR3->cRedoDescs = 0; 2071 } 2072 2073 for (int i = 0; i < cReqsRedo; i++) 2074 { 2075 uint16_t uVirtqNbr; 2076 rc = pHlp->pfnSSMGetU16(pSSM, &uVirtqNbr); 2077 AssertRCReturn(rc, rc); 2078 AssertReturn(uVirtqNbr < VIRTIOSCSI_VIRTQ_CNT, 2079 pHlp->pfnSSMSetLoadError(pSSM, VERR_SSM_DATA_UNIT_FORMAT_CHANGED, RT_SRC_POS, 2080 N_("Bad queue index for re-do in saved state (%#x, max %#x)"), 2081 uVirtqNbr, VIRTIOSCSI_VIRTQ_CNT - 1)); 2082 2083 uint16_t idxHead; 2084 rc = pHlp->pfnSSMGetU16(pSSM, &idxHead); 2085 AssertRCReturn(rc, rc); 2086 AssertReturn(idxHead < VIRTQ_SIZE, 2087 pHlp->pfnSSMSetLoadError(pSSM, VERR_SSM_DATA_UNIT_FORMAT_CHANGED, RT_SRC_POS, 2088 N_("Bad queue element index for re-do in saved state (%#x, max %#x)"), 2089 idxHead, VIRTQ_SIZE - 1)); 2090 2091 PVIRTIOSCSIWORKERR3 pWorkerR3 = &pThisCC->aWorkers[uVirtqNbr]; 2092 pWorkerR3->auRedoDescs[pWorkerR3->cRedoDescs++] = idxHead; 2093 pWorkerR3->cRedoDescs %= VIRTQ_SIZE; 2094 } 2088 2095 } 2089 2096 }
Note:
See TracChangeset
for help on using the changeset viewer.