55 Commits

Author SHA1 Message Date
Bill Zissimopoulos
ca832988ed
dll,sys: fix issue #369
The original WinFsp protocol for shutting down a file system was to issue
an FSP_FSCTL_STOP control code to the fsctl device. This would set the IOQ
to the "stopped" state and would also cancel all active IRP's. Cancelation
of IRP's would sometimes free buffers that may have still been in use by
the user mode file system threads; hence access violation.

To fix this problem a new control code FSP_FSCTL_STOP0 is introduced. The
new file system shutdown protocol is backwards compatible with the original
one and works as follows:

- First the file system process issues an FSP_FSCTL_STOP0 control code which
sets the IOQ to the "stopped" state but does NOT cancel IRP's.

- Then the file system process waits for its dispatcher threads to complete
(see FspFileSystemStopDispatcher).

- Finally the file system process issues an FSP_FSCTL_STOP control code
which stops the (already stopped) IOQ and cancels all IRP's.
2021-05-18 12:30:17 -07:00
Bill Zissimopoulos
0af0bfbe7c
sys: FspFsvolClose: convert CLOSE requests to synchronous when above the IOQ watermark 2021-01-25 12:45:33 -08:00
Bill Zissimopoulos
aedf01a384
update source copyright for 2020 2020-01-02 17:50:40 -08:00
Bill Zissimopoulos
781deff06f sys: default TransactTimeout changes 2019-06-11 17:53:34 -07:00
Bill Zissimopoulos
d2de5e996c
update source copyright for 2019 2019-02-28 10:39:31 -08:00
Bill Zissimopoulos
75ae8daf8f
update commercial disclaimer 2018-08-21 18:09:33 -07:00
Bill Zissimopoulos
9bd9cf4fbd
update source copyright notices for 2018 2018-01-03 15:29:38 -08:00
Bill Zissimopoulos
a57325e8af update source copyright notices for 2017 2017-01-05 13:56:18 -08:00
Bill Zissimopoulos
a1af8ff921 sys: Queued Events and use fin FSP_IOQ 2016-12-03 19:41:26 -08:00
Bill Zissimopoulos
bd952253fb cosmetic fix 2016-10-11 11:39:17 -07:00
Bill Zissimopoulos
c7780cf7fa license: switch to GPLv3 from AGPLv3 2016-10-10 21:33:27 -07:00
Bill Zissimopoulos
380ec074ca sys: ioq: clarify comment 2016-07-23 18:43:02 -07:00
Bill Zissimopoulos
968de4689c inc,src,tst: add AGPLv3 notices 2016-04-25 14:29:05 -07:00
Bill Zissimopoulos
7499c964b9 sys: FspVolumeTransact: upper bound on loop guarantees forward progress! 2016-04-12 15:42:06 -07:00
Bill Zissimopoulos
7ff99da000 update copyright notices for 2016 2016-03-17 14:59:46 -07:00
Bill Zissimopoulos
2c9cd46e4b sys: ioq: FspIoqRemoveExpired: add InterruptTime parameter 2016-02-17 17:01:07 -08:00
Bill Zissimopoulos
8164ebf370 sys: ioq: PendingIrpEvent is now a SynchronizationEvent, instead of a NotificationEvent 2016-02-16 17:44:32 -08:00
Bill Zissimopoulos
440f66a786 sys: ioq: use FsRtlCancellableWaitForSingleObject 2016-02-14 14:31:48 -08:00
Bill Zissimopoulos
acf1b453fc sys: FspIopRetryCompleteIrp() and related changes 2016-01-27 13:41:37 -08:00
Bill Zissimopoulos
eda129ae81 sys: FSP_IOCMPL_DISPATCH now returns NTSTATUS 2016-01-27 11:59:52 -08:00
Bill Zissimopoulos
af5745d5fc sys: FspIopDispatchRetryComplete() 2016-01-26 19:52:36 -08:00
Bill Zissimopoulos
ffbe13e6d9 sys: ioq: FspIoqRetryCompleteIrp(), FspIoqNextCompleteIrp() 2016-01-26 17:13:34 -08:00
Bill Zissimopoulos
0de4ba4f1b sys: ioq: FspIoqRetryCompleteIrp(), FspIoqNextCompletedIrp() 2016-01-26 17:01:26 -08:00
Bill Zissimopoulos
69fd1ebd6c sys: store FileInfo in FileNode's 2016-01-23 14:01:53 -08:00
Bill Zissimopoulos
0bedee7d5f sys: introduce private NTSTATUS codes FSP_STATUS_POST_IOQ* and ensure that Irp is not touched after STATUS_PENDING 2016-01-17 14:12:05 -08:00
Bill Zissimopoulos
e885905c77 sys: ioq: IRP can no longer be canceled once they enter the Processing state 2016-01-11 17:14:06 -08:00
Bill Zissimopoulos
9b93df1788 sys: FspIoqNextPendingIrp: add BoundaryIrp parameter 2016-01-05 17:10:44 -08:00
Bill Zissimopoulos
bd5b1e59c1 sys: FspIoqPostIrpEx 2016-01-05 15:50:37 -08:00
Bill Zissimopoulos
3f7102a2ed sys: ioq 2015-12-28 16:20:35 -08:00
Bill Zissimopoulos
72fdea5e78 sys: ioq 2015-12-28 11:17:37 -08:00
Bill Zissimopoulos
3d381145e3 sys: ioq 2015-12-28 09:51:55 -08:00
Bill Zissimopoulos
e91255cef3 sys: Ioq bucket count 2015-12-27 22:23:07 -08:00
Bill Zissimopoulos
6d2a56cea0 Major refactoring: testing 2015-12-27 22:08:56 -08:00
Bill Zissimopoulos
5fb9953a3a sys: ioq: now includes a dictionary for fast translation of IrpHint to Irp 2015-12-27 17:49:17 -08:00
Bill Zissimopoulos
6f8e169bc4 sys: ioq: implement IRP capacity 2015-12-23 11:14:40 -08:00
Bill Zissimopoulos
e53ba61f84 sys: ioq: change IRP timeout handling 2015-12-22 21:58:39 -08:00
Bill Zissimopoulos
7197501c9a Major refactoring: WIP 2015-12-20 10:57:45 -08:00
Bill Zissimopoulos
460c4e0c55 sys: implement FsvrtDeviceExpirationRoutine and supporting infra 2015-12-16 16:11:29 -08:00
Bill Zissimopoulos
9e82247366 sys: ioq: now supports IRP expiration 2015-12-16 10:43:33 -08:00
Bill Zissimopoulos
aee12e1c5f sys: FspFsvrtTransact: now has timeout 2015-12-14 12:36:40 -08:00
Bill Zissimopoulos
c3c690c46b sys: ioq: couple of fixes 2015-12-08 14:00:13 -08:00
Bill Zissimopoulos
18025573a3 sys: rename FspIopCompleteRequest to FspIopCompleteIrp 2015-12-06 18:06:19 -08:00
Bill Zissimopoulos
2668e05748 sys: WIP 2015-11-28 13:17:46 -08:00
Bill Zissimopoulos
adc662b6c3 sys: static analysis fixes 2015-11-28 00:39:22 -08:00
Bill Zissimopoulos
3bc7f44dd9 sys: static analysis fixes 2015-11-28 00:31:26 -08:00
Bill Zissimopoulos
6ba60198ab sys: FspIoqStop() 2015-11-25 12:16:31 -08:00
Bill Zissimopoulos
0f0b1f2c46 sys: ioq: event becomes signaled when ioq is disabled 2015-11-24 20:21:01 -08:00
Bill Zissimopoulos
cac74f3b63 sys: fsctl 2015-11-24 20:10:29 -08:00
Bill Zissimopoulos
25f6bd52a7 sys: FspTransactThread 2015-11-24 15:59:43 -08:00
Bill Zissimopoulos
be204b4118 sys: ioq 2015-11-24 14:11:49 -08:00