414 Commits

Author SHA1 Message Date
Bill Zissimopoulos
c208e0ecbd
sys: cache FileDesc->DispositionStatus
DeleteFileW and RemoveDirectoryW in recent versions of Windows 10 have
been changed to perform a FileDispositionInformationEx with POSIX
semantics and if that fails to retry with FileDispositionInformation.
Unfortunately this is done even for legitimate error codes such as
STATUS_DIRECTORY_NOT_EMPTY.

This means that user mode file systems have to do unnecessary CanDelete
checks even when they support FileDispositionInformationEx. The extra
check incurs extra context switches, and in some cases it may also be
costly to compute (e.g. FUSE).

We optimize this away by storing the status of the last CanDelete check
in the FileDesc and then continue returning the same status code for
all checks for the same FileDesc.
2021-12-04 12:36:12 +00:00
Bill Zissimopoulos
91211f6ccb
sys: reimplement POSIX unlink 2021-11-24 16:03:31 +00:00
Bill Zissimopoulos
bb3e92df6c
sys, dll: implement POSIX semantics for Rename 2021-10-21 15:39:25 +01:00
Bill Zissimopoulos
19823d84de
sys,dll,inc: implement new Delete design and POSIX semantics 2021-10-19 15:23:15 +01:00
Bill Zissimopoulos
6e3a8f70b2
update source copyright to 2021 2021-05-21 15:57:05 -07:00
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
33c6e7ee61
sys: fix issue #364 2021-04-16 16:43:34 -07:00
Bill Zissimopoulos
023c925fb6
WinFsp rebranding support 2021-04-12 17:47:34 -07:00
Bill Zissimopoulos
c5b850be35
sys: improve trace functionality 2021-01-25 13:11:10 -08: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
a5726c820b
sys: add trace functionality 2021-01-13 16:15:06 -08:00
Bill Zissimopoulos
3687df53c6
sys: wait groups and notify implementation 2020-10-09 12:40:49 -07:00
Bill Zissimopoulos
7f360827f6
sys: notify implementation 2020-10-08 15:31:41 -07:00
Bill Zissimopoulos
01f91c771d
sys: notify implementation 2020-10-07 17:07:35 -07:00
Bill Zissimopoulos
844fb7171e
inc,dll,sys: notify implementation skeleton 2020-10-06 16:37:33 -07:00
Bill Zissimopoulos
aa3beba928
sys: silo support 2020-06-05 15:47:19 -07:00
Bill Zissimopoulos
899cd5595d
sys: FspIsNtDdiVersionAvailable 2020-06-01 23:11:33 -07:00
Bill Zissimopoulos
42fd57904a
sys: FspFsvolReadNonCached: trim ReadLength
During CreateProcess/CreateSection Windows locks the image file (using AcquireFileForNtCreateSection),
gets the image file size and then reads the image file. Unfortunately if the file system (erroneously) reads
past the file size, Windows can bugcheck. This allows a faulty or malicious file system to crash Windows.

