Commit Graph
100 Commits
Author SHA1 Message Date
Bill Zissimopoulos 41cc70e573 ARM64: initial port 2021-12-07 14:40:28 +00:00
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 87389f010b build: fix broken builds when FSD source changes
Turns out that the linker automatically creates .LIB and .EXP files
for all targets that export symbols (e.g. via __declspec(dllexport)).
The FSD now exports symbols for use by other kernel drivers; this
resulted in files like winfsp-x64.lib and winfsp-x64.exp to be
inadvertently created. Unfortunately this clashed with the files with
the same name created from building the DLL.

Since we only want the .LIB and .EXP files produced from the DLL, we
rename the .LIB and .EXP files produced from the FSD to a name that
does not clash. There does not seem to be any way to instruct the
linker to completely turn off .LIB and .EXP file generation for targets
that export symbols.
2021-12-04 08:36:54 +00:00
Bill Zissimopoulos c32b1c19c2 sys: FspFsvolQueryDirectoryRetry: early exit when pattern not wild 2021-12-03 17:20:50 +00:00
Bill Zissimopoulos 8ce6836674 dll: FspFileSystemSearchDirectoryBuffer: fix #351 2021-12-03 14:47:19 +00:00
Bill Zissimopoulos 8ba8d31e50 changelog: v1.10B4 update 2021-11-26 10:34:33 +00:00
Bill Zissimopoulos c1ab78e8e1 changelog: v1.10B4 update 2021-11-26 10:33:29 +00:00
Bill Zissimopoulos ed404ee579 inc: winfsp.h: FspCleanupDelete: POSIX semantics 2021-11-25 12:18:43 +00:00
Bill Zissimopoulos 620ebd9e72 inc: winfsp.h: FspCleanupDelete: POSIX semantics 2021-11-25 12:14:48 +00:00
Bill Zissimopoulos fc8d18e4de doc: revert the Delete redesign 2021-11-25 11:51:29 +00:00
Bill Zissimopoulos 00219f29cf sys: POSIX rename improvements 2021-11-25 10:35:22 +00:00
Bill Zissimopoulos c4f994f8f6 sys: FspFsvolSetDispositionInformation
return STATUS_FILE_DELETED if file is already deleted
2021-11-24 18:31:48 +00:00
Bill Zissimopoulos 91211f6ccb sys: reimplement POSIX unlink 2021-11-24 16:03:31 +00:00
Bill Zissimopoulos 666561bfa1 dll: revert the Delete redesign 2021-11-22 18:26:45 +00:00
Bill Zissimopoulos 4e94991221 dll: fuse: revert the Delete redesign 2021-11-22 14:46:57 +00:00
Bill Zissimopoulos 826a514fe3 dll: dotnet: revert the Delete redesign 2021-11-22 13:55:32 +00:00
Bill Zissimopoulos a9d90acd71 tst: winfsp-tests: exec_delete_test 2021-11-20 10:53:57 +00:00
Bill Zissimopoulos d72fe2ee33 sys: FspFsvolSetDispositionInformation: ignore FILE_DISPOSITION_FORCE_IMAGE_SECTION_CHECK flag 2021-11-19 17:16:36 +00:00
Bill Zissimopoulos e09042c028 changelog: update with v1.10B4 notes 2021-11-18 16:04:44 +00:00
Bill Zissimopoulos 6e13825dcc build: bump version to WinFsp 2022 Beta4 2021-11-18 15:52:39 +00:00
Bill Zissimopoulos cc90b5dd80 changelog: fix notes accidentally magnled in previous release 2021-11-18 15:51:19 +00:00
Bill Zissimopoulos 4b6d9b70d7 tools: run-tests: FUSE sample testing
- exclude reparse_symlink* on AppVeyor
2021-11-18 10:34:48 +00:00
Bill Zissimopoulos 1f68eb0f3d tst: memfs-fuse: remove initializer designators
- allows this project to be built with VS2015
2021-11-17 22:17:07 +00:00
Bill Zissimopoulos 61c48ab417 tools: run-tests: fix ignored ERRORLEVEL 2021-11-17 15:19:29 +00:00
Bill Zissimopoulos d7e49dfb20 tools: run-tests: add memfs-fuse testing 2021-11-17 13:51:18 +00:00
Bill Zissimopoulos 10c5fa6301 tools: run-tests: add memfs-fuse testing 2021-11-17 13:46:09 +00:00
Bill Zissimopoulos 368855676a tools: run-tests: fix !time! retrieval 2021-11-14 13:01:56 +00:00
Bill Zissimopoulos 6fbe73ce4d tools: run-tests.bat: fix parens escaping 2021-11-14 12:45:13 +00:00
Bill Zissimopoulos e1763bcd10 tools: run-tests: add test duration 2021-11-14 11:35:20 +00:00
Bill Zissimopoulos 378beb55eb dll: fuse: CheckSymlinkDirectory: optimization 2021-11-14 10:48:17 +00:00
Bill Zissimopoulos 14b212f9af tst: winfsp-tests: remove symbol SYMBOLIC_LINK_FLAG_ALLOW_UNPRIVILEGED_CREATE 2021-11-14 00:09:46 +00:00
Bill Zissimopoulos cca8b32128 installer: add memfs-fuse sample 2021-11-13 23:37:34 +00:00
Bill Zissimopoulos 0b94e8bc6a dll: fuse: multiple improvements and fixes
- Symlinks: Now supports conventing a directory into a symlink reparse
point.

