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

Function Ext2ReleaseFcb

Ext4Fsd/memory.c:275–304  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

273}
274
275VOID
276Ext2ReleaseFcb (IN PEXT2_FCB Fcb)
277{
278 PEXT2_VCB Vcb = Fcb->Vcb;
279 PEXT2_MCB Mcb;
280
281 if (0 != Ext2DerefXcb(&Fcb->ReferenceCount))
282 return;
283
284 ExAcquireResourceExclusiveLite(&Vcb->FcbLock, TRUE);
285 ExAcquireResourceExclusiveLite(&Fcb->MainResource, TRUE);
286
287 Mcb = Fcb->Mcb;
288 RemoveEntryList(&Fcb->Next);
289
290 if (IsFlagOn(Fcb->Flags, FCB_DELETE_PENDING) ||
291 NULL == Mcb || IsFileDeleted(Mcb)) {
292 InsertHeadList(&Vcb->FcbList, &Fcb->Next);
293 Fcb->TsDrop.QuadPart = 0;
294 } else {
295 InsertTailList(&Vcb->FcbList, &Fcb->Next);
296 KeQuerySystemTime(&Fcb->TsDrop);
297 }
298 ExReleaseResourceLite(&Fcb->MainResource);
299 ExReleaseResourceLite(&Vcb->FcbLock);
300
301 if ((Vcb->FcbCount >> 6) > (ULONG)(Ext2Global->MaxDepth)) {
302 KeSetEvent(&Ext2Global->FcbReaper.Wait, 0, FALSE);
303 }
304}
305
306/* Insert Fcb to Vcb->FcbList queue, with Vcb->FcbLock Acquired. */
307

Callers 6

Ext2SetReparsePointFunction · 0.85
Ext2DeleteReparsePointFunction · 0.85
Ext2SetRenameInfoFunction · 0.85
Ext2SetLinkInfoFunction · 0.85
Ext2DeleteFileFunction · 0.85
Ext2CreateFileFunction · 0.85

Calls

no outgoing calls

Tested by

no test coverage detected