Ticket #16677: le.2.patch
| File le.2.patch, 7.5 KB (added by , 7 years ago) |
|---|
-
PDMAsyncCompletionFileNormal.cpp
old new static void pdmacFileAioMgrNormalReqComp 1338 1338 { 1339 1339 size_t cbTransfered = 0; 1340 1340 int rcReq = RTFileAioReqGetRC(hReq, &cbTransfered); 1341 LogRel(("1_1)cbTransfered=%zu rcReq=%d hReq=%p\n", cbTransfered, rcReq, hReq)); 1341 1342 1342 1343 pdmacFileAioMgrNormalReqCompleteRc(pAioMgr, hReq, rcReq, cbTransfered); 1343 1344 } … … static void pdmacFileAioMgrNormalReqComp 1350 1351 PPDMACTASKFILE pTask = (PPDMACTASKFILE)RTFileAioReqGetUser(hReq); 1351 1352 PPDMACTASKFILE pTasksWaiting; 1352 1353 1353 Log FlowFunc(("pAioMgr=%#p hReq=%#p\n", pAioMgr, hReq));1354 LogRel(("pAioMgr=%#p hReq=%#p failure=%d pTask->DataSeg.cbSeg=%zu\n", pAioMgr, hReq, RT_FAILURE(rcReq), pTask->DataSeg.cbSeg)); 1354 1355 1355 1356 pEndpoint = pTask->pEndpoint; 1356 1357 … … static void pdmacFileAioMgrNormalReqComp 1380 1381 1381 1382 pEndpoint->pFlushReq = NULL; 1382 1383 /* Call completion callback */ 1383 Log Flow(("Flush task=%#p completed with %Rrc\n", pTask, VINF_SUCCESS));1384 LogRel(("Flush task=%#p completed with %Rrc\n", pTask, VINF_SUCCESS)); 1384 1385 pTask->pfnCompleted(pTask, pTask->pvUser, VINF_SUCCESS); 1385 1386 pdmacFileTaskFree(pEndpoint, pTask); 1386 1387 } … … static void pdmacFileAioMgrNormalReqComp 1452 1453 pdmacFileAioMgrNormalRequestFree(pAioMgr, hReq); 1453 1454 1454 1455 /* Call completion callback */ 1455 Log Flow(("Flush task=%#p completed with %Rrc\n", pTask, rcReq));1456 LogRel(("Flush task=%#p completed with %Rrc\n", pTask, rcReq)); 1456 1457 pTask->pfnCompleted(pTask, pTask->pvUser, rcReq); 1457 1458 pdmacFileTaskFree(pEndpoint, pTask); 1458 1459 } … … static void pdmacFileAioMgrNormalReqComp 1472 1473 size_t cbToTransfer; 1473 1474 uint8_t *pbBuf = NULL; 1474 1475 1475 Log Flow(("Restarting incomplete transfer %#p (%zu bytes transferred)\n",1476 pTask, cbTransfered ));1476 LogRel(("Restarting incomplete transfer %#p (%zu bytes transferred) pTask->DataSeg.cbSeg=%zu pTask->cbBounceBuffer=%zu\n", 1477 pTask, cbTransfered, pTask->DataSeg.cbSeg, pTask->cbBounceBuffer)); 1477 1478 Assert(cbTransfered % 512 == 0); 1478 1479 1479 1480 if (pTask->cbBounceBuffer) 1480 1481 { 1482 LogRel(("Here1\n")); 1481 1483 AssertPtr(pTask->pvBounceBuffer); 1482 1484 offStart = (pTask->Off & ~((RTFOFF)512-1)) + cbTransfered; 1483 1485 cbToTransfer = pTask->cbBounceBuffer - cbTransfered; … … static void pdmacFileAioMgrNormalReqComp 1485 1487 } 1486 1488 else 1487 1489 { 1490 LogRel(("Here2\n")); 1488 1491 Assert(!pTask->pvBounceBuffer); 1489 1492 offStart = pTask->Off + cbTransfered; 1490 1493 cbToTransfer = pTask->DataSeg.cbSeg - cbTransfered; 1494 pTask->DataSeg.cbSeg = cbToTransfer;//fix? 1491 1495 pbBuf = (uint8_t *)pTask->DataSeg.pvSeg + cbTransfered; 1492 1496 } 1493 1497 1494 1498 if (pTask->fPrefetch || pTask->enmTransferType == PDMACTASKFILETRANSFER_READ) 1495 1499 { 1500 LogRel(("Here3\n")); 1496 1501 rc = RTFileAioReqPrepareRead(hReq, pEndpoint->hFile, offStart, 1497 1502 pbBuf, cbToTransfer, pTask); 1498 1503 } 1499 1504 else 1500 1505 { 1506 LogRel(("Here4\n")); 1501 1507 AssertMsg(pTask->enmTransferType == PDMACTASKFILETRANSFER_WRITE, 1502 1508 ("Invalid transfer type\n")); 1503 1509 rc = RTFileAioReqPrepareWrite(hReq, pEndpoint->hFile, offStart, … … static void pdmacFileAioMgrNormalReqComp 1562 1568 } 1563 1569 1564 1570 /* Call completion callback */ 1565 Log Flow(("Task=%#p completed with %Rrc\n", pTask, rcReq));1571 LogRel(("Task=%#p completed with %Rrc\n", pTask, rcReq)); 1566 1572 pTask->pfnCompleted(pTask, pTask->pvUser, rcReq); 1567 1573 pdmacFileTaskFree(pEndpoint, pTask); 1568 1574 … … DECLCALLBACK(int) pdmacFileAioMgrNormal( 1618 1624 uint64_t uMillisEnd = RTTimeMilliTS() + PDMACEPFILEMGR_LOAD_UPDATE_PERIOD; 1619 1625 NOREF(hThreadSelf); 1620 1626 1627 LogRel(("inside pdmacFileAioMgrNormal\n")); 1621 1628 while ( pAioMgr->enmState == PDMACEPFILEMGRSTATE_RUNNING 1622 1629 || pAioMgr->enmState == PDMACEPFILEMGRSTATE_SUSPENDING 1623 1630 || pAioMgr->enmState == PDMACEPFILEMGRSTATE_GROWING) … … DECLCALLBACK(int) pdmacFileAioMgrNormal( 1648 1655 rc = pdmacFileAioMgrNormalCheckEndpoints(pAioMgr); 1649 1656 CHECK_RC(pAioMgr, rc); 1650 1657 1658 LogRel(("before while %d\n", pAioMgr->cRequestsActive)); 1651 1659 while (pAioMgr->cRequestsActive) 1652 1660 { 1653 1661 RTFILEAIOREQ apReqs[20]; 1654 1662 uint32_t cReqsCompleted = 0; 1655 1663 size_t cReqsWait; 1664 LogRel(("0)reqsactive=%d\n", pAioMgr->cRequestsActive)); 1656 1665 1657 1666 if (pAioMgr->cRequestsActive > RT_ELEMENTS(apReqs)) 1658 1667 cReqsWait = RT_ELEMENTS(apReqs); 1659 1668 else 1660 1669 cReqsWait = pAioMgr->cRequestsActive; 1661 1670 1662 Log Flow(("Waiting for %d of %d tasks to complete\n", 1, cReqsWait));1671 LogRel(("Waiting for %d of %d tasks to complete\n", 1, cReqsWait)); 1663 1672 1664 1673 rc = RTFileAioCtxWait(pAioMgr->hAioCtx, 1665 1674 1, … … DECLCALLBACK(int) pdmacFileAioMgrNormal( 1668 1677 if (RT_FAILURE(rc) && (rc != VERR_INTERRUPTED)) 1669 1678 CHECK_RC(pAioMgr, rc); 1670 1679 1671 LogFlow(("%d tasks completed\n", cReqsCompleted)); 1680 LogRel(("%d tasks completed\n", cReqsCompleted)); 1681 LogRel(("1)reqsactive=%d\n", pAioMgr->cRequestsActive)); 1672 1682 1673 1683 for (uint32_t i = 0; i < cReqsCompleted; i++) 1674 1684 pdmacFileAioMgrNormalReqComplete(pAioMgr, apReqs[i]); 1685 LogRel(("2)reqsactive=%d\n", pAioMgr->cRequestsActive)); 1675 1686 1676 1687 /* Check for an external blocking event before we go to sleep again. */ 1677 1688 if (pAioMgr->fBlockingEventPending) … … DECLCALLBACK(int) pdmacFileAioMgrNormal( 1679 1690 rc = pdmacFileAioMgrNormalProcessBlockingEvent(pAioMgr); 1680 1691 CHECK_RC(pAioMgr, rc); 1681 1692 } 1693 LogRel(("3)reqsactive=%d\n", pAioMgr->cRequestsActive)); 1682 1694 1683 1695 /* Update load statistics. */ 1684 1696 uint64_t uMillisCurr = RTTimeMilliTS(); … … DECLCALLBACK(int) pdmacFileAioMgrNormal( 1699 1711 /* Set new update interval */ 1700 1712 uMillisEnd = RTTimeMilliTS() + PDMACEPFILEMGR_LOAD_UPDATE_PERIOD; 1701 1713 } 1714 LogRel(("4)reqsactive=%d\n", pAioMgr->cRequestsActive)); 1702 1715 1703 1716 /* Check endpoints for new requests. */ 1704 1717 if (pAioMgr->enmState != PDMACEPFILEMGRSTATE_GROWING) … … DECLCALLBACK(int) pdmacFileAioMgrNormal( 1706 1719 rc = pdmacFileAioMgrNormalCheckEndpoints(pAioMgr); 1707 1720 CHECK_RC(pAioMgr, rc); 1708 1721 } 1722 LogRel(("5)reqsactive=%d\n", pAioMgr->cRequestsActive)); 1709 1723 } /* while requests are active. */ 1724 LogRel(("after while\n")); 1710 1725 1711 1726 if (pAioMgr->enmState == PDMACEPFILEMGRSTATE_GROWING) 1712 1727 {

