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)
12 static FAST_IO_CHECK_IF_POSSIBLE VfatFastIoCheckIfPossible
;
17 VfatFastIoCheckIfPossible(
18 IN PFILE_OBJECT FileObject
,
19 IN PLARGE_INTEGER FileOffset
,
23 IN BOOLEAN CheckForReadOperation
,
24 OUT PIO_STATUS_BLOCK IoStatus
,
25 IN PDEVICE_OBJECT DeviceObject
)
27 /* Prevent all Fast I/O requests */
28 DPRINT("VfatFastIoCheckIfPossible(): returning FALSE.\n");
30 UNREFERENCED_PARAMETER(FileObject
);
31 UNREFERENCED_PARAMETER(FileOffset
);
32 UNREFERENCED_PARAMETER(Length
);
33 UNREFERENCED_PARAMETER(Wait
);
34 UNREFERENCED_PARAMETER(LockKey
);
35 UNREFERENCED_PARAMETER(CheckForReadOperation
);
36 UNREFERENCED_PARAMETER(IoStatus
);
37 UNREFERENCED_PARAMETER(DeviceObject
);
42 static FAST_IO_READ VfatFastIoRead
;
48 IN PFILE_OBJECT FileObject
,
49 IN PLARGE_INTEGER FileOffset
,
54 OUT PIO_STATUS_BLOCK IoStatus
,
55 IN PDEVICE_OBJECT DeviceObject
)
57 DPRINT("VfatFastIoRead()\n");
59 UNREFERENCED_PARAMETER(FileObject
);
60 UNREFERENCED_PARAMETER(FileOffset
);
61 UNREFERENCED_PARAMETER(Length
);
62 UNREFERENCED_PARAMETER(Wait
);
63 UNREFERENCED_PARAMETER(LockKey
);
64 UNREFERENCED_PARAMETER(Buffer
);
65 UNREFERENCED_PARAMETER(IoStatus
);
66 UNREFERENCED_PARAMETER(DeviceObject
);
71 static FAST_IO_WRITE VfatFastIoWrite
;
77 IN PFILE_OBJECT FileObject
,
78 IN PLARGE_INTEGER FileOffset
,
83 OUT PIO_STATUS_BLOCK IoStatus
,
84 IN PDEVICE_OBJECT DeviceObject
)
86 DPRINT("VfatFastIoWrite()\n");
88 UNREFERENCED_PARAMETER(FileObject
);
89 UNREFERENCED_PARAMETER(FileOffset
);
90 UNREFERENCED_PARAMETER(Length
);
91 UNREFERENCED_PARAMETER(Wait
);
92 UNREFERENCED_PARAMETER(LockKey
);
93 UNREFERENCED_PARAMETER(Buffer
);
94 UNREFERENCED_PARAMETER(IoStatus
);
95 UNREFERENCED_PARAMETER(DeviceObject
);
100 static FAST_IO_QUERY_BASIC_INFO VfatFastIoQueryBasicInfo
;
105 VfatFastIoQueryBasicInfo(
106 IN PFILE_OBJECT FileObject
,
108 OUT PFILE_BASIC_INFORMATION Buffer
,
109 OUT PIO_STATUS_BLOCK IoStatus
,
110 IN PDEVICE_OBJECT DeviceObject
)
112 DPRINT("VfatFastIoQueryBasicInfo()\n");
114 UNREFERENCED_PARAMETER(FileObject
);
115 UNREFERENCED_PARAMETER(Wait
);
116 UNREFERENCED_PARAMETER(Buffer
);
117 UNREFERENCED_PARAMETER(IoStatus
);
118 UNREFERENCED_PARAMETER(DeviceObject
);
123 static FAST_IO_QUERY_STANDARD_INFO VfatFastIoQueryStandardInfo
;
128 VfatFastIoQueryStandardInfo(
129 IN PFILE_OBJECT FileObject
,
131 OUT PFILE_STANDARD_INFORMATION Buffer
,
132 OUT PIO_STATUS_BLOCK IoStatus
,
133 IN PDEVICE_OBJECT DeviceObject
)
135 DPRINT("VfatFastIoQueryStandardInfo\n");
137 UNREFERENCED_PARAMETER(FileObject
);
138 UNREFERENCED_PARAMETER(Wait
);
139 UNREFERENCED_PARAMETER(Buffer
);
140 UNREFERENCED_PARAMETER(IoStatus
);
141 UNREFERENCED_PARAMETER(DeviceObject
);
146 static FAST_IO_LOCK VfatFastIoLock
;
152 IN PFILE_OBJECT FileObject
,
153 IN PLARGE_INTEGER FileOffset
,
154 IN PLARGE_INTEGER Length
,
157 BOOLEAN FailImmediately
,
158 BOOLEAN ExclusiveLock
,
159 OUT PIO_STATUS_BLOCK IoStatus
,
160 IN PDEVICE_OBJECT DeviceObject
)
162 DPRINT("VfatFastIoLock\n");
164 UNREFERENCED_PARAMETER(FileObject
);
165 UNREFERENCED_PARAMETER(FileOffset
);
166 UNREFERENCED_PARAMETER(Length
);
167 UNREFERENCED_PARAMETER(ProcessId
);
168 UNREFERENCED_PARAMETER(Key
);
169 UNREFERENCED_PARAMETER(FailImmediately
);
170 UNREFERENCED_PARAMETER(ExclusiveLock
);
171 UNREFERENCED_PARAMETER(IoStatus
);
172 UNREFERENCED_PARAMETER(DeviceObject
);
177 static FAST_IO_UNLOCK_SINGLE VfatFastIoUnlockSingle
;
182 VfatFastIoUnlockSingle(
183 IN PFILE_OBJECT FileObject
,
184 IN PLARGE_INTEGER FileOffset
,
185 IN PLARGE_INTEGER Length
,
188 OUT PIO_STATUS_BLOCK IoStatus
,
189 IN PDEVICE_OBJECT DeviceObject
)
191 DPRINT("VfatFastIoUnlockSingle\n");
193 UNREFERENCED_PARAMETER(FileObject
);
194 UNREFERENCED_PARAMETER(FileOffset
);
195 UNREFERENCED_PARAMETER(Length
);
196 UNREFERENCED_PARAMETER(ProcessId
);
197 UNREFERENCED_PARAMETER(Key
);
198 UNREFERENCED_PARAMETER(IoStatus
);
199 UNREFERENCED_PARAMETER(DeviceObject
);
204 static FAST_IO_UNLOCK_ALL VfatFastIoUnlockAll
;
210 IN PFILE_OBJECT FileObject
,
212 OUT PIO_STATUS_BLOCK IoStatus
,
213 IN PDEVICE_OBJECT DeviceObject
)
215 DPRINT("VfatFastIoUnlockAll\n");
217 UNREFERENCED_PARAMETER(FileObject
);
218 UNREFERENCED_PARAMETER(ProcessId
);
219 UNREFERENCED_PARAMETER(IoStatus
);
220 UNREFERENCED_PARAMETER(DeviceObject
);
225 static FAST_IO_UNLOCK_ALL_BY_KEY VfatFastIoUnlockAllByKey
;
230 VfatFastIoUnlockAllByKey(
231 IN PFILE_OBJECT FileObject
,
234 OUT PIO_STATUS_BLOCK IoStatus
,
235 IN PDEVICE_OBJECT DeviceObject
)
237 DPRINT("VfatFastIoUnlockAllByKey\n");
239 UNREFERENCED_PARAMETER(FileObject
);
240 UNREFERENCED_PARAMETER(ProcessId
);
241 UNREFERENCED_PARAMETER(Key
);
242 UNREFERENCED_PARAMETER(IoStatus
);
243 UNREFERENCED_PARAMETER(DeviceObject
);
248 static FAST_IO_DEVICE_CONTROL VfatFastIoDeviceControl
;
253 VfatFastIoDeviceControl(
254 IN PFILE_OBJECT FileObject
,
256 IN PVOID InputBuffer OPTIONAL
,
257 IN ULONG InputBufferLength
,
258 OUT PVOID OutputBuffer OPTIONAL
,
259 IN ULONG OutputBufferLength
,
260 IN ULONG IoControlCode
,
261 OUT PIO_STATUS_BLOCK IoStatus
,
262 IN PDEVICE_OBJECT DeviceObject
)
264 DPRINT("VfatFastIoDeviceControl\n");
266 UNREFERENCED_PARAMETER(FileObject
);
267 UNREFERENCED_PARAMETER(Wait
);
268 UNREFERENCED_PARAMETER(InputBuffer
);
269 UNREFERENCED_PARAMETER(InputBufferLength
);
270 UNREFERENCED_PARAMETER(OutputBuffer
);
271 UNREFERENCED_PARAMETER(OutputBufferLength
);
272 UNREFERENCED_PARAMETER(IoControlCode
);
273 UNREFERENCED_PARAMETER(IoStatus
);
274 UNREFERENCED_PARAMETER(DeviceObject
);
279 static FAST_IO_ACQUIRE_FILE VfatAcquireFileForNtCreateSection
;
284 VfatAcquireFileForNtCreateSection(
285 IN PFILE_OBJECT FileObject
)
287 DPRINT("VfatAcquireFileForNtCreateSection\n");
288 UNREFERENCED_PARAMETER(FileObject
);
291 static FAST_IO_RELEASE_FILE VfatReleaseFileForNtCreateSection
;
296 VfatReleaseFileForNtCreateSection(
297 IN PFILE_OBJECT FileObject
)
299 DPRINT("VfatReleaseFileForNtCreateSection\n");
300 UNREFERENCED_PARAMETER(FileObject
);
303 static FAST_IO_DETACH_DEVICE VfatFastIoDetachDevice
;
308 VfatFastIoDetachDevice(
309 IN PDEVICE_OBJECT SourceDevice
,
310 IN PDEVICE_OBJECT TargetDevice
)
312 DPRINT("VfatFastIoDetachDevice\n");
313 UNREFERENCED_PARAMETER(SourceDevice
);
314 UNREFERENCED_PARAMETER(TargetDevice
);
317 static FAST_IO_QUERY_NETWORK_OPEN_INFO VfatFastIoQueryNetworkOpenInfo
;
322 VfatFastIoQueryNetworkOpenInfo(
323 IN PFILE_OBJECT FileObject
,
325 OUT PFILE_NETWORK_OPEN_INFORMATION Buffer
,
326 OUT PIO_STATUS_BLOCK IoStatus
,
327 IN PDEVICE_OBJECT DeviceObject
)
329 DPRINT("VfatFastIoQueryNetworkOpenInfo\n");
331 UNREFERENCED_PARAMETER(FileObject
);
332 UNREFERENCED_PARAMETER(Wait
);
333 UNREFERENCED_PARAMETER(Buffer
);
334 UNREFERENCED_PARAMETER(IoStatus
);
335 UNREFERENCED_PARAMETER(DeviceObject
);
340 static FAST_IO_ACQUIRE_FOR_MOD_WRITE VfatAcquireForModWrite
;
345 VfatAcquireForModWrite(
346 IN PFILE_OBJECT FileObject
,
347 IN PLARGE_INTEGER EndingOffset
,
348 OUT PERESOURCE
* ResourceToRelease
,
349 IN PDEVICE_OBJECT DeviceObject
)
351 DPRINT("VfatAcquireForModWrite\n");
353 UNREFERENCED_PARAMETER(FileObject
);
354 UNREFERENCED_PARAMETER(EndingOffset
);
355 UNREFERENCED_PARAMETER(ResourceToRelease
);
356 UNREFERENCED_PARAMETER(DeviceObject
);
358 return STATUS_INVALID_DEVICE_REQUEST
;
361 static FAST_IO_MDL_READ VfatMdlRead
;
367 IN PFILE_OBJECT FileObject
,
368 IN PLARGE_INTEGER FileOffset
,
372 OUT PIO_STATUS_BLOCK IoStatus
,
373 IN PDEVICE_OBJECT DeviceObject
)
375 DPRINT("VfatMdlRead\n");
377 UNREFERENCED_PARAMETER(FileObject
);
378 UNREFERENCED_PARAMETER(FileOffset
);
379 UNREFERENCED_PARAMETER(Length
);
380 UNREFERENCED_PARAMETER(LockKey
);
381 UNREFERENCED_PARAMETER(MdlChain
);
382 UNREFERENCED_PARAMETER(IoStatus
);
383 UNREFERENCED_PARAMETER(DeviceObject
);
388 static FAST_IO_MDL_READ_COMPLETE VfatMdlReadComplete
;
394 IN PFILE_OBJECT FileObject
,
396 IN PDEVICE_OBJECT DeviceObject
)
398 DPRINT("VfatMdlReadComplete\n");
400 UNREFERENCED_PARAMETER(FileObject
);
401 UNREFERENCED_PARAMETER(MdlChain
);
402 UNREFERENCED_PARAMETER(DeviceObject
);
407 static FAST_IO_PREPARE_MDL_WRITE VfatPrepareMdlWrite
;
413 IN PFILE_OBJECT FileObject
,
414 IN PLARGE_INTEGER FileOffset
,
418 OUT PIO_STATUS_BLOCK IoStatus
,
419 IN PDEVICE_OBJECT DeviceObject
)
421 DPRINT("VfatPrepareMdlWrite\n");
423 UNREFERENCED_PARAMETER(FileObject
);
424 UNREFERENCED_PARAMETER(FileOffset
);
425 UNREFERENCED_PARAMETER(Length
);
426 UNREFERENCED_PARAMETER(LockKey
);
427 UNREFERENCED_PARAMETER(MdlChain
);
428 UNREFERENCED_PARAMETER(IoStatus
);
429 UNREFERENCED_PARAMETER(DeviceObject
);
434 static FAST_IO_MDL_WRITE_COMPLETE VfatMdlWriteComplete
;
439 VfatMdlWriteComplete(
440 IN PFILE_OBJECT FileObject
,
441 IN PLARGE_INTEGER FileOffset
,
443 IN PDEVICE_OBJECT DeviceObject
)
445 DPRINT("VfatMdlWriteComplete\n");
447 UNREFERENCED_PARAMETER(FileObject
);
448 UNREFERENCED_PARAMETER(FileOffset
);
449 UNREFERENCED_PARAMETER(MdlChain
);
450 UNREFERENCED_PARAMETER(DeviceObject
);
455 static FAST_IO_READ_COMPRESSED VfatFastIoReadCompressed
;
460 VfatFastIoReadCompressed(
461 IN PFILE_OBJECT FileObject
,
462 IN PLARGE_INTEGER FileOffset
,
467 OUT PIO_STATUS_BLOCK IoStatus
,
468 OUT PCOMPRESSED_DATA_INFO CompressedDataInfo
,
469 IN ULONG CompressedDataInfoLength
,
470 IN PDEVICE_OBJECT DeviceObject
)
472 DPRINT("VfatFastIoReadCompressed\n");
474 UNREFERENCED_PARAMETER(FileObject
);
475 UNREFERENCED_PARAMETER(FileOffset
);
476 UNREFERENCED_PARAMETER(Length
);
477 UNREFERENCED_PARAMETER(LockKey
);
478 UNREFERENCED_PARAMETER(Buffer
);
479 UNREFERENCED_PARAMETER(MdlChain
);
480 UNREFERENCED_PARAMETER(IoStatus
);
481 UNREFERENCED_PARAMETER(CompressedDataInfo
);
482 UNREFERENCED_PARAMETER(CompressedDataInfoLength
);
483 UNREFERENCED_PARAMETER(DeviceObject
);
488 static FAST_IO_WRITE_COMPRESSED VfatFastIoWriteCompressed
;
493 VfatFastIoWriteCompressed(
494 IN PFILE_OBJECT FileObject
,
495 IN PLARGE_INTEGER FileOffset
,
500 OUT PIO_STATUS_BLOCK IoStatus
,
501 IN PCOMPRESSED_DATA_INFO CompressedDataInfo
,
502 IN ULONG CompressedDataInfoLength
,
503 IN PDEVICE_OBJECT DeviceObject
)
505 DPRINT("VfatFastIoWriteCompressed\n");
507 UNREFERENCED_PARAMETER(FileObject
);
508 UNREFERENCED_PARAMETER(FileOffset
);
509 UNREFERENCED_PARAMETER(Length
);
510 UNREFERENCED_PARAMETER(LockKey
);
511 UNREFERENCED_PARAMETER(Buffer
);
512 UNREFERENCED_PARAMETER(MdlChain
);
513 UNREFERENCED_PARAMETER(IoStatus
);
514 UNREFERENCED_PARAMETER(CompressedDataInfo
);
515 UNREFERENCED_PARAMETER(CompressedDataInfoLength
);
516 UNREFERENCED_PARAMETER(DeviceObject
);
521 static FAST_IO_MDL_READ_COMPLETE_COMPRESSED VfatMdlReadCompleteCompressed
;
526 VfatMdlReadCompleteCompressed(
527 IN PFILE_OBJECT FileObject
,
529 IN PDEVICE_OBJECT DeviceObject
)
531 DPRINT("VfatMdlReadCompleteCompressed\n");
533 UNREFERENCED_PARAMETER(FileObject
);
534 UNREFERENCED_PARAMETER(MdlChain
);
535 UNREFERENCED_PARAMETER(DeviceObject
);
540 static FAST_IO_MDL_WRITE_COMPLETE_COMPRESSED VfatMdlWriteCompleteCompressed
;
545 VfatMdlWriteCompleteCompressed(
546 IN PFILE_OBJECT FileObject
,
547 IN PLARGE_INTEGER FileOffset
,
549 IN PDEVICE_OBJECT DeviceObject
)
551 DPRINT("VfatMdlWriteCompleteCompressed\n");
553 UNREFERENCED_PARAMETER(FileObject
);
554 UNREFERENCED_PARAMETER(FileOffset
);
555 UNREFERENCED_PARAMETER(MdlChain
);
556 UNREFERENCED_PARAMETER(DeviceObject
);
561 static FAST_IO_QUERY_OPEN VfatFastIoQueryOpen
;
568 OUT PFILE_NETWORK_OPEN_INFORMATION NetworkInformation
,
569 IN PDEVICE_OBJECT DeviceObject
)
571 DPRINT("VfatFastIoQueryOpen\n");
573 UNREFERENCED_PARAMETER(Irp
);
574 UNREFERENCED_PARAMETER(NetworkInformation
);
575 UNREFERENCED_PARAMETER(DeviceObject
);
580 static FAST_IO_RELEASE_FOR_MOD_WRITE VfatReleaseForModWrite
;
585 VfatReleaseForModWrite(
586 IN PFILE_OBJECT FileObject
,
587 IN PERESOURCE ResourceToRelease
,
588 IN PDEVICE_OBJECT DeviceObject
)
590 DPRINT("VfatReleaseForModWrite\n");
592 UNREFERENCED_PARAMETER(FileObject
);
593 UNREFERENCED_PARAMETER(ResourceToRelease
);
594 UNREFERENCED_PARAMETER(DeviceObject
);
596 return STATUS_INVALID_DEVICE_REQUEST
;
599 static FAST_IO_ACQUIRE_FOR_CCFLUSH VfatAcquireForCcFlush
;
604 VfatAcquireForCcFlush(
605 IN PFILE_OBJECT FileObject
,
606 IN PDEVICE_OBJECT DeviceObject
)
608 PVFATFCB Fcb
= (PVFATFCB
)FileObject
->FsContext
;
610 DPRINT("VfatAcquireForCcFlush\n");
612 UNREFERENCED_PARAMETER(DeviceObject
);
614 /* Make sure it is not a volume lock */
615 ASSERT(!(Fcb
->Flags
& FCB_IS_VOLUME
));
617 /* Acquire the resource */
618 ExAcquireResourceExclusiveLite(&(Fcb
->MainResource
), TRUE
);
620 return STATUS_SUCCESS
;
623 static FAST_IO_RELEASE_FOR_CCFLUSH VfatReleaseForCcFlush
;
628 VfatReleaseForCcFlush(
629 IN PFILE_OBJECT FileObject
,
630 IN PDEVICE_OBJECT DeviceObject
)
632 PVFATFCB Fcb
= (PVFATFCB
)FileObject
->FsContext
;
634 DPRINT("VfatReleaseForCcFlush\n");
636 UNREFERENCED_PARAMETER(DeviceObject
);
638 /* Make sure it is not a volume lock */
639 ASSERT(!(Fcb
->Flags
& FCB_IS_VOLUME
));
641 /* Release the resource */
642 ExReleaseResourceLite(&(Fcb
->MainResource
));
644 return STATUS_SUCCESS
;
649 VfatAcquireForLazyWrite(
653 PVFATFCB Fcb
= (PVFATFCB
)Context
;
655 DPRINT("VfatAcquireForLazyWrite(): Fcb %p\n", Fcb
);
657 if (!ExAcquireResourceExclusiveLite(&(Fcb
->MainResource
), Wait
))
659 DPRINT("VfatAcquireForLazyWrite(): ExReleaseResourceLite failed.\n");
667 VfatReleaseFromLazyWrite(
670 PVFATFCB Fcb
= (PVFATFCB
)Context
;
672 DPRINT("VfatReleaseFromLazyWrite(): Fcb %p\n", Fcb
);
674 ExReleaseResourceLite(&(Fcb
->MainResource
));
679 VfatAcquireForReadAhead(
683 PVFATFCB Fcb
= (PVFATFCB
)Context
;
685 DPRINT("VfatAcquireForReadAhead(): Fcb %p\n", Fcb
);
687 if (!ExAcquireResourceExclusiveLite(&(Fcb
->MainResource
), Wait
))
689 DPRINT("VfatAcquireForReadAhead(): ExReleaseResourceLite failed.\n");
697 VfatReleaseFromReadAhead(
700 PVFATFCB Fcb
= (PVFATFCB
)Context
;
702 DPRINT("VfatReleaseFromReadAhead(): Fcb %p\n", Fcb
);
704 ExReleaseResourceLite(&(Fcb
->MainResource
));
708 VfatInitFastIoRoutines(
709 PFAST_IO_DISPATCH FastIoDispatch
)
711 FastIoDispatch
->SizeOfFastIoDispatch
= sizeof(FAST_IO_DISPATCH
);
712 FastIoDispatch
->FastIoCheckIfPossible
= VfatFastIoCheckIfPossible
;
713 FastIoDispatch
->FastIoRead
= VfatFastIoRead
;
714 FastIoDispatch
->FastIoWrite
= VfatFastIoWrite
;
715 FastIoDispatch
->FastIoQueryBasicInfo
= VfatFastIoQueryBasicInfo
;
716 FastIoDispatch
->FastIoQueryStandardInfo
= VfatFastIoQueryStandardInfo
;
717 FastIoDispatch
->FastIoLock
= VfatFastIoLock
;
718 FastIoDispatch
->FastIoUnlockSingle
= VfatFastIoUnlockSingle
;
719 FastIoDispatch
->FastIoUnlockAll
= VfatFastIoUnlockAll
;
720 FastIoDispatch
->FastIoUnlockAllByKey
= VfatFastIoUnlockAllByKey
;
721 FastIoDispatch
->FastIoDeviceControl
= VfatFastIoDeviceControl
;
722 FastIoDispatch
->AcquireFileForNtCreateSection
= VfatAcquireFileForNtCreateSection
;
723 FastIoDispatch
->ReleaseFileForNtCreateSection
= VfatReleaseFileForNtCreateSection
;
724 FastIoDispatch
->FastIoDetachDevice
= VfatFastIoDetachDevice
;
725 FastIoDispatch
->FastIoQueryNetworkOpenInfo
= VfatFastIoQueryNetworkOpenInfo
;
726 FastIoDispatch
->MdlRead
= VfatMdlRead
;
727 FastIoDispatch
->MdlReadComplete
= VfatMdlReadComplete
;
728 FastIoDispatch
->PrepareMdlWrite
= VfatPrepareMdlWrite
;
729 FastIoDispatch
->MdlWriteComplete
= VfatMdlWriteComplete
;
730 FastIoDispatch
->FastIoReadCompressed
= VfatFastIoReadCompressed
;
731 FastIoDispatch
->FastIoWriteCompressed
= VfatFastIoWriteCompressed
;
732 FastIoDispatch
->MdlReadCompleteCompressed
= VfatMdlReadCompleteCompressed
;
733 FastIoDispatch
->MdlWriteCompleteCompressed
= VfatMdlWriteCompleteCompressed
;
734 FastIoDispatch
->FastIoQueryOpen
= VfatFastIoQueryOpen
;
735 FastIoDispatch
->AcquireForModWrite
= VfatAcquireForModWrite
;
736 FastIoDispatch
->ReleaseForModWrite
= VfatReleaseForModWrite
;
737 FastIoDispatch
->AcquireForCcFlush
= VfatAcquireForCcFlush
;
738 FastIoDispatch
->ReleaseForCcFlush
= VfatReleaseForCcFlush
;