MCPcopy Create free account
hub / github.com/bobranten/Ext4Fsd / Ext2FreeMcb

Function Ext2FreeMcb

Ext4Fsd/memory.c:1535–1590  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

1533}
1534
1535VOID
1536Ext2FreeMcb (IN PEXT2_VCB Vcb, IN PEXT2_MCB Mcb)
1537{
1538 PEXT2_MCB Parent = Mcb->Parent;
1539
1540 ASSERT(Mcb != NULL);
1541
1542 ASSERT((Mcb->Identifier.Type == EXT2MCB) &&
1543 (Mcb->Identifier.Size == sizeof(EXT2_MCB)));
1544
1545 if ((Mcb->Identifier.Type != EXT2MCB) ||
1546 (Mcb->Identifier.Size != sizeof(EXT2_MCB))) {
1547 return;
1548 }
1549
1550 DEBUG(DL_INF, ( "Ext2FreeMcb: Mcb %wZ will be freed.\n", &Mcb->FullName));
1551
1552 if (IsMcbSymLink(Mcb) && Mcb->Target) {
1553 Ext2DerefMcb(Mcb->Target);
1554 }
1555
1556 if (FsRtlNumberOfRunsInLargeMcb(&Mcb->Extents)) {
1557 DEBUG(DL_EXT, ("List data extents for: %wZ\n", &Mcb->FullName));
1558 Ext2ListExtents(&Mcb->Extents);
1559 }
1560 FsRtlUninitializeLargeMcb(&(Mcb->Extents));
1561 if (FsRtlNumberOfRunsInLargeMcb(&Mcb->MetaExts)) {
1562 DEBUG(DL_EXT, ("List meta extents for: %wZ\n", &Mcb->FullName));
1563 Ext2ListExtents(&Mcb->MetaExts);
1564 }
1565 FsRtlUninitializeLargeMcb(&(Mcb->MetaExts));
1566 ClearLongFlag(Mcb->Flags, MCB_ZONE_INITED);
1567
1568 if (Mcb->ShortName.Buffer) {
1569 DEC_MEM_COUNT(PS_MCB_NAME, Mcb->ShortName.Buffer,
1570 Mcb->ShortName.MaximumLength);
1571 Ext2FreePool(Mcb->ShortName.Buffer, EXT2_FNAME_MAGIC);
1572 }
1573
1574 if (Mcb->FullName.Buffer) {
1575 DEC_MEM_COUNT(PS_MCB_NAME, Mcb->FullName.Buffer,
1576 Mcb->FullName.MaximumLength);
1577 Ext2FreePool(Mcb->FullName.Buffer, EXT2_FNAME_MAGIC);
1578 }
1579
1580 /* free dentry */
1581 if (Mcb->de) {
1582 Ext2FreeEntry(Mcb->de);
1583 }
1584
1585 Mcb->Identifier.Type = 0;
1586 Mcb->Identifier.Size = 0;
1587
1588 ExFreeToNPagedLookasideList(&(Ext2Global->Ext2McbLookasideList), Mcb);
1589 DEC_MEM_COUNT(PS_MCB, Mcb, sizeof(EXT2_MCB));
1590}
1591
1592

Callers 6

Ext2CleanupAllMcbsFunction · 0.85
Ext2InitializeVcbFunction · 0.85
Ext2McbReaperThreadFunction · 0.85
Ext2LookupFileFunction · 0.85
Ext2LoadInternalJournalFunction · 0.85
Ext2RecoverJournalFunction · 0.85

Calls 3

Ext2ListExtentsFunction · 0.85
Ext2FreePoolFunction · 0.85
Ext2FreeEntryFunction · 0.85

Tested by

no test coverage detected