- Symlinks: The determination of whether a symlink is a file or
directory is now possible for file systems that do not support slashdot
(/.) queries.

- EA: Now allows the removal of non-existant EA without error (this is
allowed on Windows).
2021-11-13 23:27:47 +00:00
Bill Zissimopoulos ec3386c2b3 tst: winfsp-tests: add --fuse-external option 2021-11-13 10:15:12 +00:00
Bill Zissimopoulos d67a917c6f tst: memfs-fuse: add FUSE reference file system 2021-11-13 10:11:45 +00:00
Bill Zissimopoulos 2a86cd2c90 doc: WinFsp-Delete-Redesign: fix IRP_MJ_CLOSE doc link 2021-11-08 16:57:35 +00:00
Bill ZissimopoulosandGitHub 67c4011263 update README with reference to Windows 11 2021-11-08 16:20:16 +00:00
Bill Zissimopoulos 90d67bc07d tools: build: sign cab file using SHA-256 2021-11-08 15:20:54 +00:00
Bill Zissimopoulos 70643f40a0 update changelog 2021-11-08 13:38:02 +00:00
Bill Zissimopoulos 366a9c562f art: update with Win11 colors 2021-11-08 13:17:35 +00:00
Bill Zissimopoulos d7a8b0d9fb launcher: SvcInstanceStartWithArgvCopy: properly handle timeout condition 2021-10-31 12:35:30 +00:00
Bill Zissimopoulos 52dd6f7478 dll: fuse: FSP_FUSE_CAP_DELETE_ACCESS 2021-10-26 13:21:57 +01:00
Bill Zissimopoulos 73359d682b dll: fuse: convert EPERM/EACCES from unlink/rmdir to STATUS_CANNOT_DELETE 2021-10-25 13:58:52 +01:00
Bill Zissimopoulos 2a3f1a3990 doc: update NTFS compatibility 2021-10-22 15:22:08 +01:00
Bill Zissimopoulos e823103334 doc: update API documentation 2021-10-22 14:47:58 +01:00
Bill Zissimopoulos 1208c6c652 doc: fix code in WinFsp Delete Redesign document 2021-10-22 12:22:33 +01:00
Bill Zissimopoulos b13b24e0b1 doc: add WinFsp Delete Redesign document 2021-10-22 12:15:16 +01:00
Bill Zissimopoulos 91aa0ac2d0 inc: winfsp.h: fix source doc for Delete 2021-10-22 11:39:05 +01:00
Bill Zissimopoulos dcce0d44a7 build: bump version to 2021.1 Beta3 2021-10-21 21:52:18 +01:00
Bill Zissimopoulos af257d4bff tst: winfsp-tests: eliminate use of symbol FILE_SUPPORTS_POSIX_UNLINK_RENAME 2021-10-21 15:56:58 +01:00
Bill Zissimopoulos 9eaaefd154 sys,dll: debug support for DispositionEx, RenameEx 2021-10-21 15:54:38 +01:00
Bill Zissimopoulos bb3e92df6c sys, dll: implement POSIX semantics for Rename 2021-10-21 15:39:25 +01:00
Bill Zissimopoulos 76bfa395a8 dotnet: implement new Delete design and POSIX semantics 2021-10-20 12:23:14 +01:00
Bill Zissimopoulos 81248f3899 dotnet: FileSystemHost: zero-init allocations made using Marshal.AllocHGlobal 2021-10-20 09:04:20 +01:00
Bill Zissimopoulos a4d7aee6f5 dll: fuse: implement new Delete design and POSIX semantics 2021-10-19 17:54:01 +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 3e66082f11 sys: FspFsvolQueryDirectoryCopy: fix issue #380 2021-10-13 16:35:02 +01:00
Bill Zissimopoulos 490d021b22 dll: mount: MountDoNotUseLauncher registry setting 2021-08-11 16:27:29 +01:00
Bill Zissimopoulos 2d41693f3c src: dotnet: fix newlines 2021-06-20 20:44:06 +03:00
Bill Zissimopoulos 068270fa7f update changelog 2021-06-13 12:40:41 -07:00
Bill Zissimopoulos f51bdef534 dll: fuse: fix path arg to release on Create error
When the kernel sends a `Create` message the WinFsp-FUSE layer creates
and opens the file (as per Windows semantics). Sometimes an additional
operation needs to be performed after the file has been opened, which
may fail. In this case the just opened file must be released.

