- Timestamp:
- Aug 23, 2021 8:17:22 PM (3 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/Storage/VD.cpp
r90814 r90815 708 708 DECLINLINE(void) vdIoCtxInit(PVDIOCTX pIoCtx, PVDISK pDisk, VDIOCTXTXDIR enmTxDir, 709 709 uint64_t uOffset, size_t cbTransfer, PVDIMAGE pImageStart, 710 PCRTSGBUF p cSgBuf, void *pvAllocation,710 PCRTSGBUF pSgBuf, void *pvAllocation, 711 711 PFNVDIOCTXTRANSFER pfnIoCtxTransfer, uint32_t fFlags) 712 712 { … … 735 735 if ( enmTxDir != VDIOCTXTXDIR_FLUSH 736 736 && enmTxDir != VDIOCTXTXDIR_DISCARD) 737 RTSgBufClone(&pIoCtx->Req.Io.SgBuf, p cSgBuf);737 RTSgBufClone(&pIoCtx->Req.Io.SgBuf, pSgBuf); 738 738 else 739 739 memset(&pIoCtx->Req.Io.SgBuf, 0, sizeof(RTSGBUF)); … … 1009 1009 DECLINLINE(PVDIOCTX) vdIoCtxAlloc(PVDISK pDisk, VDIOCTXTXDIR enmTxDir, 1010 1010 uint64_t uOffset, size_t cbTransfer, 1011 PVDIMAGE pImageStart,PCRTSGBUF p cSgBuf,1011 PVDIMAGE pImageStart,PCRTSGBUF pSgBuf, 1012 1012 void *pvAllocation, PFNVDIOCTXTRANSFER pfnIoCtxTransfer, 1013 1013 uint32_t fFlags) … … 1019 1019 { 1020 1020 vdIoCtxInit(pIoCtx, pDisk, enmTxDir, uOffset, cbTransfer, pImageStart, 1021 p cSgBuf, pvAllocation, pfnIoCtxTransfer, fFlags);1021 pSgBuf, pvAllocation, pfnIoCtxTransfer, fFlags); 1022 1022 } 1023 1023 … … 1027 1027 DECLINLINE(PVDIOCTX) vdIoCtxRootAlloc(PVDISK pDisk, VDIOCTXTXDIR enmTxDir, 1028 1028 uint64_t uOffset, size_t cbTransfer, 1029 PVDIMAGE pImageStart, PCRTSGBUF p cSgBuf,1029 PVDIMAGE pImageStart, PCRTSGBUF pSgBuf, 1030 1030 PFNVDASYNCTRANSFERCOMPLETE pfnComplete, 1031 1031 void *pvUser1, void *pvUser2, … … 1035 1035 { 1036 1036 PVDIOCTX pIoCtx = vdIoCtxAlloc(pDisk, enmTxDir, uOffset, cbTransfer, pImageStart, 1037 p cSgBuf, pvAllocation, pfnIoCtxTransfer, fFlags);1037 pSgBuf, pvAllocation, pfnIoCtxTransfer, fFlags); 1038 1038 1039 1039 if (RT_LIKELY(pIoCtx)) … … 1101 1101 DECLINLINE(PVDIOCTX) vdIoCtxChildAlloc(PVDISK pDisk, VDIOCTXTXDIR enmTxDir, 1102 1102 uint64_t uOffset, size_t cbTransfer, 1103 PVDIMAGE pImageStart, PCRTSGBUF p cSgBuf,1103 PVDIMAGE pImageStart, PCRTSGBUF pSgBuf, 1104 1104 PVDIOCTX pIoCtxParent, size_t cbTransferParent, 1105 1105 size_t cbWriteParent, void *pvAllocation, … … 1107 1107 { 1108 1108 PVDIOCTX pIoCtx = vdIoCtxAlloc(pDisk, enmTxDir, uOffset, cbTransfer, pImageStart, 1109 p cSgBuf, pvAllocation, pfnIoCtxTransfer, pIoCtxParent->fFlags & ~VDIOCTX_FLAGS_DONT_FREE);1109 pSgBuf, pvAllocation, pfnIoCtxTransfer, pIoCtxParent->fFlags & ~VDIOCTX_FLAGS_DONT_FREE); 1110 1110 1111 1111 AssertPtr(pIoCtxParent); … … 9483 9483 9484 9484 VBOXDDU_DECL(int) VDAsyncRead(PVDISK pDisk, uint64_t uOffset, size_t cbRead, 9485 PCRTSGBUF p cSgBuf,9485 PCRTSGBUF pSgBuf, 9486 9486 PFNVDASYNCTRANSFERCOMPLETE pfnComplete, 9487 9487 void *pvUser1, void *pvUser2) … … 9491 9491 PVDIOCTX pIoCtx = NULL; 9492 9492 9493 LogFlowFunc(("pDisk=%#p uOffset=%llu p cSgBuf=%#p cbRead=%zu pvUser1=%#p pvUser2=%#p\n",9494 pDisk, uOffset, p cSgBuf, cbRead, pvUser1, pvUser2));9493 LogFlowFunc(("pDisk=%#p uOffset=%llu pSgBuf=%#p cbRead=%zu pvUser1=%#p pvUser2=%#p\n", 9494 pDisk, uOffset, pSgBuf, cbRead, pvUser1, pvUser2)); 9495 9495 9496 9496 /* sanity check */ … … 9500 9500 /* Check arguments. */ 9501 9501 AssertReturn(cbRead > 0, VERR_INVALID_PARAMETER); 9502 AssertPtrReturn(p cSgBuf, VERR_INVALID_POINTER);9502 AssertPtrReturn(pSgBuf, VERR_INVALID_POINTER); 9503 9503 9504 9504 do … … 9515 9515 9516 9516 pIoCtx = vdIoCtxRootAlloc(pDisk, VDIOCTXTXDIR_READ, uOffset, 9517 cbRead, pDisk->pLast, p cSgBuf,9517 cbRead, pDisk->pLast, pSgBuf, 9518 9518 pfnComplete, pvUser1, pvUser2, 9519 9519 NULL, vdReadHelperAsync, … … 9550 9550 9551 9551 VBOXDDU_DECL(int) VDAsyncWrite(PVDISK pDisk, uint64_t uOffset, size_t cbWrite, 9552 PCRTSGBUF p cSgBuf,9552 PCRTSGBUF pSgBuf, 9553 9553 PFNVDASYNCTRANSFERCOMPLETE pfnComplete, 9554 9554 void *pvUser1, void *pvUser2) … … 9556 9556 int rc; 9557 9557 int rc2; 9558 bool fLockWrite = false;9559 9558 PVDIOCTX pIoCtx = NULL; 9560 9559 9561 LogFlowFunc(("pDisk=%#p uOffset=%llu cSgBuf=%#p cbWrite=%zu pvUser1=%#p pvUser2=%#p\n", 9562 pDisk, uOffset, pcSgBuf, cbWrite, pvUser1, pvUser2)); 9560 LogFlowFunc(("pDisk=%#p uOffset=%llu pSgBuf=%#p cbWrite=%zu pvUser1=%#p pvUser2=%#p\n", 9561 pDisk, uOffset, pSgBuf, cbWrite, pvUser1, pvUser2)); 9562 /* sanity check */ 9563 AssertPtrReturn(pDisk, VERR_INVALID_POINTER); 9564 AssertMsg(pDisk->u32Signature == VDISK_SIGNATURE, ("u32Signature=%08x\n", pDisk->u32Signature)); 9565 9566 /* Check arguments. */ 9567 AssertReturn(cbWrite > 0, VERR_INVALID_PARAMETER); 9568 AssertPtrReturn(pSgBuf, VERR_INVALID_POINTER); 9569 9563 9570 do 9564 9571 { 9565 /* sanity check */9566 AssertPtrBreakStmt(pDisk, rc = VERR_INVALID_PARAMETER);9567 AssertMsg(pDisk->u32Signature == VDISK_SIGNATURE, ("u32Signature=%08x\n", pDisk->u32Signature));9568 9569 /* Check arguments. */9570 AssertMsgBreakStmt(cbWrite,9571 ("cbWrite=%zu\n", cbWrite),9572 rc = VERR_INVALID_PARAMETER);9573 AssertMsgBreakStmt(VALID_PTR(pcSgBuf),9574 ("pcSgBuf=%#p\n", pcSgBuf),9575 rc = VERR_INVALID_PARAMETER);9576 9577 9572 rc2 = vdThreadStartWrite(pDisk); 9578 9573 AssertRC(rc2); 9579 fLockWrite = true;9580 9574 9581 9575 AssertMsgBreakStmt( uOffset < pDisk->cbSize … … 9587 9581 9588 9582 pIoCtx = vdIoCtxRootAlloc(pDisk, VDIOCTXTXDIR_WRITE, uOffset, 9589 cbWrite, pDisk->pLast, p cSgBuf,9583 cbWrite, pDisk->pLast, pSgBuf, 9590 9584 pfnComplete, pvUser1, pvUser2, 9591 9585 NULL, vdWriteHelperAsync, … … 9609 9603 } while (0); 9610 9604 9611 if ( RT_UNLIKELY(fLockWrite) && (rc != VERR_VD_ASYNC_IO_IN_PROGRESS))9605 if (rc != VERR_VD_ASYNC_IO_IN_PROGRESS) 9612 9606 { 9613 9607 rc2 = vdThreadFinishWrite(pDisk); … … 9625 9619 int rc; 9626 9620 int rc2; 9627 bool fLockWrite = false;9628 9621 PVDIOCTX pIoCtx = NULL; 9629 9622 9630 9623 LogFlowFunc(("pDisk=%#p\n", pDisk)); 9624 /* sanity check */ 9625 AssertPtrReturn(pDisk, VERR_INVALID_POINTER); 9626 AssertMsg(pDisk->u32Signature == VDISK_SIGNATURE, ("u32Signature=%08x\n", pDisk->u32Signature)); 9631 9627 9632 9628 do 9633 9629 { 9634 /* sanity check */9635 AssertPtrBreakStmt(pDisk, rc = VERR_INVALID_PARAMETER);9636 AssertMsg(pDisk->u32Signature == VDISK_SIGNATURE, ("u32Signature=%08x\n", pDisk->u32Signature));9637 9638 9630 rc2 = vdThreadStartWrite(pDisk); 9639 9631 AssertRC(rc2); 9640 fLockWrite = true;9641 9632 9642 9633 AssertPtrBreakStmt(pDisk->pLast, rc = VERR_VD_NOT_OPENED); … … 9665 9656 } while (0); 9666 9657 9667 if ( RT_UNLIKELY(fLockWrite) && (rc != VERR_VD_ASYNC_IO_IN_PROGRESS))9658 if (rc != VERR_VD_ASYNC_IO_IN_PROGRESS) 9668 9659 { 9669 9660 rc2 = vdThreadFinishWrite(pDisk); … … 9681 9672 int rc; 9682 9673 int rc2; 9683 bool fLockWrite = false;9684 9674 PVDIOCTX pIoCtx = NULL; 9685 9675 9686 9676 LogFlowFunc(("pDisk=%#p\n", pDisk)); 9677 /* sanity check */ 9678 AssertPtrReturn(pDisk, VERR_INVALID_POINTER); 9679 AssertMsg(pDisk->u32Signature == VDISK_SIGNATURE, ("u32Signature=%08x\n", pDisk->u32Signature)); 9687 9680 9688 9681 do 9689 9682 { 9690 /* sanity check */9691 AssertPtrBreakStmt(pDisk, rc = VERR_INVALID_PARAMETER);9692 AssertMsg(pDisk->u32Signature == VDISK_SIGNATURE, ("u32Signature=%08x\n", pDisk->u32Signature));9693 9694 9683 rc2 = vdThreadStartWrite(pDisk); 9695 9684 AssertRC(rc2); 9696 fLockWrite = true;9697 9685 9698 9686 AssertPtrBreakStmt(pDisk->pLast, rc = VERR_VD_NOT_OPENED); … … 9720 9708 } while (0); 9721 9709 9722 if ( RT_UNLIKELY(fLockWrite) && (rc != VERR_VD_ASYNC_IO_IN_PROGRESS))9710 if (rc != VERR_VD_ASYNC_IO_IN_PROGRESS) 9723 9711 { 9724 9712 rc2 = vdThreadFinishWrite(pDisk);
Note:
See TracChangeset
for help on using the changeset viewer.