Commit Graph

1565 Commits

Author SHA1 Message Date
Bill Zissimopoulos
e5879a9cb0 dll: fuse: getpath 2022-04-12 15:44:54 +01:00
Bill Zissimopoulos
1a879e3302 inc, src: PostDispositionWhenNecessaryOnly
- Rename PostDispositionForDirOnly to PostDispositionWhenNecessaryOnly

- Implement PostDispositionWhenNecessaryOnly across the board
2022-04-02 12:48:35 +01:00
Bill Zissimopoulos
98421fe11b inc,sys,tst: fsctl: PostDispositionForDirOnly 2022-04-01 20:54:54 +01:00
Bill Zissimopoulos
d816d607f4 sys: FspFsvolDeviceDirInfoCacheItemSizeMax: increase to 64K 2022-03-24 18:10:04 +00:00
Bill Zissimopoulos
7527155cb8 dll: dirbuf:
- FspFileSystemAcquireDirectoryBufferEx takes hint for initial capacity.
- Buffer allocation strategy has been improved to minimize reallocation.
- Quick sort of directory entries now implements median of three partitioning. This improves performance of sorting already sorted data.
2022-03-22 16:47:40 +00:00
Bill Zissimopoulos
20680fa5b5 sys: FastIo: read/write implementation 2022-03-20 20:31:54 +00:00
Bill Zissimopoulos
00d4aba946 github: winfsp org 2022-03-02 18:01:21 +00:00
Bill Zissimopoulos
fadcd84ca9 winfsp.dev website 2022-03-02 17:36:14 +00:00
Bill Zissimopoulos
0c90a69b27 dotnet: Interop.cs: fix newlines 2022-02-03 16:15:24 +00:00
Bill Zissimopoulos
cf13cac438 dll: np: NPGetUniversalName implementation 2022-02-03 15:32:35 +00:00
Bill Zissimopoulos
29251dc2be sys, dll: convert memory barriers to interlocked operations 2022-01-19 10:55:46 +00:00
Bill Zissimopoulos
04c2f0120c sys: remove wait group (Wgroup) functionality 2022-01-17 14:30:06 +00:00
Bill Zissimopoulos
228f1d658d sys: FspVolumeNotify: allow multiple outstanding calls to FspFileSystemNotifyBegin 2022-01-15 15:46:56 +00:00
Bill Zissimopoulos
57fce78ff3 sys: FspVolumeNotifyWork: always acquire the rename lock shared 2022-01-12 15:43:05 +00:00
Bill Zissimopoulos
30d09b4a11 shared: DistinctPermsForSameOwnerGroup: change default to TRUE 2022-01-07 17:50:20 +00:00
Bill Zissimopoulos
751eaa69df update source copyright to 2022 2022-01-07 17:30:49 +00:00
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
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
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
d72fe2ee33 sys: FspFsvolSetDispositionInformation: ignore FILE_DISPOSITION_FORCE_IMAGE_SECTION_CHECK flag 2021-11-19 17:16:36 +00:00
Bill Zissimopoulos
378beb55eb dll: fuse: CheckSymlinkDirectory: optimization 2021-11-14 10:48:17 +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
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
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
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
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
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
9d5efe5f98 dll: fuse: FileSecurity option 2021-01-25 16:54:59 -08:00