In this particular case the WinFsp-FUSE layer used to call `release`
with an uninitialized path. This commit fixes the problem.

This problem was originally reported in cgofuse (billziss-gh/cgofuse#58)
2021-06-09 10:17:59 -07:00
Bill Zissimopoulos 63f91cc667 build: bump version 2021-06-09 10:13:41 -07:00
Bill Zissimopoulos 6e3e469fcb doc: update known file systems 2021-06-08 12:22:26 -07:00
Bill Zissimopoulos efcc82b5dd build: update version 2021-06-08 10:38:27 -07:00
Bill Zissimopoulos cad5e68ac8 art: update logo 2021-06-01 13:49:00 -07:00
Bill Zissimopoulos 6e3a8f70b2 update source copyright to 2021 2021-05-21 15:57:05 -07:00
Bill Zissimopoulos 6bc0fe4ac5 art: update logo 2021-05-21 14:53:52 -07:00
Bill Zissimopoulos 07f097220f changelog: update for v1.10B1 2021-05-21 11:41:35 -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 ZissimopoulosandGitHub 23e401e312 Merge pull request #371 from lemourin/mingw-fix
inc: don't redeclare _FILE_FULL_EA_INFORMATION for mingw
2021-05-17 10:00:17 -07:00
Bill Zissimopoulos a27994289d art: update 2021-05-07 16:50:58 -07:00
Bill Zissimopoulos 3b10145e93 tst: winfsp-tests: disable new tests that fail on passthrough 2021-04-19 13:34:35 -07:00
Bill Zissimopoulos 33c6e7ee61 sys: fix issue #364 2021-04-16 16:43:34 -07:00
Bill Zissimopoulos d0d67998c1 inc: fsctl.h: fix class guid's when used outside our build system 2021-04-13 15:33:57 -07:00
Bill Zissimopoulos aa7888effc tools: wixguid.py 2021-04-13 15:22:42 -07:00
Bill Zissimopoulos 3c7e712e57 tools: build.bat: skip choco build for non-WinFsp brands 2021-04-13 14:38:51 -07:00
Bill Zissimopoulos f8ee12f592 build: fix inadvertently broken DLL build on VS2015 2021-04-12 22:07:04 -07:00
Bill Zissimopoulos c84d47aa3e doc: WinFsp rebranding document 2021-04-12 21:38:09 -07:00
Bill Zissimopoulos 023c925fb6 WinFsp rebranding support 2021-04-12 17:47:34 -07:00
Bill Zissimopoulos a7cfabeff8 tools: add batch file that fixes issue #162 2021-04-08 15:00:55 -07:00
Bill Zissimopoulos d4a70da611 Merge branch 'pvt-tsfix' 2021-04-08 14:06:52 -07:00
Bill Zissimopoulos 50892bfa19 shared: posix: DistinctPermsForSameOwnerGroup 2021-04-06 15:00:31 -07:00
Bill Zissimopoulos b2e677a3d3 sys: FspFsvolSetBasicInformation: issue #362
According to the FILE_BASIC_INFORMATION doc a file system should not update a file timestamp when it receives a value of -1 in the corresponding time field.

This commit converts a -1 timestamp to a 0 timestamp; this directs a WinFsp file system not to update the corresponding file timestamp.

This commit fixes issue #362
2021-04-06 13:41:35 -07:00
Bill Zissimopoulos 9d76495340 update Changlog for v1.9 2021-04-06 13:01:33 -07:00
Bill Zissimopoulos 41c604b0fd update Changelog for v1.9B2 2021-04-06 13:00:30 -07:00
Bill Zissimopoulos 28a9534a65 build: version.properties: bump version 2021-04-06 12:53:33 -07:00
Bill Zissimopoulos b87c907af8 build: version.properties: bump version 2021-02-02 16:50:52 -08:00
Bill Zissimopoulos 9d5efe5f98 dll: fuse: FileSecurity option 2021-01-25 16:54:59 -08: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 1dbcae3985 sys: FspTraceNtStatus: fix spelling mistake 2021-01-25 12:44:59 -08:00
Bill Zissimopoulos a5726c820b sys: add trace functionality 2021-01-13 16:15:06 -08:00
Bill ZissimopoulosandGitHub 870c54253a Merge pull request #342 from gaotxg/master
Credential: Default do not save password
2021-01-05 19:47:51 -08:00
Bill Zissimopoulos c803ef24f8 dll: fuse: truncate fixed size options
Some options (VolumePrefix, FileSystemName, volname) have a fixed maximum size.
This commit adds functionality to truncate user-specified long options to their fixed maximum size.
2020-12-22 15:44:37 -08:00
Bill Zissimopoulos 2d5d058d2f dll: FspFsctlStartService:make thread safe 2020-12-19 11:05:24 -08:00
Bill Zissimopoulos a372c6ee40 changelog: add note about notifyfs file systems 2020-12-18 16:57:08 -08:00
Bill Zissimopoulos c8a5f52fb1 installer: add notifyfs-dotnet file system 2020-12-18 16:47:20 -08:00
Bill Zissimopoulos 40052b143e tst: notifyfs-dotnet: add .NET file system to demo file notification mechanism 2020-12-18 16:39:30 -08:00
Bill Zissimopoulos 8006763367 dotnet: Interop: NotifyInfoInternal: fix FileNameBufOffset 2020-12-18 16:37:08 -08:00
Bill ZissimopoulosandGitHub 7ed9c56005 Merge pull request #336 from alonsohki/fix-notify-interop-alignment
Fix an alignment problem in the FspFileSystemNotify interop
2020-12-18 15:45:48 -08:00