-
[NEW] WinFsp now supports mounting as directory using the Mount Manager. Use the syntax
\\.\C:\Path\To\Mount\Directory
. -
[NEW] A new registry setting
MountUseMountmgrFromFSD
has been added. See WinFsp Registry Settings for details. -
[BUILD] Product configuration for the relative paths to the File System Driver, Network Provider and EventLog is now possible via the file
build.version.props
located inbuild\VStudio
.
-
[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 originalpassthrough
file system that was developed for education purposes only. -
[NEW] Many performance improvements:
-
A new
PostDispositionForDirOnly
setting has been added toFSP_FSCTL_VOLUME_PARAMS
. This allows a file system to declare that it does not want to seeSetInformation/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
(orHKLM\SOFTWARE\WOW6432Node\WinFsp
on a 64-bit system) calledMountBroadcastDriveChange
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 theWM_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 installationbin
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 filebuild.version.props
located inbuild\VStudio
. This file was previously namedversion.properties
.
-
[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 originalpassthrough
file system that was developed for education purposes only. -
[NEW] Many performance improvements:
-
A new
PostDispositionForDirOnly
setting has been added toFSP_FSCTL_VOLUME_PARAMS
. This allows a file system to declare that it does not want to seeSetInformation/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
(orHKLM\SOFTWARE\WOW6432Node\WinFsp
on a 64-bit system) calledMountBroadcastDriveChange
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 theWM_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 installationbin
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 filebuild.version.props
located inbuild\VStudio
. This file was previously namedversion.properties
.
-
[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 originalpassthrough
file system that was developed for education purposes only. -
[NEW] Many performance improvements:
-
A new
PostDispositionForDirOnly
setting has been added toFSP_FSCTL_VOLUME_PARAMS
. This allows a file system to declare that it does not want to seeSetInformation/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
(orHKLM\SOFTWARE\WOW6432Node\WinFsp
on a 64-bit system) calledMountBroadcastDriveChange
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 theWM_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 installationbin
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 filebuild.version.props
located inbuild\VStudio
. This file was previously namedversion.properties
.
-
[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 toFSP_FSCTL_VOLUME_PARAMS
. This allows a file system to declare that it does not want to seeSetInformation/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 originalpassthrough
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 filebuild.version.props
located inbuild\VStudio
. This file was previously namedversion.properties
.
-
[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 originalpassthrough
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 filebuild.version.props
located inbuild\VStudio
. This file was previously namedversion.properties
.
Prior changes are recorded in doc/archive/Changelog-upto-v1.10.asciidoc
.