[FASTFAT]

Don't attempt to verify volume if it was already verified in between

svn path=/trunk/; revision=73784
This commit is contained in:
Pierre Schweitzer 2017-02-12 19:31:31 +00:00
parent 935904f4a0
commit 5b66f1e47b

View file

@ -623,13 +623,21 @@ VfatVerify(
BOOLEAN RecognizedFS; BOOLEAN RecognizedFS;
PDEVICE_EXTENSION DeviceExt; PDEVICE_EXTENSION DeviceExt;
BOOLEAN AllowRaw; BOOLEAN AllowRaw;
PVPB Vpb;
DPRINT("VfatVerify(IrpContext %p)\n", IrpContext); DPRINT("VfatVerify(IrpContext %p)\n", IrpContext);
DeviceToVerify = IrpContext->Stack->Parameters.VerifyVolume.DeviceObject; DeviceToVerify = IrpContext->Stack->Parameters.VerifyVolume.DeviceObject;
DeviceExt = DeviceToVerify->DeviceExtension; DeviceExt = DeviceToVerify->DeviceExtension;
Vpb = IrpContext->Stack->Parameters.VerifyVolume.Vpb;
AllowRaw = BooleanFlagOn(IrpContext->Stack->Flags, SL_ALLOW_RAW_MOUNT); AllowRaw = BooleanFlagOn(IrpContext->Stack->Flags, SL_ALLOW_RAW_MOUNT);
if (!BooleanFlagOn(Vpb->RealDevice->Flags, DO_VERIFY_VOLUME))
{
DPRINT("Already verified\n");
return STATUS_SUCCESS;
}
Status = VfatBlockDeviceIoControl(DeviceExt->StorageDevice, Status = VfatBlockDeviceIoControl(DeviceExt->StorageDevice,
IOCTL_DISK_CHECK_VERIFY, IOCTL_DISK_CHECK_VERIFY,
NULL, NULL,
@ -671,7 +679,7 @@ VfatVerify(
} }
} }
IrpContext->Stack->Parameters.VerifyVolume.Vpb->RealDevice->Flags &= ~DO_VERIFY_VOLUME; Vpb->RealDevice->Flags &= ~DO_VERIFY_VOLUME;
return Status; return Status;
} }