Skip to content

Releases: winfsp/winfsp

WinFsp 2022+ARM64 RC1

14 Jun 14:38
v1.11RC1
Compare
Choose a tag to compare
WinFsp 2022+ARM64 RC1 Pre-release
Pre-release

Download WinFsp

VirusTotal Scan Results

WinFsp 2022+ARM64 has reached "Release Candidate" status. Please install and test this release, especially if you are a file system developer.

PERFORMANCE

WinFsp has excellent performance according to the latest (June 2022) performance testing. More details here.

CHANGES SINCE WINFSP 2022

  • [NEW] ARM64 support! For details see WinFsp on ARM64.

  • [NEW] A new file system operation has been added to the FUSE API:

    int (*getpath)(const char *path, char *buf, size_t size,
        struct fuse_file_info *fi);

    The getpath operation allows a case-insensitive file system to report the correct case of a file path. For example, getpath can be used to report that the actual path of a file opened as /PATH/TO/FILE is really /Path/To/File. This capability is important for some Windows file system scenarios and can sometimes result in a performance improvement.

  • [NEW] New ntptfs sample file system. This is a production quality pass through file system and should be used instead of the original passthrough file system that was developed for education purposes only.

  • [NEW] Many performance improvements:

    • A new PostDispositionForDirOnly setting has been added to FSP_FSCTL_VOLUME_PARAMS. This allows a file system to declare that it does not want to see SetInformation/Disposition requests for files (such requests will still be sent for directories, because a file system is supposed to check if a directory is empty before deletion). This makes file (not directory) deletion faster. This optimization should be safe to enable for most file systems. FUSE file systems get this optimization for free.

    • The FSD now implements "fast I/O" reads and writes. Fast I/O is a technique for doing I/O without using IRP's (I/O Request Packets) and can only work for file systems using the cache manager (FileInfoTimeout==-1). This results in significant improvement in read/write scenarios.

    • The FSD now implements "fast I/O" for "transact" messages. Transact messages are used in the communication protocol between the kernel-mode FSD and the user-mode file system. Fast I/O speeds this communication protocol by as much as 10% in some scenarios. (Fast I/O for transact messages is enabled only when using the new FSP_IOCTL_TRANSACT control code, but does not require any other special configuration to be enabled.)

    • The FSD per directory cache limit has been increased from 16K to 64K. This should allow for more directory data to be maintained in kernel and reduce round-trips to the user mode file system.

    • The user mode directory buffering mechanism (FspFileSystemAcquireDirectoryBuffer) has been improved. The mechanism uses the quick-sort algorithm internally which can exhibit bad performance when sorting already sorted data. The quick-sort algorithm has been improved with the use use of median of three partitioning, which alleviates this problem.

  • [NEW] A new registry setting under HKLM\SOFTWARE\WinFsp (or HKLM\SOFTWARE\WOW6432Node\WinFsp on a 64-bit system) called MountBroadcastDriveChange has been introduced, which if set to 1 will broadcast an additional "drive change" message to all top-level windows (including Explorer) during mounting and unmounting.

    • Normally the Windows infrastructure broadcasts a WM_DEVICECHANGE message whenever a drive gets added/removed. In some rare systems it is possible for this message to get lost or stalled. The workaround for these rare systems is to enable this registry setting, in which case WinFsp will broadcast the WM_DEVICECHANGE using a slightly different but more reliable method than the one Windows uses.

    • For more details see source code comments at FspMountBroadcastDriveChange.

  • [FIX] The WinFsp Network Provider now implements NPGetUniversalName. This fixes problems with some apps (e.g. Photos app).

  • [FIX] WinFsp-FUSE now supports Azure AD accounts when specifying the -o uid=-1 option. In addition a new option -o uidmap=UID:SID allows the specification of arbitrary UID<->SID or UID<->UserName mappings.

  • [FIX] All executables (*.exe,*.dll,*.sys) in the WinFsp installation bin folder are now signed.

  • [FIX] The default value for the registry setting DistinctPermsForSameOwnerGroup has been changed from 0 to 1.

  • [BUILD] Product configuration (MyProductName, etc.) is done by the file build.version.props located in build\VStudio. This file was previously named version.properties.

WinFsp 2022+ARM64 Beta3

31 May 14:55
v1.11B3
Compare
Choose a tag to compare
Pre-release

Download WinFsp

