Actually this change may not be enough to fix the underlying issue. I believe there are some cases when straight calling of IoVerifyVolume could lead to deadlock. Maybe someone can lend a helping hand here and verify if the code is actually correct? If not I will probably get to it myself, but it may take a few days or even weeks.
Thanks, Filip
On Sun, May 11, 2008 at 10:04 PM, navaraf@svn.reactos.org wrote:
Author: navaraf Date: Sun May 11 15:04:47 2008 New Revision: 33449
URL: http://svn.reactos.org/svn/reactos?rev=33449&view=rev Log: Fix incorrect parameters to IoSetDeviceToVerify/IoVerifyVolume. Spotted by R.T.Sivakumar rtshiva@gmail.com.
Modified: trunk/reactos/drivers/filesystems/fastfat/create.c
Modified: trunk/reactos/drivers/filesystems/fastfat/create.c URL: http://svn.reactos.org/svn/reactos/trunk/reactos/drivers/filesystems/fastfat... ============================================================================== --- trunk/reactos/drivers/filesystems/fastfat/create.c [iso-8859-1] (original) +++ trunk/reactos/drivers/filesystems/fastfat/create.c [iso-8859-1] Sun May 11 15:04:47 2008 @@ -382,11 +382,10 @@ DPRINT ("Media change detected!\n"); DPRINT ("Device %p\n", DeviceExt->StorageDevice);
/* Find the device to verify and reset the thread field to empty value again. */ DeviceToVerify = IoGetDeviceToVerify (PsGetCurrentThread ());
IoSetDeviceToVerify (PsGetCurrentThread (),NULL);Status = IoVerifyVolume (DeviceExt->StorageDevice,
IoSetDeviceToVerify (PsGetCurrentThread (), NULL);Status = IoVerifyVolume (DeviceToVerify, FALSE); } if (!NT_SUCCESS(Status))