2 * FILE: drivers/fs/vfat/fastio.c
3 * PURPOSE: Fast IO routines.
4 * COPYRIGHT: See COPYING in the top level directory
5 * PROJECT: ReactOS kernel
6 * PROGRAMMER: Herve Poussineau (hpoussin@reactos.org)
14 static FAST_IO_CHECK_IF_POSSIBLE VfatFastIoCheckIfPossible
;
19 VfatFastIoCheckIfPossible(
20 IN PFILE_OBJECT FileObject
,
21 IN PLARGE_INTEGER FileOffset
,
25 IN BOOLEAN CheckForReadOperation
,
26 OUT PIO_STATUS_BLOCK IoStatus
,
27 IN PDEVICE_OBJECT DeviceObject
)
29 /* Prevent all Fast I/O requests */
30 DPRINT("VfatFastIoCheckIfPossible(): returning FALSE.\n");
32 UNREFERENCED_PARAMETER(FileObject
);
33 UNREFERENCED_PARAMETER(FileOffset
);
34 UNREFERENCED_PARAMETER(Length
);
35 UNREFERENCED_PARAMETER(Wait
);
36 UNREFERENCED_PARAMETER(LockKey
);
37 UNREFERENCED_PARAMETER(CheckForReadOperation
);
38 UNREFERENCED_PARAMETER(IoStatus
);
39 UNREFERENCED_PARAMETER(DeviceObject
);
44 static FAST_IO_READ VfatFastIoRead
;
50 IN PFILE_OBJECT FileObject
,
51 IN PLARGE_INTEGER FileOffset
,
56 OUT PIO_STATUS_BLOCK IoStatus
,
57 IN PDEVICE_OBJECT DeviceObject
)
59 DPRINT("VfatFastIoRead()\n");
61 UNREFERENCED_PARAMETER(FileObject
);
62 UNREFERENCED_PARAMETER(FileOffset
);
63 UNREFERENCED_PARAMETER(Length
);
64 UNREFERENCED_PARAMETER(Wait
);
65 UNREFERENCED_PARAMETER(LockKey
);
66 UNREFERENCED_PARAMETER(Buffer
);
67 UNREFERENCED_PARAMETER(IoStatus
);
68 UNREFERENCED_PARAMETER(DeviceObject
);
73 static FAST_IO_WRITE VfatFastIoWrite
;
79 IN PFILE_OBJECT FileObject
,
80 IN PLARGE_INTEGER FileOffset
,
85 OUT PIO_STATUS_BLOCK IoStatus
,
86 IN PDEVICE_OBJECT DeviceObject
)
88 DPRINT("VfatFastIoWrite()\n");
90 UNREFERENCED_PARAMETER(FileObject
);
91 UNREFERENCED_PARAMETER(FileOffset
);
92 UNREFERENCED_PARAMETER(Length
);
93 UNREFERENCED_PARAMETER(Wait
);
94 UNREFERENCED_PARAMETER(LockKey
);
95 UNREFERENCED_PARAMETER(Buffer
);
96 UNREFERENCED_PARAMETER(IoStatus
);
97 UNREFERENCED_PARAMETER(DeviceObject
);
102 static FAST_IO_QUERY_BASIC_INFO VfatFastIoQueryBasicInfo
;
107 VfatFastIoQueryBasicInfo(
108 IN PFILE_OBJECT FileObject
,
110 OUT PFILE_BASIC_INFORMATION Buffer
,
111 OUT PIO_STATUS_BLOCK IoStatus
,
112 IN PDEVICE_OBJECT DeviceObject
)
114 DPRINT("VfatFastIoQueryBasicInfo()\n");
116 UNREFERENCED_PARAMETER(FileObject
);
117 UNREFERENCED_PARAMETER(Wait
);
118 UNREFERENCED_PARAMETER(Buffer
);
119 UNREFERENCED_PARAMETER(IoStatus
);
120 UNREFERENCED_PARAMETER(DeviceObject
);
125 static FAST_IO_QUERY_STANDARD_INFO VfatFastIoQueryStandardInfo
;
130 VfatFastIoQueryStandardInfo(
131 IN PFILE_OBJECT FileObject
,
133 OUT PFILE_STANDARD_INFORMATION Buffer
,
134 OUT PIO_STATUS_BLOCK IoStatus
,
135 IN PDEVICE_OBJECT DeviceObject
)
137 DPRINT("VfatFastIoQueryStandardInfo\n");
139 UNREFERENCED_PARAMETER(FileObject
);
140 UNREFERENCED_PARAMETER(Wait
);
141 UNREFERENCED_PARAMETER(Buffer
);
142 UNREFERENCED_PARAMETER(IoStatus
);
143 UNREFERENCED_PARAMETER(DeviceObject
);
148 static FAST_IO_LOCK VfatFastIoLock
;
154 IN PFILE_OBJECT FileObject
,
155 IN PLARGE_INTEGER FileOffset
,
156 IN PLARGE_INTEGER Length
,
159 BOOLEAN FailImmediately
,
160 BOOLEAN ExclusiveLock
,
161 OUT PIO_STATUS_BLOCK IoStatus
,
162 IN PDEVICE_OBJECT DeviceObject
)
164 DPRINT("VfatFastIoLock\n");
166 UNREFERENCED_PARAMETER(FileObject
);
167 UNREFERENCED_PARAMETER(FileOffset
);
168 UNREFERENCED_PARAMETER(Length
);
169 UNREFERENCED_PARAMETER(ProcessId
);
170 UNREFERENCED_PARAMETER(Key
);
171 UNREFERENCED_PARAMETER(FailImmediately
);
172 UNREFERENCED_PARAMETER(ExclusiveLock
);
173 UNREFERENCED_PARAMETER(IoStatus
);
174 UNREFERENCED_PARAMETER(DeviceObject
);
179 static FAST_IO_UNLOCK_SINGLE VfatFastIoUnlockSingle
;
184 VfatFastIoUnlockSingle(
185 IN PFILE_OBJECT FileObject
,
186 IN PLARGE_INTEGER FileOffset
,
187 IN PLARGE_INTEGER Length
,
190 OUT PIO_STATUS_BLOCK IoStatus
,
191 IN PDEVICE_OBJECT DeviceObject
)
193 DPRINT("VfatFastIoUnlockSingle\n");
195 UNREFERENCED_PARAMETER(FileObject
);
196 UNREFERENCED_PARAMETER(FileOffset
);
197 UNREFERENCED_PARAMETER(Length
);
198 UNREFERENCED_PARAMETER(ProcessId
);
199 UNREFERENCED_PARAMETER(Key
);
200 UNREFERENCED_PARAMETER(IoStatus
);
201 UNREFERENCED_PARAMETER(DeviceObject
);
206 static FAST_IO_UNLOCK_ALL VfatFastIoUnlockAll
;
212 IN PFILE_OBJECT FileObject
,
214 OUT PIO_STATUS_BLOCK IoStatus
,
215 IN PDEVICE_OBJECT DeviceObject
)
217 DPRINT("VfatFastIoUnlockAll\n");
219 UNREFERENCED_PARAMETER(FileObject
);
220 UNREFERENCED_PARAMETER(ProcessId
);
221 UNREFERENCED_PARAMETER(IoStatus
);
222 UNREFERENCED_PARAMETER(DeviceObject
);
227 static FAST_IO_UNLOCK_ALL_BY_KEY VfatFastIoUnlockAllByKey
;
232 VfatFastIoUnlockAllByKey(
233 IN PFILE_OBJECT FileObject
,
236 OUT PIO_STATUS_BLOCK IoStatus
,
237 IN PDEVICE_OBJECT DeviceObject
)
239 DPRINT("VfatFastIoUnlockAllByKey\n");
241 UNREFERENCED_PARAMETER(FileObject
);
242 UNREFERENCED_PARAMETER(ProcessId
);
243 UNREFERENCED_PARAMETER(Key
);
244 UNREFERENCED_PARAMETER(IoStatus
);
245 UNREFERENCED_PARAMETER(DeviceObject
);
250 static FAST_IO_DEVICE_CONTROL VfatFastIoDeviceControl
;
255 VfatFastIoDeviceControl(
256 IN PFILE_OBJECT FileObject
,
258 IN PVOID InputBuffer OPTIONAL
,
259 IN ULONG InputBufferLength
,
260 OUT PVOID OutputBuffer OPTIONAL
,
261 IN ULONG OutputBufferLength
,
262 IN ULONG IoControlCode
,
263 OUT PIO_STATUS_BLOCK IoStatus
,
264 IN PDEVICE_OBJECT DeviceObject
)
266 DPRINT("VfatFastIoDeviceControl\n");
268 UNREFERENCED_PARAMETER(FileObject
);
269 UNREFERENCED_PARAMETER(Wait
);
270 UNREFERENCED_PARAMETER(InputBuffer
);
271 UNREFERENCED_PARAMETER(InputBufferLength
);
272 UNREFERENCED_PARAMETER(OutputBuffer
);
273 UNREFERENCED_PARAMETER(OutputBufferLength
);
274 UNREFERENCED_PARAMETER(IoControlCode
);
275 UNREFERENCED_PARAMETER(IoStatus
);
276 UNREFERENCED_PARAMETER(DeviceObject
);
281 static FAST_IO_ACQUIRE_FILE VfatAcquireFileForNtCreateSection
;
286 VfatAcquireFileForNtCreateSection(
287 IN PFILE_OBJECT FileObject
)
289 DPRINT("VfatAcquireFileForNtCreateSection\n");
290 UNREFERENCED_PARAMETER(FileObject
);
293 static FAST_IO_RELEASE_FILE VfatReleaseFileForNtCreateSection
;
298 VfatReleaseFileForNtCreateSection(
299 IN PFILE_OBJECT FileObject
)
301 DPRINT("VfatReleaseFileForNtCreateSection\n");
302 UNREFERENCED_PARAMETER(FileObject
);
305 static FAST_IO_DETACH_DEVICE VfatFastIoDetachDevice
;
310 VfatFastIoDetachDevice(
311 IN PDEVICE_OBJECT SourceDevice
,
312 IN PDEVICE_OBJECT TargetDevice
)
314 DPRINT("VfatFastIoDetachDevice\n");
315 UNREFERENCED_PARAMETER(SourceDevice
);
316 UNREFERENCED_PARAMETER(TargetDevice
);
319 static FAST_IO_QUERY_NETWORK_OPEN_INFO VfatFastIoQueryNetworkOpenInfo
;
324 VfatFastIoQueryNetworkOpenInfo(
325 IN PFILE_OBJECT FileObject
,
327 OUT PFILE_NETWORK_OPEN_INFORMATION Buffer
,
328 OUT PIO_STATUS_BLOCK IoStatus
,
329 IN PDEVICE_OBJECT DeviceObject
)
331 DPRINT("VfatFastIoQueryNetworkOpenInfo\n");
333 UNREFERENCED_PARAMETER(FileObject
);
334 UNREFERENCED_PARAMETER(Wait
);
335 UNREFERENCED_PARAMETER(Buffer
);
336 UNREFERENCED_PARAMETER(IoStatus
);
337 UNREFERENCED_PARAMETER(DeviceObject
);
342 static FAST_IO_ACQUIRE_FOR_MOD_WRITE VfatAcquireForModWrite
;
347 VfatAcquireForModWrite(
348 IN PFILE_OBJECT FileObject
,
349 IN PLARGE_INTEGER EndingOffset
,
350 OUT PERESOURCE
* ResourceToRelease
,
351 IN PDEVICE_OBJECT DeviceObject
)
353 DPRINT("VfatAcquireForModWrite\n");
355 UNREFERENCED_PARAMETER(FileObject
);
356 UNREFERENCED_PARAMETER(EndingOffset
);
357 UNREFERENCED_PARAMETER(ResourceToRelease
);
358 UNREFERENCED_PARAMETER(DeviceObject
);
360 return STATUS_INVALID_DEVICE_REQUEST
;
363 static FAST_IO_MDL_READ VfatMdlRead
;
369 IN PFILE_OBJECT FileObject
,
370 IN PLARGE_INTEGER FileOffset
,
374 OUT PIO_STATUS_BLOCK IoStatus
,
375 IN PDEVICE_OBJECT DeviceObject
)
377 DPRINT("VfatMdlRead\n");
379 UNREFERENCED_PARAMETER(FileObject
);
380 UNREFERENCED_PARAMETER(FileOffset
);
381 UNREFERENCED_PARAMETER(Length
);
382 UNREFERENCED_PARAMETER(LockKey
);
383 UNREFERENCED_PARAMETER(MdlChain
);
384 UNREFERENCED_PARAMETER(IoStatus
);
385 UNREFERENCED_PARAMETER(DeviceObject
);
390 static FAST_IO_MDL_READ_COMPLETE VfatMdlReadComplete
;
396 IN PFILE_OBJECT FileObject
,
398 IN PDEVICE_OBJECT DeviceObject
)
400 DPRINT("VfatMdlReadComplete\n");
402 UNREFERENCED_PARAMETER(FileObject
);
403 UNREFERENCED_PARAMETER(MdlChain
);
404 UNREFERENCED_PARAMETER(DeviceObject
);
409 static FAST_IO_PREPARE_MDL_WRITE VfatPrepareMdlWrite
;
415 IN PFILE_OBJECT FileObject
,
416 IN PLARGE_INTEGER FileOffset
,
420 OUT PIO_STATUS_BLOCK IoStatus
,
421 IN PDEVICE_OBJECT DeviceObject
)
423 DPRINT("VfatPrepareMdlWrite\n");
425 UNREFERENCED_PARAMETER(FileObject
);
426 UNREFERENCED_PARAMETER(FileOffset
);
427 UNREFERENCED_PARAMETER(Length
);
428 UNREFERENCED_PARAMETER(LockKey
);
429 UNREFERENCED_PARAMETER(MdlChain
);
430 UNREFERENCED_PARAMETER(IoStatus
);
431 UNREFERENCED_PARAMETER(DeviceObject
);
436 static FAST_IO_MDL_WRITE_COMPLETE VfatMdlWriteComplete
;
441 VfatMdlWriteComplete(
442 IN PFILE_OBJECT FileObject
,
443 IN PLARGE_INTEGER FileOffset
,
445 IN PDEVICE_OBJECT DeviceObject
)
447 DPRINT("VfatMdlWriteComplete\n");
449 UNREFERENCED_PARAMETER(FileObject
);
450 UNREFERENCED_PARAMETER(FileOffset
);
451 UNREFERENCED_PARAMETER(MdlChain
);
452 UNREFERENCED_PARAMETER(DeviceObject
);
457 static FAST_IO_READ_COMPRESSED VfatFastIoReadCompressed
;
462 VfatFastIoReadCompressed(
463 IN PFILE_OBJECT FileObject
,
464 IN PLARGE_INTEGER FileOffset
,
469 OUT PIO_STATUS_BLOCK IoStatus
,
470 OUT PCOMPRESSED_DATA_INFO CompressedDataInfo
,
471 IN ULONG CompressedDataInfoLength
,
472 IN PDEVICE_OBJECT DeviceObject
)
474 DPRINT("VfatFastIoReadCompressed\n");
476 UNREFERENCED_PARAMETER(FileObject
);
477 UNREFERENCED_PARAMETER(FileOffset
);
478 UNREFERENCED_PARAMETER(Length
);
479 UNREFERENCED_PARAMETER(LockKey
);
480 UNREFERENCED_PARAMETER(Buffer
);
481 UNREFERENCED_PARAMETER(MdlChain
);
482 UNREFERENCED_PARAMETER(IoStatus
);
483 UNREFERENCED_PARAMETER(CompressedDataInfo
);
484 UNREFERENCED_PARAMETER(CompressedDataInfoLength
);
485 UNREFERENCED_PARAMETER(DeviceObject
);
490 static FAST_IO_WRITE_COMPRESSED VfatFastIoWriteCompressed
;
495 VfatFastIoWriteCompressed(
496 IN PFILE_OBJECT FileObject
,
497 IN PLARGE_INTEGER FileOffset
,
502 OUT PIO_STATUS_BLOCK IoStatus
,
503 IN PCOMPRESSED_DATA_INFO CompressedDataInfo
,
504 IN ULONG CompressedDataInfoLength
,
505 IN PDEVICE_OBJECT DeviceObject
)
507 DPRINT("VfatFastIoWriteCompressed\n");
509 UNREFERENCED_PARAMETER(FileObject
);
510 UNREFERENCED_PARAMETER(FileOffset
);
511 UNREFERENCED_PARAMETER(Length
);
512 UNREFERENCED_PARAMETER(LockKey
);
513 UNREFERENCED_PARAMETER(Buffer
);
514 UNREFERENCED_PARAMETER(MdlChain
);
515 UNREFERENCED_PARAMETER(IoStatus
);
516 UNREFERENCED_PARAMETER(CompressedDataInfo
);
517 UNREFERENCED_PARAMETER(CompressedDataInfoLength
);
518 UNREFERENCED_PARAMETER(DeviceObject
);
523 static FAST_IO_MDL_READ_COMPLETE_COMPRESSED VfatMdlReadCompleteCompressed
;
528 VfatMdlReadCompleteCompressed(
529 IN PFILE_OBJECT FileObject
,
531 IN PDEVICE_OBJECT DeviceObject
)
533 DPRINT("VfatMdlReadCompleteCompressed\n");
535 UNREFERENCED_PARAMETER(FileObject
);
536 UNREFERENCED_PARAMETER(MdlChain
);
537 UNREFERENCED_PARAMETER(DeviceObject
);
542 static FAST_IO_MDL_WRITE_COMPLETE_COMPRESSED VfatMdlWriteCompleteCompressed
;
547 VfatMdlWriteCompleteCompressed(
548 IN PFILE_OBJECT FileObject
,
549 IN PLARGE_INTEGER FileOffset
,
551 IN PDEVICE_OBJECT DeviceObject
)
553 DPRINT("VfatMdlWriteCompleteCompressed\n");
555 UNREFERENCED_PARAMETER(FileObject
);
556 UNREFERENCED_PARAMETER(FileOffset
);
557 UNREFERENCED_PARAMETER(MdlChain
);
558 UNREFERENCED_PARAMETER(DeviceObject
);
563 static FAST_IO_QUERY_OPEN VfatFastIoQueryOpen
;
570 OUT PFILE_NETWORK_OPEN_INFORMATION NetworkInformation
,
571 IN PDEVICE_OBJECT DeviceObject
)
573 DPRINT("VfatFastIoQueryOpen\n");
575 UNREFERENCED_PARAMETER(Irp
);
576 UNREFERENCED_PARAMETER(NetworkInformation
);
577 UNREFERENCED_PARAMETER(DeviceObject
);
582 static FAST_IO_RELEASE_FOR_MOD_WRITE VfatReleaseForModWrite
;
587 VfatReleaseForModWrite(
588 IN PFILE_OBJECT FileObject
,
589 IN PERESOURCE ResourceToRelease
,
590 IN PDEVICE_OBJECT DeviceObject
)
592 DPRINT("VfatReleaseForModWrite\n");
594 UNREFERENCED_PARAMETER(FileObject
);
595 UNREFERENCED_PARAMETER(ResourceToRelease
);
596 UNREFERENCED_PARAMETER(DeviceObject
);
598 return STATUS_INVALID_DEVICE_REQUEST
;
601 static FAST_IO_ACQUIRE_FOR_CCFLUSH VfatAcquireForCcFlush
;
606 VfatAcquireForCcFlush(
607 IN PFILE_OBJECT FileObject
,
608 IN PDEVICE_OBJECT DeviceObject
)
610 PVFATFCB Fcb
= (PVFATFCB
)FileObject
->FsContext
;
612 DPRINT("VfatAcquireForCcFlush\n");
614 UNREFERENCED_PARAMETER(DeviceObject
);
616 /* Make sure it is not a volume lock */
617 ASSERT(!(Fcb
->Flags
& FCB_IS_VOLUME
));
619 /* Acquire the resource */
620 ExAcquireResourceExclusiveLite(&(Fcb
->MainResource
), TRUE
);
622 return STATUS_SUCCESS
;
625 static FAST_IO_RELEASE_FOR_CCFLUSH VfatReleaseForCcFlush
;
630 VfatReleaseForCcFlush(
631 IN PFILE_OBJECT FileObject
,
632 IN PDEVICE_OBJECT DeviceObject
)
634 PVFATFCB Fcb
= (PVFATFCB
)FileObject
->FsContext
;
636 DPRINT("VfatReleaseForCcFlush\n");
638 UNREFERENCED_PARAMETER(DeviceObject
);
640 /* Make sure it is not a volume lock */
641 ASSERT(!(Fcb
->Flags
& FCB_IS_VOLUME
));
643 /* Release the resource */
644 ExReleaseResourceLite(&(Fcb
->MainResource
));
646 return STATUS_SUCCESS
;
651 VfatAcquireForLazyWrite(
655 PVFATFCB Fcb
= (PVFATFCB
)Context
;
657 DPRINT("VfatAcquireForLazyWrite(): Fcb %p\n", Fcb
);
659 if (!ExAcquireResourceExclusiveLite(&(Fcb
->MainResource
), Wait
))
661 DPRINT("VfatAcquireForLazyWrite(): ExReleaseResourceLite failed.\n");
669 VfatReleaseFromLazyWrite(
672 PVFATFCB Fcb
= (PVFATFCB
)Context
;
674 DPRINT("VfatReleaseFromLazyWrite(): Fcb %p\n", Fcb
);
676 ExReleaseResourceLite(&(Fcb
->MainResource
));
681 VfatAcquireForReadAhead(
685 PVFATFCB Fcb
= (PVFATFCB
)Context
;
687 DPRINT("VfatAcquireForReadAhead(): Fcb %p\n", Fcb
);
689 if (!ExAcquireResourceExclusiveLite(&(Fcb
->MainResource
), Wait
))
691 DPRINT("VfatAcquireForReadAhead(): ExReleaseResourceLite failed.\n");
699 VfatReleaseFromReadAhead(
702 PVFATFCB Fcb
= (PVFATFCB
)Context
;
704 DPRINT("VfatReleaseFromReadAhead(): Fcb %p\n", Fcb
);
706 ExReleaseResourceLite(&(Fcb
->MainResource
));
710 VfatInitFastIoRoutines(
711 PFAST_IO_DISPATCH FastIoDispatch
)
713 FastIoDispatch
->SizeOfFastIoDispatch
= sizeof(FAST_IO_DISPATCH
);
714 FastIoDispatch
->FastIoCheckIfPossible
= VfatFastIoCheckIfPossible
;
715 FastIoDispatch
->FastIoRead
= VfatFastIoRead
;
716 FastIoDispatch
->FastIoWrite
= VfatFastIoWrite
;
717 FastIoDispatch
->FastIoQueryBasicInfo
= VfatFastIoQueryBasicInfo
;
718 FastIoDispatch
->FastIoQueryStandardInfo
= VfatFastIoQueryStandardInfo
;
719 FastIoDispatch
->FastIoLock
= VfatFastIoLock
;
720 FastIoDispatch
->FastIoUnlockSingle
= VfatFastIoUnlockSingle
;
721 FastIoDispatch
->FastIoUnlockAll
= VfatFastIoUnlockAll
;
722 FastIoDispatch
->FastIoUnlockAllByKey
= VfatFastIoUnlockAllByKey
;
723 FastIoDispatch
->FastIoDeviceControl
= VfatFastIoDeviceControl
;
724 FastIoDispatch
->AcquireFileForNtCreateSection
= VfatAcquireFileForNtCreateSection
;
725 FastIoDispatch
->ReleaseFileForNtCreateSection
= VfatReleaseFileForNtCreateSection
;
726 FastIoDispatch
->FastIoDetachDevice
= VfatFastIoDetachDevice
;
727 FastIoDispatch
->FastIoQueryNetworkOpenInfo
= VfatFastIoQueryNetworkOpenInfo
;
728 FastIoDispatch
->MdlRead
= VfatMdlRead
;
729 FastIoDispatch
->MdlReadComplete
= VfatMdlReadComplete
;
730 FastIoDispatch
->PrepareMdlWrite
= VfatPrepareMdlWrite
;
731 FastIoDispatch
->MdlWriteComplete
= VfatMdlWriteComplete
;
732 FastIoDispatch
->FastIoReadCompressed
= VfatFastIoReadCompressed
;
733 FastIoDispatch
->FastIoWriteCompressed
= VfatFastIoWriteCompressed
;
734 FastIoDispatch
->MdlReadCompleteCompressed
= VfatMdlReadCompleteCompressed
;
735 FastIoDispatch
->MdlWriteCompleteCompressed
= VfatMdlWriteCompleteCompressed
;
736 FastIoDispatch
->FastIoQueryOpen
= VfatFastIoQueryOpen
;
737 FastIoDispatch
->AcquireForModWrite
= VfatAcquireForModWrite
;
738 FastIoDispatch
->ReleaseForModWrite
= VfatReleaseForModWrite
;
739 FastIoDispatch
->AcquireForCcFlush
= VfatAcquireForCcFlush
;
740 FastIoDispatch
->ReleaseForCcFlush
= VfatReleaseForCcFlush
;