VirusTotal Scan Results

  • This release introduces significant internal changes, including kernel mode changes, to accommodate the ARM64 port. Your testing feedback is greatly appreciated, especially on ARM64 machines.

  • This release includes private symbols. Use https://github.com/winfsp/winfsp.sym/raw/master/sym as your symbol path in Visual Studio or WinDbg. More info.

CHANGES SINCE WINFSP 2022

  • [NEW] ARM64 support! For details see WinFsp on ARM64.

  • [NEW] A new file system operation has been added to the FUSE API:

    int (*getpath)(const char *path, char *buf, size_t size,
        struct fuse_file_info *fi);

    The getpath operation allows a case-insensitive file system to report the correct case of a file path. For example, getpath can be used to report that the actual path of a file opened as /PATH/TO/FILE is really /Path/To/File. This capability is important for some Windows file system scenarios and can sometimes result in a performance improvement.

  • [NEW] New ntptfs sample file system. This is a production quality pass through file system and should be used instead of the original passthrough file system that was developed for education purposes only.

  • [NEW] Many performance improvements:

    • A new PostDispositionForDirOnly setting has been added to FSP_FSCTL_VOLUME_PARAMS. This allows a file system to declare that it does not want to see SetInformation/Disposition requests for files (such requests will still be sent for directories, because a file system is supposed to check if a directory is empty before deletion). This makes file (not directory) deletion faster. This optimization should be safe to enable for most file systems. FUSE file systems get this optimization for free.

    • The FSD now implements "fast I/O" reads and writes. Fast I/O is a technique for doing I/O without using IRP's (I/O Request Packets) and can only work for file systems using the cache manager (FileInfoTimeout==-1). This results in significant improvement in read/write scenarios.

    • The FSD now implements "fast I/O" for "transact" messages. Transact messages are used in the communication protocol between the kernel-mode FSD and the user-mode file system. Fast I/O speeds this communication protocol by as much as 10% in some scenarios. (Fast I/O for transact messages is enabled only when using the new FSP_IOCTL_TRANSACT control code, but does not require any other special configuration to be enabled.)

    • The FSD per directory cache limit has been increased from 16K to 64K. This should allow for more directory data to be maintained in kernel and reduce round-trips to the user mode file system.

    • The user mode directory buffering mechanism (FspFileSystemAcquireDirectoryBuffer) has been improved. The mechanism uses the quick-sort algorithm internally which can exhibit bad performance when sorting already sorted data. The quick-sort algorithm has been improved with the use use of median of three partitioning, which alleviates this problem.

  • [FIX] The WinFsp Network Provider now implements NPGetUniversalName. This fixes problems with some apps (e.g. Photos app).

  • [FIX] WinFsp-FUSE now supports Azure AD accounts when specifying the -o uid=-1 option. In addition a new option -o uidmap=UID:SID allows the specification of arbitrary UID<->SID or UID<->UserName mappings.

  • [FIX] All executables (*.exe,*.dll,*.sys) in the WinFsp installation bin folder are now signed.

  • [FIX] The default value for the registry setting DistinctPermsForSameOwnerGroup has been changed from 0 to 1.

  • [BUILD] Product configuration (MyProductName, etc.) is done by the file build.version.props located in build\VStudio. This file was previously named version.properties.

WinFsp 2022+ARM64 Beta2

13 Apr 17:33
v1.11B2
Compare
Choose a tag to compare
Pre-release

Download WinFsp

VirusTotal Scan Results

  • This release introduces significant internal changes, including kernel mode changes, to accommodate the ARM64 port. Although there are no known crashes or other problems of such severity, please do not use in production environments.

  • Your testing feedback is greatly appreciated, especially on ARM64 machines.

  • This release includes private symbols. Use https://github.com/winfsp/winfsp.sym/raw/master/sym as your symbol path in Visual Studio or WinDbg. More info.

