Sync with trunk (r48545)
[reactos.git] / drivers / filesystems / fastfat_new / fat.c
index 06b601c..a6ac9fa 100644 (file)
@@ -163,6 +163,10 @@ FatInitializeVcb(IN PFAT_IRP_CONTEXT IrpContext,
     /* Initialize VCB's resource */
     ExInitializeResourceLite(&Vcb->Resource);
 
+    /* Initialize close queue lists */
+    InitializeListHead(&Vcb->AsyncCloseList);
+    InitializeListHead(&Vcb->DelayedCloseList);
+
     /* Initialize CC */
     CcInitializeCacheMap(Vcb->StreamFileObject,
                          (PCC_FILE_SIZES)&Vcb->Header.AllocationSize,
@@ -201,6 +205,10 @@ FatInitializeVcb(IN PFAT_IRP_CONTEXT IrpContext,
         goto FatInitializeVcbCleanup;
     }
 
+    /* Increase internal / residual open counter */
+    InterlockedIncrement((PLONG)&(Vcb->InternalOpenCount));
+    InterlockedIncrement((PLONG)&(Vcb->ResidualOpenCount));
+
     /* Set up notifications */
     FsRtlNotifyInitializeSync(&Vcb->NotifySync);
     InitializeListHead(&Vcb->NotifyList);
@@ -239,6 +247,9 @@ FatUninitializeVcb(IN PVCB Vcb)
         Vcb->StreamFileObject = NULL;
     }
 
+    /* Free ContextClose if it's not freed up already */
+    if (Vcb->CloseContext) ExFreePool(Vcb->CloseContext);
+
     /* Free notifications stuff */
     FsRtlNotifyUninitializeSync(&Vcb->NotifySync);