[FASTFAT]
authorPierre Schweitzer <pierre@reactos.org>
Thu, 27 Nov 2014 06:16:21 +0000 (06:16 +0000)
committerPierre Schweitzer <pierre@reactos.org>
Thu, 27 Nov 2014 06:16:21 +0000 (06:16 +0000)
Set clean shutdown bit on dismount

svn path=/trunk/; revision=65501

reactos/drivers/filesystems/fastfat/fsctl.c

index 6798ea8..aa50d46 100644 (file)
@@ -925,6 +925,8 @@ VfatDismountVolume(
     PLIST_ENTRY NextEntry;
     PVFATFCB Fcb;
     PFILE_OBJECT FileObject;
+    ULONG eocMark;
+    NTSTATUS Status;
 
     DPRINT("VfatDismountVolume(%p)\n", IrpContext);
 
@@ -950,6 +952,18 @@ VfatDismountVolume(
 
     ExAcquireResourceExclusiveLite(&DeviceExt->FatResource, TRUE);
 
+    if (DeviceExt->VolumeFcb->Flags & VCB_CLEAR_DIRTY)
+    {
+        /* Set clean shutdown bit */
+        Status = GetNextCluster(DeviceExt, 1, &eocMark);
+        if (NT_SUCCESS(Status))
+        {
+            eocMark |= DeviceExt->CleanShutBitMask;
+            if (NT_SUCCESS(WriteCluster(DeviceExt, 1, eocMark)))
+                DeviceExt->VolumeFcb->Flags &= ~VCB_IS_DIRTY;
+        }
+    }
+
     /* Flush volume & files */
     VfatFlushVolume(DeviceExt, (PVFATFCB)FileObject->FsContext);