CHANGES SINCE WINFSP 2022

  • [NEW] ARM64 support! For details see WinFsp on ARM64.

  • [NEW] A new file system operation has been added to the FUSE API:

    int (*getpath)(const char *path, char *buf, size_t size,
        struct fuse_file_info *fi);

    The getpath operation allows a case-insensitive file system to report the correct case of a file path. For example, getpath can be used to report that the actual path of a file opened as /PATH/TO/FILE is really /Path/To/File. This capability is important for some Windows file system scenarios and can sometimes result in a performance improvement.

  • [NEW] Many performance improvements:

    • A new PostDispositionForDirOnly setting has been added to FSP_FSCTL_VOLUME_PARAMS. This allows a file system to declare that it does not want to see SetInformation/Disposition requests for files (such requests will still be sent for directories, because a file system is supposed to check if a directory is empty before deletion). This makes file (not directory) deletion faster. This optimization should be safe to enable for most file systems. FUSE file systems get this optimization for free.

    • The FSD now implements "fast I/O" reads and writes. Fast I/O is a technique for doing I/O without using IRP's (I/O Request Packets) and can only work for file systems using the cache manager (FileInfoTimeout==-1). This results in significant improvement in read/write scenarios.

    • The FSD per directory cache limit has been increased from 16K to 64K. This should allow for more directory data to be maintained in kernel and reduce round-trips to a user mode file system.

    • The user mode directory buffering mechanism (FspFileSystemAcquireDirectoryBuffer) has been improved. The mechanism uses the quick-sort algorithm internally which can exhibit bad performance when sorting already sorted data. The quick-sort algorithm has been improved with the use use of median of three partitioning, which alleviates this problem.

  • [NEW] The default value for the registry setting DistinctPermsForSameOwnerGroup has been changed from 0 to 1.

  • [NEW] New ntptfs sample file system. This is a production quality pass through file system and should be used instead of the original passthrough file system that was developed for education purposes only.

  • [FIX] The WinFsp Network Provider now implements NPGetUniversalName. This fixes problems with some apps (e.g. Photos app).

  • [BUILD] Product configuration (MyProductName, etc.) is done by the file build.version.props located in build\VStudio. This file was previously named version.properties.

WinFsp 2022+ARM64 Beta1

03 Feb 15:49
v1.11B1
025e42e
Compare
Choose a tag to compare
Pre-release

Download WinFsp

VirusTotal Scan Results

  • This release introduces significant internal changes, including kernel mode changes, to accommodate the ARM64 port. Although there are no known crashes or other problems of such severity, please do not use in production environments.

  • Your testing feedback is greatly appreciated, especially on ARM64 machines.

  • This release includes private symbols. Use https://github.com/billziss-gh/winfsp.sym/raw/master/sym as your symbol path in Visual Studio or WinDbg. More info.

CHANGES SINCE WINFSP 2022

  • [NEW] ARM64 support! For details see WinFsp on ARM64.

  • [NEW] New ntptfs sample file system. This is a production quality pass through file system and should be used instead of the original passthrough file system that was developed for education purposes only.

  • [NEW] The default value for the registry setting DistinctPermsForSameOwnerGroup has been changed from 0 to 1.

  • [BUILD] Product configuration (MyProductName, etc.) is done by the file build.version.props located in build\VStudio. This file was previously named version.properties.

WinFsp 2022

06 Jan 16:04
v1.10
2fb2de0
Compare
Choose a tag to compare

Download WinFsp

VirusTotal Scan Results

This release includes private symbols. Use https://github.com/billziss-gh/winfsp.sym/raw/master/sym as your symbol path in Visual Studio or WinDbg. More info.

