Author: cgutman Date: Thu Jun 23 22:34:03 2011 New Revision: 52435
URL: http://svn.reactos.org/svn/reactos?rev=52435&view=rev Log: [VFATLIB] - Lock the volume before formatting to prevent concurrent access during formatting - This should (in theory) fix our formatting issue on mounted devices but currently we don't support FSCTL_LOCK_VOLUME in our FS drivers
Modified: trunk/reactos/lib/fslib/vfatlib/vfatlib.c
Modified: trunk/reactos/lib/fslib/vfatlib/vfatlib.c URL: http://svn.reactos.org/svn/reactos/trunk/reactos/lib/fslib/vfatlib/vfatlib.c... ============================================================================== --- trunk/reactos/lib/fslib/vfatlib/vfatlib.c [iso-8859-1] (original) +++ trunk/reactos/lib/fslib/vfatlib/vfatlib.c [iso-8859-1] Thu Jun 23 22:34:03 2011 @@ -194,6 +194,21 @@ Context.Percent = 0; Callback (PROGRESS, 0, (PVOID)&Context.Percent); } + + Status = NtFsControlFile(FileHandle, + NULL, + NULL, + NULL, + &Iosb, + FSCTL_LOCK_VOLUME, + NULL, + 0, + NULL, + 0); + if (!NT_SUCCESS(Status)) + { + DPRINT1("WARNING: Failed to lock volume for formatting! Format may fail! (Status: 0x%x)\n", Status); + }
if (PartitionInfo.PartitionType == PARTITION_FAT_12) { @@ -234,6 +249,21 @@ else { Status = STATUS_INVALID_PARAMETER; + } + + Status = NtFsControlFile(FileHandle, + NULL, + NULL, + NULL, + &Iosb, + FSCTL_UNLOCK_VOLUME, + NULL, + 0, + NULL, + 0); + if (!NT_SUCCESS(Status)) + { + DPRINT1("Failed to unlock volume (Status: 0x%x)\n", Status); }
NtClose(FileHandle);