This commit adds a check in WinFsp to mitigate this problem.
2020-04-10 19:24:43 -07:00
Bill Zissimopoulos
24b5d48fed
add shared/ku/config.h and related changes 2020-02-07 15:40:08 -08:00
Bill Zissimopoulos
71995a1fcd
dll,sys: FSP_CFG_REJECT_EARLY_IRP
Includes Avast fix for FUSE.
2020-02-07 15:11:24 -08:00
Bill Zissimopoulos
8497855d80
sys: FSP_DEVICE_REJECT_EARLY_IRP macro 2020-02-07 13:22:09 -08:00
Bill Zissimopoulos
bf6d56ceac
inc,sys,tst: FSP_FSCTL_VOLUME_PARAMS::RejectIrpPriorToTransact0 2020-02-03 16:38:55 -08:00
Bill Zissimopoulos
51350d5a42
inc,sys,tst: FSP_FSCTL_VOLUME_PARAMS::RejectIrpPriorToTransact 2020-02-03 14:59:23 -08:00
Bill Zissimopoulos
aedf01a384
update source copyright for 2020 2020-01-02 17:50:40 -08:00
Bill Zissimopoulos
254174b8e9
sys: avoid using FspFsextProvider unnecessarily 2019-11-04 16:30:30 -08:00
Bill Zissimopoulos
9436fd8402
sys: implement SectorSize queries
- IRP_MJ_QUERY_VOLUME_INFORMATION/FileFsSectorSizeInformation
- IOCTL_STORAGE_QUERY_PROPERTY/StorageAccessAlignmentProperty
2019-09-06 20:52:15 -07:00
Bill Zissimopoulos
4655926d03
sys, dll: mount manager support 2019-09-06 14:24:00 -07:00
Bill Zissimopoulos
565caebe4c
sys,dll: FspFileSystemSetMountPoint: mount manager support 2019-09-05 19:58:14 -07:00
Bill Zissimopoulos
a47f853beb
sys: mountdev: mount manager support 2019-09-05 09:54:36 -07:00
Bill Zissimopoulos
89ec3e6733
ku: UUID v5 generation 2019-09-04 13:45:53 -07:00
Bill Zissimopoulos
f5fde4c0bb sys: FspVolumeTransactFsext 2019-06-22 15:18:16 -07:00
Bill Zissimopoulos
dcf7e4c5a6 sys: fsext: FsextProvider testing 2019-06-22 14:30:23 -07:00
Bill Zissimopoulos
4ae03629f7 sys: FspFsextProvider: load provider driver 2019-06-18 20:28:59 -07:00
Bill Zissimopoulos
f4496786e5 src: ku: posix.c
- src/ku directory contains shared kernel/user mode code
2019-06-18 16:49:20 -07:00
Bill Zissimopoulos
b637a72ec8 sys: FspFsextProvider 2019-06-18 16:11:38 -07:00
Bill Zissimopoulos
2cd1bddafb sys: FspFsextProvider 2019-06-14 21:22:01 -07:00
Bill Zissimopoulos
781deff06f sys: default TransactTimeout changes 2019-06-11 17:53:34 -07:00
Bill Zissimopoulos
c01402443d wslinux support: ATOMIC_CREATE_ECP_CONTEXT 2019-04-27 15:30:57 -07:00
Bill Zissimopoulos
17adae481c sys: FspFileNodeOplockCheckAsyncEx: fix stupid mistake in DEBUGTEST code 2019-04-18 23:47:27 -07:00
Bill Zissimopoulos
969651f5f6 sys: improve support for FileStatLxInformation 2019-04-18 15:57:22 -07:00
Bill Zissimopoulos
851d0758d9 sys: define FSP_FILE_STAT*_INFORMATION that are missing on some WDK's 2019-04-16 15:55:13 -07:00
Bill Zissimopoulos
ce83619728 sys: FileStatLxInformation and friends 2019-04-15 15:04:31 -07:00
Bill Zissimopoulos
732e6cc38c
grand EaSize patch; passes winfsp-tests and ifstest 2019-03-21 18:14:15 -07:00
Bill Zissimopoulos
2d0c8e14be
sys: FspEaBufferFromOriginatingProcessValidate, FspEaBufferFromFileSystemValidate 2019-03-20 19:06:24 -07:00
Bill Zissimopoulos
02a650f8d0
sys: ea: return STATUS_EA_CORRUPT_ERROR when appropriate 2019-03-19 11:15:14 -07:00
Bill Zissimopoulos
9e5d75fadc
sys: util: FspEaBufferAndNamesValid 2019-03-16 13:58:09 -07:00
Bill Zissimopoulos
d3efdd9219
dll, sys: FSP_NEXT_EA 2019-03-14 22:04:31 -07:00
Bill Zissimopoulos
a811cd2cf8
sys, dll: extended attributes: checkpoint 2019-03-13 14:29:49 -07:00
Bill Zissimopoulos
d2de5e996c
update source copyright for 2019 2019-02-28 10:39:31 -08:00
Bill Zissimopoulos
4d49039abe
sys: FspFastIoQueryOpen: access control
Extend the WinFsp kernel-user mode protocol to allow passing
security descriptors that can then be used for access control
during FastIoQueryOpen.
2018-10-04 13:21:29 -07:00