Lines Matching defs:pBlkCacheGlobal

775 static PPDMBLKCACHE pdmR3BlkCacheFindById(PPDMBLKCACHEGLOBAL pBlkCacheGlobal, const char *pcszId)
780 RTListForEach(&pBlkCacheGlobal->ListUsers, pBlkCache, PDMBLKCACHE, NodeCacheUser)
811 PPDMBLKCACHEGLOBAL pBlkCacheGlobal = pVM->pUVM->pdm.s.pBlkCacheGlobal;
813 AssertPtr(pBlkCacheGlobal);
815 pdmBlkCacheLockEnter(pBlkCacheGlobal);
817 SSMR3PutU32(pSSM, pBlkCacheGlobal->cRefs);
821 RTListForEach(&pBlkCacheGlobal->ListUsers, pBlkCache, PDMBLKCACHE, NodeCacheUser)
846 AssertMsg( pEntry->pList == &pBlkCacheGlobal->LruRecentlyUsedIn
847 || pEntry->pList == &pBlkCacheGlobal->LruFrequentlyUsed,
861 pdmBlkCacheLockLeave(pBlkCacheGlobal);
869 PPDMBLKCACHEGLOBAL pBlkCacheGlobal = pVM->pUVM->pdm.s.pBlkCacheGlobal;
873 AssertPtr(pBlkCacheGlobal);
875 pdmBlkCacheLockEnter(pBlkCacheGlobal);
913 pBlkCache = pdmR3BlkCacheFindById(pBlkCacheGlobal, pszId);
959 pdmBlkCacheEntryAddToList(&pBlkCacheGlobal->LruRecentlyUsedIn, pEntry);
960 pdmBlkCacheAdd(pBlkCacheGlobal, cbEntry);
975 pdmBlkCacheLockLeave(pBlkCacheGlobal);
992 PPDMBLKCACHEGLOBAL pBlkCacheGlobal;
1001 pBlkCacheGlobal = (PPDMBLKCACHEGLOBAL)RTMemAllocZ(sizeof(PDMBLKCACHEGLOBAL));
1002 if (!pBlkCacheGlobal)
1005 RTListInit(&pBlkCacheGlobal->ListUsers);
1006 pBlkCacheGlobal->pVM = pVM;
1007 pBlkCacheGlobal->cRefs = 0;
1008 pBlkCacheGlobal->cbCached = 0;
1009 pBlkCacheGlobal->fCommitInProgress = false;
1012 pBlkCacheGlobal->LruRecentlyUsedIn.pHead = NULL;
1013 pBlkCacheGlobal->LruRecentlyUsedIn.pTail = NULL;
1014 pBlkCacheGlobal->LruRecentlyUsedIn.cbCached = 0;
1016 pBlkCacheGlobal->LruRecentlyUsedOut.pHead = NULL;
1017 pBlkCacheGlobal->LruRecentlyUsedOut.pTail = NULL;
1018 pBlkCacheGlobal->LruRecentlyUsedOut.cbCached = 0;
1020 pBlkCacheGlobal->LruFrequentlyUsed.pHead = NULL;
1021 pBlkCacheGlobal->LruFrequentlyUsed.pTail = NULL;
1022 pBlkCacheGlobal->LruFrequentlyUsed.cbCached = 0;
1026 rc = CFGMR3QueryU32Def(pCfgBlkCache, "CacheSize", &pBlkCacheGlobal->cbMax, 5 * _1M);
1028 LogFlowFunc(("Maximum number of bytes cached %u\n", pBlkCacheGlobal->cbMax));
1030 pBlkCacheGlobal->cbRecentlyUsedInMax = (pBlkCacheGlobal->cbMax / 100) * 25; /* 25% of the buffer size */
1031 pBlkCacheGlobal->cbRecentlyUsedOutMax = (pBlkCacheGlobal->cbMax / 100) * 50; /* 50% of the buffer size */
1033 pBlkCacheGlobal->cbRecentlyUsedInMax, pBlkCacheGlobal->cbRecentlyUsedOutMax));
1036 rc = CFGMR3QueryU32Def(pCfgBlkCache, "CacheCommitIntervalMs", &pBlkCacheGlobal->u32CommitTimeoutMs, 10000 /* 10sec */);
1038 rc = CFGMR3QueryU32Def(pCfgBlkCache, "CacheCommitThreshold", &pBlkCacheGlobal->cbCommitDirtyThreshold, pBlkCacheGlobal->cbMax / 2);
1044 STAMR3Register(pVM, &pBlkCacheGlobal->cbMax,
1049 STAMR3Register(pVM, &pBlkCacheGlobal->cbCached,
1054 STAMR3Register(pVM, &pBlkCacheGlobal->LruRecentlyUsedIn.cbCached,
1059 STAMR3Register(pVM, &pBlkCacheGlobal->LruRecentlyUsedOut.cbCached,
1064 STAMR3Register(pVM, &pBlkCacheGlobal->LruFrequentlyUsed.cbCached,
1071 STAMR3Register(pVM, &pBlkCacheGlobal->cHits,
1075 STAMR3Register(pVM, &pBlkCacheGlobal->cPartialHits,
1079 STAMR3Register(pVM, &pBlkCacheGlobal->cMisses,
1083 STAMR3Register(pVM, &pBlkCacheGlobal->StatRead,
1087 STAMR3Register(pVM, &pBlkCacheGlobal->StatWritten,
1091 STAMR3Register(pVM, &pBlkCacheGlobal->StatTreeGet,
1095 STAMR3Register(pVM, &pBlkCacheGlobal->StatTreeInsert,
1099 STAMR3Register(pVM, &pBlkCacheGlobal->StatTreeRemove,
1103 STAMR3Register(pVM, &pBlkCacheGlobal->StatBuffersReused,
1110 rc = RTCritSectInit(&pBlkCacheGlobal->CritSect);
1116 if (pBlkCacheGlobal->u32CommitTimeoutMs > 0)
1119 pBlkCacheGlobal,
1121 &pBlkCacheGlobal->pTimerCommit);
1126 rc = SSMR3RegisterInternal(pVM, "pdmblkcache", 0, PDM_BLK_CACHE_SAVED_STATE_VERSION, pBlkCacheGlobal->cbMax,
1132 LogRel(("BlkCache: Cache successfully initialised. Cache size is %u bytes\n", pBlkCacheGlobal->cbMax));
1133 LogRel(("BlkCache: Cache commit interval is %u ms\n", pBlkCacheGlobal->u32CommitTimeoutMs));
1134 LogRel(("BlkCache: Cache commit threshold is %u bytes\n", pBlkCacheGlobal->cbCommitDirtyThreshold));
1135 pUVM->pdm.s.pBlkCacheGlobal = pBlkCacheGlobal;
1140 RTCritSectDelete(&pBlkCacheGlobal->CritSect);
1143 if (pBlkCacheGlobal)
1144 RTMemFree(pBlkCacheGlobal);
1152 PPDMBLKCACHEGLOBAL pBlkCacheGlobal = pVM->pUVM->pdm.s.pBlkCacheGlobal;
1154 if (pBlkCacheGlobal)
1157 pdmBlkCacheLockEnter(pBlkCacheGlobal);
1160 pdmBlkCacheDestroyList(&pBlkCacheGlobal->LruRecentlyUsedIn);
1161 pdmBlkCacheDestroyList(&pBlkCacheGlobal->LruRecentlyUsedOut);
1162 pdmBlkCacheDestroyList(&pBlkCacheGlobal->LruFrequentlyUsed);
1164 pdmBlkCacheLockLeave(pBlkCacheGlobal);
1166 RTCritSectDelete(&pBlkCacheGlobal->CritSect);
1167 RTMemFree(pBlkCacheGlobal);
1168 pVM->pUVM->pdm.s.pBlkCacheGlobal = NULL;
1174 PPDMBLKCACHEGLOBAL pBlkCacheGlobal = pVM->pUVM->pdm.s.pBlkCacheGlobal;
1178 if ( pBlkCacheGlobal
1179 && ASMAtomicXchgBool(&pBlkCacheGlobal->fIoErrorVmSuspended, false))
1182 pdmBlkCacheCommitDirtyEntries(pBlkCacheGlobal);
1192 PPDMBLKCACHEGLOBAL pBlkCacheGlobal = pVM->pUVM->pdm.s.pBlkCacheGlobal;
1194 if (!pBlkCacheGlobal)
1201 pdmBlkCacheLockEnter(pBlkCacheGlobal);
1203 pBlkCache = pdmR3BlkCacheFindById(pBlkCacheGlobal, pcszId);
1216 pBlkCache->pCache = pBlkCacheGlobal;
1229 STAMR3RegisterF(pBlkCacheGlobal->pVM, &pBlkCache->StatWriteDeferred,
1236 pBlkCacheGlobal->cRefs++;
1237 RTListAppend(&pBlkCacheGlobal->ListUsers, &pBlkCache->NodeCacheUser);
1238 pdmBlkCacheLockLeave(pBlkCacheGlobal);
1263 pdmBlkCacheLockLeave(pBlkCacheGlobal);
1465 PPDMBLKCACHEGLOBAL pBlkCacheGlobal = pVM->pUVM->pdm.s.pBlkCacheGlobal;
1469 if (!pBlkCacheGlobal)
1472 pdmBlkCacheLockEnter(pBlkCacheGlobal);
1474 RTListForEachSafe(&pBlkCacheGlobal->ListUsers, pBlkCache, pBlkCacheNext, PDMBLKCACHE, NodeCacheUser)
1481 pdmBlkCacheLockLeave(pBlkCacheGlobal);
1495 PPDMBLKCACHEGLOBAL pBlkCacheGlobal = pVM->pUVM->pdm.s.pBlkCacheGlobal;
1499 if (!pBlkCacheGlobal)
1502 pdmBlkCacheLockEnter(pBlkCacheGlobal);
1504 RTListForEachSafe(&pBlkCacheGlobal->ListUsers, pBlkCache, pBlkCacheNext, PDMBLKCACHE, NodeCacheUser)
1511 pdmBlkCacheLockLeave(pBlkCacheGlobal);
1525 PPDMBLKCACHEGLOBAL pBlkCacheGlobal = pVM->pUVM->pdm.s.pBlkCacheGlobal;
1529 if (!pBlkCacheGlobal)
1532 pdmBlkCacheLockEnter(pBlkCacheGlobal);
1534 RTListForEachSafe(&pBlkCacheGlobal->ListUsers, pBlkCache, pBlkCacheNext, PDMBLKCACHE, NodeCacheUser)
1541 pdmBlkCacheLockLeave(pBlkCacheGlobal);