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(a)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(a)gmail.com>om>.
  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/fastfa…
  ==============================================================================
  --- 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))