[FASTFAT]
authorPierre Schweitzer <pierre@reactos.org>
Sat, 29 Nov 2014 20:26:07 +0000 (20:26 +0000)
committerPierre Schweitzer <pierre@reactos.org>
Sat, 29 Nov 2014 20:26:07 +0000 (20:26 +0000)
- Add a flag to enable (or disable depends on your reading ;-)) the VPB swapout process for volume umount.
- By default, disable it for MSVC builds.

This *might* lolfix the MSVC builds.

Just for the record, we also have a bug in the GCC builds but it doesn't seem to show up.
The main issue is that after formatting, we close handle to the volume, and IRP_MJ_CLEANUP is properly received and initiates a bit of dismount.
But then, the IRP_MJ_CLOSE is never received (why????) and thus, dismount cannot properly end.
This is a real & serious issue.

svn path=/trunk/; revision=65527

reactos/drivers/filesystems/fastfat/cleanup.c
reactos/drivers/filesystems/fastfat/close.c
reactos/drivers/filesystems/fastfat/fsctl.c
reactos/drivers/filesystems/fastfat/vfat.h

index 6d64ee1..b6bbae0 100644 (file)
@@ -110,10 +110,12 @@ VfatCleanupFile(
         ExReleaseResourceLite(&pFcb->MainResource);
     }
 
+#ifdef ENABLE_SWAPOUT
     if (DeviceExt->Flags & VCB_DISMOUNT_PENDING)
     {
         VfatCheckForDismount(DeviceExt, FALSE);
     }
+#endif
 
     return STATUS_SUCCESS;
 }
index 54a1280..1f8d3b1 100644 (file)
@@ -82,10 +82,12 @@ VfatCloseFile(
         vfatDestroyCCB(pCcb);
     }
 
+#ifdef ENABLE_SWAPOUT
     if (DeviceExt->OpenHandleCount == 0)
     {
         VfatCheckForDismount(DeviceExt, FALSE);
     }
+#endif
 
     return Status;
 }
index aa50d46..8368090 100644 (file)
@@ -977,6 +977,9 @@ VfatDismountVolume(
 
     /* Mark we're being dismounted */
     DeviceExt->Flags |= VCB_DISMOUNT_PENDING;
+#ifndef ENABLE_SWAPOUT
+    IrpContext->DeviceObject->Vpb->Flags &= ~VPB_MOUNTED;
+#endif
 
     ExReleaseResourceLite(&DeviceExt->FatResource);
 
index 15a91f2..b6d4c89 100644 (file)
@@ -7,6 +7,9 @@
 #include <pseh/pseh2.h>
 
 #define USE_ROS_CC_AND_FS
+#ifndef _MSC_VER
+#define ENABLE_SWAPOUT
+#endif
 
 #define ROUND_DOWN(n, align) \
     (((ULONG)n) & ~((align) - 1l))