[CDFS] Set the FO_CLEANUP_COMPLETE on cleanup
[reactos.git] / drivers / filesystems / cdfs / cleanup.c
index fa0acd8..63ae24f 100644 (file)
@@ -44,8 +44,8 @@ CdfsCleanupFile(PCDFS_IRP_CONTEXT IrpContext,
     PDEVICE_EXTENSION DeviceExt;
     PFCB Fcb;
 
-    DPRINT("CdfsCleanupFile(DeviceExt %p, FileObject %p)\n",
-        DeviceExt,
+    DPRINT("CdfsCleanupFile(IrpContext %p, FileObject %p)\n",
+        IrpContext,
         FileObject);
 
     DeviceExt = IrpContext->DeviceObject->DeviceExtension;
@@ -55,6 +55,8 @@ CdfsCleanupFile(PCDFS_IRP_CONTEXT IrpContext,
         return STATUS_SUCCESS;
     }
 
+    DeviceExt->OpenHandleCount--;
+
     /* Notify about the cleanup */
     FsRtlNotifyCleanup(DeviceExt->NotifySync,
                        &(DeviceExt->NotifyList),
@@ -75,6 +77,9 @@ CdfsCleanupFile(PCDFS_IRP_CONTEXT IrpContext,
         CcUninitializeCacheMap (FileObject, NULL, NULL);
     }
 
+    /* Inform cleanup is complete */
+    FileObject->Flags |= FO_CLEANUP_COMPLETE;
+
     return STATUS_SUCCESS;
 }
 
@@ -97,7 +102,7 @@ CdfsCleanup(
     DeviceObject = IrpContext->DeviceObject;
     Stack = IrpContext->Stack;
 
-    if (DeviceObject == CdfsGlobalData->DeviceObject)
+    if (DeviceObject == CdfsGlobalData->CdFsDeviceObject || DeviceObject == CdfsGlobalData->HddFsDeviceObject)
     {
         DPRINT("Closing file system\n");
         Status = STATUS_SUCCESS;