Lines Matching defs:pL2Entry

285     PQCOWL2CACHEENTRY          pL2Entry;
508 PQCOWL2CACHEENTRY pL2Entry = NULL;
511 RTListForEachSafe(&pImage->ListSearch, pL2Entry, pL2Next, QCOWL2CACHEENTRY, NodeSearch)
513 Assert(!pL2Entry->cRefs);
515 RTListNodeRemove(&pL2Entry->NodeSearch);
516 RTMemPageFree(pL2Entry->paL2Tbl, pImage->cbL2Table);
517 RTMemFree(pL2Entry);
534 PQCOWL2CACHEENTRY pL2Entry = NULL;
536 RTListForEach(&pImage->ListSearch, pL2Entry, QCOWL2CACHEENTRY, NodeSearch)
538 if (pL2Entry->offL2Tbl == offL2Tbl)
542 if (!RTListNodeIsDummy(&pImage->ListSearch, pL2Entry, QCOWL2CACHEENTRY, NodeSearch))
545 RTListNodeRemove(&pL2Entry->NodeLru);
546 RTListPrepend(&pImage->ListLru, &pL2Entry->NodeLru);
547 pL2Entry->cRefs++;
548 return pL2Entry;
558 * @param pL2Entry The L2 cache entry.
560 static void qcowL2TblCacheEntryRelease(PQCOWL2CACHEENTRY pL2Entry)
562 Assert(pL2Entry->cRefs > 0);
563 pL2Entry->cRefs--;
574 PQCOWL2CACHEENTRY pL2Entry = NULL;
580 pL2Entry = (PQCOWL2CACHEENTRY)RTMemAllocZ(sizeof(QCOWL2CACHEENTRY));
581 if (pL2Entry)
583 pL2Entry->paL2Tbl = (uint64_t *)RTMemPageAllocZ(pImage->cbL2Table);
584 if (RT_UNLIKELY(!pL2Entry->paL2Tbl))
586 RTMemFree(pL2Entry);
587 pL2Entry = NULL;
591 pL2Entry->cRefs = 1;
601 RTListForEachReverse(&pImage->ListLru, pL2Entry, QCOWL2CACHEENTRY, NodeLru)
603 if (!pL2Entry->cRefs)
607 if (!RTListNodeIsDummy(&pImage->ListSearch, pL2Entry, QCOWL2CACHEENTRY, NodeSearch))
609 RTListNodeRemove(&pL2Entry->NodeSearch);
610 RTListNodeRemove(&pL2Entry->NodeLru);
611 pL2Entry->offL2Tbl = 0;
612 pL2Entry->cRefs = 1;
615 pL2Entry = NULL;
618 return pL2Entry;
626 * @param pL2Entry The L2 cache entry to free.
628 static void qcowL2TblCacheEntryFree(PQCOWIMAGE pImage, PQCOWL2CACHEENTRY pL2Entry)
630 Assert(!pL2Entry->cRefs);
631 RTMemPageFree(pL2Entry->paL2Tbl, pImage->cbL2Table);
632 RTMemFree(pL2Entry);
642 * @param pL2Entry The L2 cache entry to insert.
644 static void qcowL2TblCacheEntryInsert(PQCOWIMAGE pImage, PQCOWL2CACHEENTRY pL2Entry)
648 Assert(pL2Entry->offL2Tbl > 0);
651 RTListPrepend(&pImage->ListLru, &pL2Entry->NodeLru);
655 RTListAppend(&pImage->ListSearch, &pL2Entry->NodeSearch);
661 if (pIt->offL2Tbl > pL2Entry->offL2Tbl)
662 RTListPrepend(&pImage->ListSearch, &pL2Entry->NodeSearch);
669 Assert(pIt->offL2Tbl != pL2Entry->offL2Tbl);
670 if (pIt->offL2Tbl < pL2Entry->offL2Tbl)
672 RTListNodeInsertAfter(&pIt->NodeSearch, &pL2Entry->NodeSearch);
698 PQCOWL2CACHEENTRY pL2Entry = qcowL2TblCacheRetain(pImage, offL2Tbl);
699 if (!pL2Entry)
701 pL2Entry = qcowL2TblCacheEntryAlloc(pImage);
703 if (pL2Entry)
708 pL2Entry->offL2Tbl = offL2Tbl;
710 offL2Tbl, pL2Entry->paL2Tbl,
717 qcowTableConvertToHostEndianess(pL2Entry->paL2Tbl, pImage->cL2TableEntries);
719 qcowL2TblCacheEntryInsert(pImage, pL2Entry);
723 qcowL2TblCacheEntryRelease(pL2Entry);
724 qcowL2TblCacheEntryFree(pImage, pL2Entry);
732 *ppL2Entry = pL2Entry;
845 PQCOWL2CACHEENTRY pL2Entry;
847 rc = qcowL2TblCacheFetch(pImage, pIoCtx, pImage->paL1Table[idxL1], &pL2Entry);
851 if (pL2Entry->paL2Tbl[idxL2])
853 uint64_t off = pL2Entry->paL2Tbl[idxL2];
876 qcowL2TblCacheEntryRelease(pL2Entry);
1311 qcowL2TblCacheEntryRelease(pClusterAlloc->pL2Entry); /* Release L2 cache entry. */
1312 qcowL2TblCacheEntryFree(pImage, pClusterAlloc->pL2Entry); /* Free it, it is not in the cache yet. */
1319 qcowL2TblCacheEntryRelease(pClusterAlloc->pL2Entry); /* Release L2 cache entry. */
1349 AssertPtr(pClusterAlloc->pL2Entry);
1355 uint64_t offUpdateLe = RT_H2BE_U64(pClusterAlloc->pL2Entry->offL2Tbl);
1379 pImage->paL1Table[pClusterAlloc->idxL1] = pClusterAlloc->pL2Entry->offL2Tbl;
1380 qcowL2TblCacheEntryInsert(pImage, pClusterAlloc->pL2Entry);
1422 pClusterAlloc->pL2Entry->paL2Tbl[pClusterAlloc->idxL2] = pClusterAlloc->offClusterNew;
1423 qcowL2TblCacheEntryRelease(pClusterAlloc->pL2Entry);
1791 PQCOWL2CACHEENTRY pL2Entry = NULL;
1815 pL2Entry = qcowL2TblCacheEntryAlloc(pImage);
1816 if (!pL2Entry)
1824 pL2Entry->offL2Tbl = offL2Tbl;
1825 memset(pL2Entry->paL2Tbl, 0, pImage->cbL2Table);
1833 pL2ClusterAlloc->pL2Entry = pL2Entry;
1841 offL2Tbl, pL2Entry->paL2Tbl, pImage->cbL2Table, pIoCtx,
1848 qcowL2TblCacheEntryFree(pImage, pL2Entry);
1857 &pL2Entry);
1879 pDataClusterAlloc->pL2Entry = pL2Entry;