Lines Matching defs:pSeg

319         PDRVDISKSEGMENT pSeg = (PDRVDISKSEGMENT)RTAvlrFileOffsetRangeGet(pThis->pTreeSegments, offCurr);
324 if (!pSeg)
327 pSeg = (PDRVDISKSEGMENT)RTAvlrFileOffsetGetBestFit(pThis->pTreeSegments, offCurr, true);
328 if ( !pSeg
329 || offCurr + (RTFOFF)cbLeft <= pSeg->Core.Key)
332 cbRange = pSeg->Core.Key - offCurr;
337 pSeg = (PDRVDISKSEGMENT)RTMemAllocZ(RT_OFFSETOF(DRVDISKSEGMENT, apIoLog[cbRange / 512]));
338 if (pSeg)
340 pSeg->Core.Key = offCurr;
341 pSeg->Core.KeyLast = offCurr + (RTFOFF)cbRange - 1;
342 pSeg->cbSeg = cbRange;
343 pSeg->pbSeg = (uint8_t *)RTMemAllocZ(cbRange);
344 pSeg->cIoLogEntries = cbRange / 512;
345 if (!pSeg->pbSeg)
346 RTMemFree(pSeg);
349 bool fInserted = RTAvlrFileOffsetInsert(pThis->pTreeSegments, &pSeg->Core);
358 offSeg = offCurr - pSeg->Core.Key;
359 cbRange = RT_MIN(cbLeft, (size_t)(pSeg->Core.KeyLast + 1 - offCurr));
364 AssertPtr(pSeg);
365 size_t cbCopied = RTSgBufCopyToBuf(&SgBuf, pSeg->pbSeg + offSeg, cbRange);
376 AssertMsg(uSector < pSeg->cIoLogEntries, ("Internal bug!\n"));
378 pIoLogOld = pSeg->apIoLog[uSector];
386 pSeg->apIoLog[uSector] = pIoLogEnt;
432 PDRVDISKSEGMENT pSeg = (PDRVDISKSEGMENT)RTAvlrFileOffsetRangeGet(pThis->pTreeSegments, offCurr);
437 if (!pSeg)
440 pSeg = (PDRVDISKSEGMENT)RTAvlrFileOffsetGetBestFit(pThis->pTreeSegments, offCurr, true);
441 if (!pSeg)
446 else if (offCurr + (RTFOFF)cbLeft <= pSeg->Core.Key)
449 cbRange = pSeg->Core.Key - offCurr;
465 offSeg = offCurr - pSeg->Core.Key;
466 cbRange = RT_MIN(cbLeft, (size_t)(pSeg->Core.KeyLast + 1 - offCurr));
476 Seg.pvSeg = pSeg->pbSeg + offSeg;
483 AssertMsg(cSector < pSeg->cIoLogEntries, ("Internal bug!\n"));
488 pSeg->apIoLog[cSector]->off,
489 pSeg->apIoLog[cSector]->cbWrite,
490 pSeg->apIoLog[cSector]->cRefs);
528 PDRVDISKSEGMENT pSeg = (PDRVDISKSEGMENT)RTAvlrFileOffsetRangeGet(pThis->pTreeSegments, offStart);
530 if (!pSeg)
533 pSeg = (PDRVDISKSEGMENT)RTAvlrFileOffsetGetBestFit(pThis->pTreeSegments, offStart, true);
534 if ( !pSeg
535 || (RTFOFF)offStart + (RTFOFF)cbLeft <= pSeg->Core.Key)
538 cbRange = pSeg->Core.Key - offStart;
546 cbRange = RT_MIN(cbLeft, pSeg->Core.KeyLast - offStart + 1);
547 cbPreLeft = offStart - pSeg->Core.Key;
548 cbPostLeft = pSeg->cbSeg - cbRange - cbPreLeft;
557 RTAvlrFileOffsetRemove(pThis->pTreeSegments, pSeg->Core.Key);
562 LogFlowFunc(("Freeing whole segment pSeg=%#p\n", pSeg));
563 RTMemFree(pSeg->pbSeg);
564 for (unsigned idx = 0; idx < pSeg->cIoLogEntries; idx++)
565 drvdiskintIoLogEntryRelease(pSeg->apIoLog[idx]);
566 RTMemFree(pSeg);
571 LogFlowFunc(("Realloc segment pSeg=%#p\n", pSeg));
572 pSeg->pbSeg = (uint8_t *)RTMemRealloc(pSeg->pbSeg, cbPreLeft);
573 for (unsigned idx = cbPreLeft / 512; idx < pSeg->cIoLogEntries; idx++)
574 drvdiskintIoLogEntryRelease(pSeg->apIoLog[idx]);
575 pSeg = (PDRVDISKSEGMENT)RTMemRealloc(pSeg, RT_OFFSETOF(DRVDISKSEGMENT, apIoLog[cbPreLeft / 512]));
576 pSeg->Core.KeyLast = pSeg->Core.Key + cbPreLeft - 1;
577 pSeg->cbSeg = cbPreLeft;
578 pSeg->cIoLogEntries = cbPreLeft / 512;
579 bool fInserted = RTAvlrFileOffsetInsert(pThis->pTreeSegments, &pSeg->Core);
585 LogFlowFunc(("Move data and realloc segment pSeg=%#p\n", pSeg));
586 memmove(pSeg->pbSeg, pSeg->pbSeg + cbRange, cbPostLeft);
588 drvdiskintIoLogEntryRelease(pSeg->apIoLog[idx]);
590 pSeg->apIoLog[idx] = pSeg->apIoLog[(cbRange / 512) + idx];
591 pSeg = (PDRVDISKSEGMENT)RTMemRealloc(pSeg, RT_OFFSETOF(DRVDISKSEGMENT, apIoLog[cbPostLeft / 512]));
592 pSeg->pbSeg = (uint8_t *)RTMemRealloc(pSeg->pbSeg, cbPostLeft);
593 pSeg->Core.Key += cbRange;
594 pSeg->cbSeg = cbPostLeft;
595 pSeg->cIoLogEntries = cbPostLeft / 512;
596 bool fInserted = RTAvlrFileOffsetInsert(pThis->pTreeSegments, &pSeg->Core);
602 LogFlowFunc(("Split segment pSeg=%#p\n", pSeg));
606 pSegPost->Core.Key = pSeg->Core.Key + cbPreLeft + cbRange;
607 pSegPost->Core.KeyLast = pSeg->Core.KeyLast;
615 memcpy(pSegPost->pbSeg, pSeg->pbSeg + cbPreLeft + cbRange, cbPostLeft);
617 pSegPost->apIoLog[idx] = pSeg->apIoLog[((cbPreLeft + cbRange) / 512) + idx];
625 pSeg->pbSeg = (uint8_t *)RTMemRealloc(pSeg->pbSeg, cbPreLeft);
627 drvdiskintIoLogEntryRelease(pSeg->apIoLog[idx]);
628 pSeg = (PDRVDISKSEGMENT)RTMemRealloc(pSeg, RT_OFFSETOF(DRVDISKSEGMENT, apIoLog[cbPreLeft / 512]));
629 pSeg->Core.KeyLast = pSeg->Core.Key + cbPreLeft - 1;
630 pSeg->cbSeg = cbPreLeft;
631 pSeg->cIoLogEntries = cbPreLeft / 512;
632 bool fInserted = RTAvlrFileOffsetInsert(pThis->pTreeSegments, &pSeg->Core);
1278 PDRVDISKSEGMENT pSeg = (PDRVDISKSEGMENT)pNode;
1280 RTMemFree(pSeg->pbSeg);
1281 RTMemFree(pSeg);