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

Function Ext2UnlinkFcb

Ext4Fsd/memory.c:201–237  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

199}
200
201VOID
202Ext2UnlinkFcb(IN PEXT2_FCB Fcb)
203{
204 PEXT2_VCB Vcb = Fcb->Vcb;
205 PEXT2_MCB Mcb;
206
207 ExAcquireResourceExclusiveLite(&Vcb->McbLock, TRUE);
208 Mcb = Fcb->Mcb;
209
210 DEBUG(DL_INF, ("Ext2FreeFcb: Fcb (%p) to be unlinked: %wZ.\n",
211 Fcb, Mcb ? &Mcb->FullName : NULL));
212
213 if ((Mcb != NULL) &&
214 (Mcb->Identifier.Type == EXT2MCB) &&
215 (Mcb->Identifier.Size == sizeof(EXT2_MCB))) {
216
217 ASSERT (Mcb->Fcb == Fcb);
218 if (IsMcbSpecialFile(Mcb) ||
219 IsFileDeleted(Mcb)) {
220
221 ASSERT(!IsRoot(Fcb));
222 Ext2RemoveMcb(Vcb, Mcb);
223 Mcb->Fcb = NULL;
224
225 Ext2UnlinkMcb(Vcb, Mcb);
226 Ext2DerefMcb(Mcb);
227 Ext2LinkHeadMcb(Vcb, Mcb);
228
229 } else {
230 Mcb->Fcb = NULL;
231 Ext2DerefMcb(Mcb);
232 }
233 Fcb->Mcb = NULL;
234 }
235
236 ExReleaseResourceLite(&Vcb->McbLock);
237}
238
239VOID
240Ext2FreeFcb (IN PEXT2_FCB Fcb)

Callers 1

Ext2QueryUnusedFcbFunction · 0.85

Calls 3

Ext2RemoveMcbFunction · 0.85
Ext2UnlinkMcbFunction · 0.85
Ext2LinkHeadMcbFunction · 0.85

Tested by

no test coverage detected