CHANGES SINCE WINFSP 2021

  • [NEW] Official Windows 11 support.

  • [NEW] Support for FileDispositionInformationEx and FileRenameInformationEx has been added. Native and .NET file systems must enable this support by setting SupportsPosixUnlinkRename in FSP_FSCTL_VOLUME_PARAMS. FUSE file systems have this support enabled by default, but they can disable it by using the -o LegacyUnlinkRename command line option.

  • [NEW] WinFsp now supports rebranding of the build products. This is primarily useful to commercial licensees. See https://github.com/billziss-gh/winfsp/wiki/WinFsp-Rebranding for more information.

  • [NEW] WinFsp-FUSE has a new capability FSP_FUSE_CAP_DELETE_ACCESS. If this capability is specified WinFsp will call the FUSE access method with the WinFsp-specific flag FSP_FUSE_DELETE_OK to check whether the deletion should be allowed. This can be used to disallow deletion of files and directories that would normally be allowed under the FUSE/POSIX model.

  • [NEW] WinFsp-FUSE has a new method for determining file access in the case where the user's primary SID (Windows Security Identifier) and group SID are the same (for example, this can happen when someone uses a Microsoft account as their primary login).

    • Previously when the user SID and group SID were the same WinFsp-FUSE looked at the UNIX permissions for the owner and the UNIX permissions for the group and used the MOST restrictive permissions, which often resulted in inadvertent "access denied" errors. (For example, if the owner permission was rw- and the group permission was --- the result was --- and therefore access denied).

    • Going forward this behavior will change. The user and group mode permissions will not be considered together even in the case where the user SID and group SID are the same. This will resolve the access denied errors.

    • However to preserve backward compatibility (there might be some file systems that rely on the old behavior) we will do so in stages. For release v1.10 (2022) there is a new registry setting under HKLM\SOFTWARE\WinFsp (or HKLM\SOFTWARE\WOW6432Node\WinFsp on a 64-bit system) called DistinctPermsForSameOwnerGroup, which if set to 1 will direct WinFsp-FUSE to use the new behavior. The default value is 0 which directs WinFsp-FUSE to use the old behavior. This default will change in a future release.

  • [NEW] A new registry setting under HKLM\SOFTWARE\WinFsp (or HKLM\SOFTWARE\WOW6432Node\WinFsp on a 64-bit system) called MountDoNotUseLauncher has been introduced, which if set to 1 will disable the use of the Launcher during mounting. The default value is 0 which allows the use of the Launcher during mounting in those rare cases when necessary. (In general the Launcher is not necessary for mounting. However when running a file system in the Windows Service context (session 0) under an account that is not LocalSystem (e.g. NT AUTHORITY\NETWORK SERVICE), the Launcher is used to create global drives.)

  • [NEW] A new sample memfs-fuse file system written in C++ has been added. This file system uses all FUSE2 features offered by WinFsp-FUSE, passes all file system tests (that can be passed by a FUSE2 file system) and will act as the reference WinFsp-FUSE file system going forward.

  • [FIX] Fixed a problem with FspFileSystemReadDirectoryBuffer and file systems that support pattern matching (like passthrough). (GitHub issue #351.)

  • [FIX] File share access when overwriting a file (e.g. when using TRUNCATE_EXISTING) is now done in a manner compatible with NTFS (previously there were cases when overwriting a file where behavior diverged from the NTFS one). (See GitHub issue #364.)

  • [FIX] The FSD will now report a file's reparse tag in the EaSize field of FILE_FULL_DIR_INFORMATION and friends. This fixes problems such as cmd.exe not recognizing symlinks in a dir command. (See GitHub issue #380.)

  • [FIX] Fixed a problem in the file system shutdown protocol which resolves an occasional access violation in the user mode file system process. Previously it was possible for a file system to crash when stopping itself using FspFileSystemStopDispatcher; this problem has been rectified. (See GitHub issue #369.)

  • [FIX] Improved symlink support for FUSE file systems. Notably:

    • FUSE file systems now support converting a directory to a symlink reparse point.

    • The determination of whether a symlink is a file or directory (necessary because the Windows file system makes this distinction) is now possible for file systems that do not support slashdot (/.) queries. (A slashdot query is one like getattr("/PATH/."); such queries are not normally expected to be resolved by FUSE file systems.)

  • [FIX] Fixed a problem in the FUSE layer where in some rare circumstances the release operation could be called with an uninitialized path argument. (See GitHub issue winfsp/cgofuse#58 and commit f51bdef).

  • [FIX] Fixed a potential problem when launching file system instances using the Launcher. (See GitHub issue #356.)

  • [FIX] The winfsp.h header no longer defines FILE_FULL_EA_INFORMATION when compiled under mingw. This is because the mingw tool chain already includes a definition of this type. (GitHub PR #371. Thanks @ lemourin.)

WinFsp 2022 Beta5

20 Dec 15:43
v1.10B5
551ed34
Compare
Choose a tag to compare
WinFsp 2022 Beta5 Pre-release
Pre-release

Download WinFsp

VirusTotal Scan Results

This release includes private symbols. Use https://github.com/billziss-gh/winfsp.sym/raw/master/sym as your symbol path in Visual Studio or WinDbg. More info.

CHANGES SINCE WINFSP 2021

  • [NEW] Official Windows 11 support.

  • [NEW] Support for FileDispositionInformationEx and FileRenameInformationEx has been added. Native and .NET file systems must enable this support by setting SupportsPosixUnlinkRename in FSP_FSCTL_VOLUME_PARAMS. FUSE file systems have this support enabled by default, but they can disable it by using the -o LegacyUnlinkRename command line option.

  • [NEW] WinFsp now supports rebranding of the build products. This is primarily useful to commercial licensees. See https://github.com/billziss-gh/winfsp/wiki/WinFsp-Rebranding for more information.

  • [NEW] WinFsp-FUSE has a new capability FSP_FUSE_CAP_DELETE_ACCESS. If this capability is specified WinFsp will call the FUSE access method with the WinFsp-specific flag FSP_FUSE_DELETE_OK to check whether the deletion should be allowed. This can be used to disallow deletion of files and directories that would normally be allowed under the FUSE/POSIX model.

  • [NEW] WinFsp-FUSE has a new method for determining file access in the case where the user's primary SID (Windows Security Identifier) and group SID are the same (for example, this can happen when someone uses a Microsoft account as their primary login).

    • Previously when the user SID and group SID were the same WinFsp-FUSE looked at the UNIX permissions for the owner and the UNIX permissions for the group and used the MOST restrictive permissions, which often resulted in inadvertent "access denied" errors. (For example, if the owner permission was rw- and the group permission was --- the result was --- and therefore access denied).

    • Going forward this behavior will change. The user and group mode permissions will not be considered together even in the case where the user SID and group SID are the same. This will resolve the access denied errors.

    • However to preserve backward compatibility (there might be some file systems that rely on the old behavior) we will do so in stages. For release v1.10 (2022) there is a new registry setting under HKLM\SOFTWARE\WinFsp (or HKLM\SOFTWARE\WOW6432Node\WinFsp on a 64-bit system) called DistinctPermsForSameOwnerGroup, which if set to 1 will direct WinFsp-FUSE to use the new behavior. The default value is 0 which directs WinFsp-FUSE to use the old behavior. This default will change in a future release.

  • [NEW] A new registry setting under HKLM\SOFTWARE\WinFsp (or HKLM\SOFTWARE\WOW6432Node\WinFsp on a 64-bit system) called MountDoNotUseLauncher has been introduced, which if set to 1 will disable the use of the Launcher during mounting. The default value is 0 which allows the use of the Launcher during mounting in those rare cases when necessary. (In general the Launcher is not necessary for mounting. However when running a file system in the Windows Service context (session 0) under an account that is not LocalSystem (e.g. NT AUTHORITY\NETWORK SERVICE), the Launcher is used to create global drives.)

  • [FIX] Fixed a problem with FspFileSystemReadDirectoryBuffer and file systems that support pattern matching (like passthrough). (GitHub issue #351.)

  • [FIX] File share access when overwriting a file (e.g. when using TRUNCATE_EXISTING) is now done in a manner compatible with NTFS (previously there were cases when overwriting a file where behavior diverged from the NTFS one). (See GitHub issue #364.)

  • [FIX] The FSD will now report a file's reparse tag in the EaSize field of FILE_FULL_DIR_INFORMATION and friends. This fixes problems such as cmd.exe not recognizing symlinks in a dir command. (See GitHub issue #380.)

  • [FIX] Fixed a problem in the file system shutdown protocol which resolves an occasional access violation in the user mode file system process. Previously it was possible for a file system to crash when stopping itself using FspFileSystemStopDispatcher; this problem has been rectified. (See GitHub issue #369.)

  • [FIX] Fixed a problem in the FUSE layer where in some rare circumstances the release operation could be called with an uninitialized path argument. (See GitHub issue winfsp/cgofuse#58 and commit f51bdef).

  • [FIX] Fixed a potential problem when launching file system instances using the Launcher. (See GitHub issue #356.)

  • [FIX] The winfsp.h header no longer defines FILE_FULL_EA_INFORMATION when compiled under mingw. This is because the mingw tool chain already includes a definition of this type. (GitHub PR #371. Thanks @ lemourin.)

WinFsp 2022 Beta4

26 Nov 13:45
v1.10B4
8ba8d31
Compare
Choose a tag to compare
WinFsp 2022 Beta4 Pre-release
Pre-release

Download WinFsp

VirusTotal Scan Results

CHANGES SINCE WINFSP 2021.1 Beta3

  • The Beta has been renamed to WinFsp 2022 Beta4.

  • The Delete functionality introduced in release 2021.1 Beta3 (v1.10B3) has been reverted. For more information see this thread: https://groups.google.com/g/winfsp/c/1VYgTp1JpSI

  • This release includes private symbols. Use https://github.com/billziss-gh/winfsp.sym/raw/master/sym as your symbol path in Visual Studio or WinDbg. More info.

CHANGES SINCE WINFSP 2021

  • [NEW] Official Windows 11 support.

  • [NEW] Support for FileDispositionInformationEx and FileRenameInformationEx has been added.

  • [NEW] WinFsp now supports rebranding of the build products. This is primarily useful to commercial licensees. See https://github.com/billziss-gh/winfsp/wiki/WinFsp-Rebranding for more information.

  • [NEW] WinFsp-FUSE has a new capability FSP_FUSE_CAP_DELETE_ACCESS. If this capability is specified WinFsp will call the FUSE access method with the WinFsp-specific flag FSP_FUSE_DELETE_OK to check whether the deletion should be allowed. This can be used to disallow deletion of files and directories that would normally be allowed under the FUSE/POSIX model.

  • [NEW] WinFsp-FUSE has a new method for determining file access in the case where the user's primary SID (Windows Security Identifier) and group SID are the same (for example, this can happen when someone uses a Microsoft account as their primary login).

    • Previously when the user SID and group SID were the same WinFsp-FUSE looked at the UNIX permissions for the owner and the UNIX permissions for the group and used the MOST restrictive permissions, which often resulted in inadvertent "access denied" errors. (For example, if the owner permission was rw- and the group permission was --- the result was --- and therefore access denied).

    • Going forward this behavior will change. The user and group mode permissions will not be considered together even in the case where the user SID and group SID are the same. This will resolve the access denied errors.

    • However to preserve backward compatibility (there might be some file systems that rely on the old behavior) we will do so in stages. For release v1.10 (2022) there is a new registry setting under HKLM\SOFTWARE\WinFsp (or HKLM\SOFTWARE\WOW6432Node\WinFsp on a 64-bit system) called DistinctPermsForSameOwnerGroup, which if set to 1 will direct WinFsp-FUSE to use the new behavior. The default value is 0 which directs WinFsp-FUSE to use the old behavior. This default will change in a future release.

  • [NEW] A new registry setting under HKLM\SOFTWARE\WinFsp (or HKLM\SOFTWARE\WOW6432Node\WinFsp on a 64-bit system) called MountDoNotUseLauncher has been introduced, which if set to 1 will disable the use of the Launcher during mounting. The default value is 0 which allows the use of the Launcher during mounting in those rare cases when necessary. (In general the Launcher is not necessary for mounting. However when running a file system in the Windows Service context (session 0) under an account that is not LocalSystem (e.g. NT AUTHORITY\NETWORK SERVICE), the Launcher is used to create global drives.)

  • [FIX] File share access when overwriting a file (e.g. when using TRUNCATE_EXISTING) is now done in a manner compatible with NTFS (previously there were cases when overwriting a file where behavior diverged from the NTFS one). (See GitHub issue #364.)

  • [FIX] The FSD will now report a file's reparse tag in the EaSize field of FILE_FULL_DIR_INFORMATION and friends. This fixes problems such as cmd.exe not recognizing symlinks in a dir command. (See GitHub issue #380.)

  • [FIX] Fixed a problem in the file system shutdown protocol which resolves an occasional access violation in the user mode file system process. Previously it was possible for a file system to crash when stopping itself using FspFileSystemStopDispatcher; this problem has been rectified. (See GitHub issue #369.)

  • [FIX] Fixed a problem in the FUSE layer where in some rare circumstances the release operation could be called with an uninitialized path argument. (See GitHub issue winfsp/cgofuse#58 and commit f51bdef).

  • [FIX] Fixed a potential problem when launching file system instances using the Launcher. (See GitHub issue #356.)

  • [FIX] The winfsp.h header no longer defines FILE_FULL_EA_INFORMATION when compiled under mingw. This is because the mingw tool chain already includes a definition of this type. (GitHub PR #371. Thanks @ lemourin.)

WinFsp 2021.1 Beta3

08 Nov 16:03
v1.10B3
90d67bc
Compare
Choose a tag to compare
WinFsp 2021.1 Beta3 Pre-release
Pre-release

Download WinFsp

VirusTotal Scan Results

CHANGES SINCE WINFSP 2021

  • [NEW] Official Windows 11 support.

  • [NEW] WinFsp has had its Delete functionality redesigned in release 2021.1 Beta3. This redesign unifies all Windows file deletion semantics under a single file system operation that also supports the new POSIX semantics introduced in Windows 10 Redstone 1. The new Delete design is recommended for new file systems, however existing file systems will continue to work without any changes. See https://github.com/billziss-gh/winfsp/wiki/WinFsp-Delete-Redesign for more information. PLEASE NOTE: I have discovered a problem with the current implementation of POSIX unlink in this Beta of WinFsp, which unfortunately may invalidate the new Delete design. Please hold off on adopting this design for now.

  • [NEW] Support for FileDispositionInformationEx and FileRenameInformationEx has been added (see above).

  • [NEW] WinFsp now supports rebranding of the build products. This is primarily useful to commercial licensees. See https://github.com/billziss-gh/winfsp/wiki/WinFsp-Rebranding for more information.

  • [NEW] WinFsp-FUSE has a new capability FSP_FUSE_CAP_DELETE_ACCESS. If this capability is specified WinFsp will call the FUSE access method with the WinFsp-specific flag FSP_FUSE_DELETE_OK to check whether the deletion should be allowed. This can be used to disallow deletion of files and directories that would normally be allowed under the FUSE/POSIX model.

  • [NEW] WinFsp-FUSE has a new method for determining file access in the case where the user's primary SID (Windows Security Identifier) and group SID are the same (for example, this can happen when someone uses a Microsoft account as their primary login).

    • Previously when the user SID and group SID were the same WinFsp-FUSE looked at the UNIX permissions for the owner and the UNIX permissions for the group and used the MOST restrictive permissions, which often resulted in inadvertent "access denied" errors. (For example, if the owner permission was rw- and the group permission was --- the result was --- and therefore access denied).

    • Going forward this behavior will change. The user and group mode permissions will not be considered together even in the case where the user SID and group SID are the same. This will resolve the access denied errors.

    • However to preserve backward compatibility (there might be some file systems that rely on the old behavior) we will do so in stages. For release v1.10 (2021.1) there is a new registry setting under HKLM\SOFTWARE\WinFsp (or HKLM\SOFTWARE\WOW6432Node\WinFsp on a 64-bit system) called DistinctPermsForSameOwnerGroup, which if set to 1 will direct WinFsp-FUSE to use the new behavior. The default value is 0 which directs WinFsp-FUSE to use the old behavior. This default will change in a future release.

  • [NEW] A new registry setting under HKLM\SOFTWARE\WinFsp (or HKLM\SOFTWARE\WOW6432Node\WinFsp on a 64-bit system) called MountDoNotUseLauncher has been introduced, which if set to 1 will disable the use of the Launcher during mounting. The default value is 0 which allows the use of the Launcher during mounting in those rare cases when necessary. (In general the Launcher is not necessary for mounting. However when running a file system in the Windows Service context (session 0) under an account that is not LocalSystem (e.g. NT AUTHORITY\NETWORK SERVICE), the Launcher is used to create global drives.)

  • [FIX] File share access when overwriting a file (e.g. when using TRUNCATE_EXISTING) is now done in a manner compatible with NTFS (previously there were cases when overwriting a file where behavior diverged from the NTFS one). (See GitHub issue #364.)

  • [FIX] The FSD will now report a file's reparse tag in the EaSize field of FILE_FULL_DIR_INFORMATION and friends. This fixes problems such as cmd.exe not recognizing symlinks in a dir command. (See GitHub issue #380.)

  • [FIX] Fixed a problem in the file system shutdown protocol which resolves an occasional access violation in the user mode file system process. Previously it was possible for a file system to crash when stopping itself using FspFileSystemStopDispatcher; this problem has been rectified. (See GitHub issue #369.)

  • [FIX] Fixed a problem in the FUSE layer where in some rare circumstances the release operation could be called with an uninitialized path argument. (See GitHub issue winfsp/cgofuse#58 and commit f51bdef).

  • [FIX] Fixed a potential problem when launching file system instances using the Launcher. (See GitHub issue #356.)

  • [FIX] The winfsp.h header no longer defines FILE_FULL_EA_INFORMATION when compiled under mingw. This is because the mingw tool chain already includes a definition of this type. (GitHub PR #371. Thanks @ lemourin.)

WinFsp 2021.1 Beta2

13 Jun 20:34
v1.10B2
068270f
Compare
Choose a tag to compare
WinFsp 2021.1 Beta2 Pre-release
Pre-release

Download WinFsp

VirusTotal Scan Results

CHANGES SINCE WINFSP 2021

  • [NEW] WinFsp now supports rebranding of the build products. This is primarily useful to commercial licensees. See https://github.com/billziss-gh/winfsp/wiki/WinFsp-Rebranding for more information.

  • [NEW] WinFsp-FUSE has a new method for determining file access in the case where the user's primary SID (Windows Security Identifier) and group SID are the same (for example, this can happen when someone uses a Microsoft account as their primary login).

    • Previously when the user SID and group SID were the same WinFsp-FUSE looked at the UNIX permissions for the owner and the UNIX permissions for the group and used the MOST restrictive permissions, which often resulted in inadvertent "access denied" errors. (For example, if the owner permission was rw- and the group permission was --- the result was --- and therefore access denied).

    • Going forward this behavior will change. The user and group mode permissions will not be considered together even in the case where the user SID and group SID are the same. This will resolve the access denied errors.

    • However to preserve backward compatibility (there might be some file systems that rely on the old behavior) we will do so in stages. For release v1.10 (2021.1) there is a new registry setting under HKLM\SOFTWARE\WinFsp (or HKLM\SOFTWARE\WOW6432Node\WinFsp on a 64-bit system) called DistinctPermsForSameOwnerGroup, which if set to 1 will direct WinFsp-FUSE to use the new behavior. The default value is 0 which directs WinFsp-FUSE to use the old behavior. This default will change in a future release.

  • [FIX] File share access when overwriting a file (e.g. when using TRUNCATE_EXISTING) is now done in a manner compatible with NTFS (previously there were cases when overwriting a file where behavior diverged from the NTFS one). (See GitHub issue #364.)

  • [FIX] Fixed a problem in the file system shutdown protocol which resolves an occasional access violation in the user mode file system process. Previously it was possible for a file system to crash when stopping itself using FspFileSystemStopDispatcher; this problem has been rectified. (See GitHub issue #369.)

  • [FIX] Fixed a problem in the FUSE layer where in some rare circumstances the release operation could be called with an uninitialized path argument. (See GitHub issue winfsp/cgofuse#58 and commit f51bdef).

  • [FIX] The winfsp.h header no longer defines FILE_FULL_EA_INFORMATION when compiled under mingw. This is because the mingw tool chain already includes a definition of this type. (GitHub PR #371. Thanks @lemourin.)

WinFsp 2021.1 Beta1

08 Jun 18:45
v1.10B1
efcc82b
Compare
Choose a tag to compare
WinFsp 2021.1 Beta1 Pre-release
Pre-release

Download WinFsp

VirusTotal Scan Results

CHANGES SINCE WINFSP 2021

  • [NEW] WinFsp now supports rebranding of the build products. This is primarily useful to commercial licensees. See https://github.com/billziss-gh/winfsp/wiki/WinFsp-Rebranding for more information.

  • [NEW] WinFsp-FUSE has a new method for determining file access in the case where the user's primary SID (Windows Security Identifier) and group SID are the same (for example, this can happen when someone uses a Microsoft account as their primary login).

    • Previously when the user SID and group SID were the same WinFsp-FUSE looked at the UNIX permissions for the owner and the UNIX permissions for the group and used the MOST restrictive permissions, which often resulted in inadvertent "access denied" errors. (For example, if the owner permission was rw- and the group permission was --- the result was --- and therefore access denied).

    • Going forward this behavior will change. The user and group mode permissions will not be considered together even in the case where the user SID and group SID are the same. This will resolve the access denied errors.

    • However to preserve backward compatibility (there might be some file systems that rely on the old behavior) we will do so in stages. For release v1.10 (2021.1) there is a new registry setting under HKLM\SOFTWARE\WinFsp (or HKLM\SOFTWARE\WOW6432Node\WinFsp on a 64-bit system) called DistinctPermsForSameOwnerGroup, which if set to 1 will direct WinFsp-FUSE to use the new behavior. The default value is 0 which directs WinFsp-FUSE to use the old behavior. This default will change in a future release.

  • [FIX] File share access when overwriting a file (e.g. when using TRUNCATE_EXISTING) is now done in a manner compatible with NTFS (previously there were cases when overwriting a file where behavior diverged from the NTFS one). (See GitHub issue #364.)

  • [FIX] Fixed a problem in the file system shutdown protocol which resolves an occasional access violation in the user mode file system process. Previously it was possible for a file system to crash when stopping itself using FspFileSystemStopDispatcher; this problem has been rectified. (See GitHub issue #369.)

  • [FIX] The winfsp.h header no longer defines FILE_FULL_EA_INFORMATION when compiled under mingw. This is because the mingw tool chain already includes a definition of this type. (GitHub PR #371. Thanks @lemourin.)