diff --git a/CHANGELOG.md b/CHANGELOG.md index 311e6f82..b31674ce 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,6 +3,23 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](http://keepachangelog.com/) and this project adheres to [Semantic Versioning](http://semver.org/). +## [2.0.3.1000] - 2021-02-06 + +### Added +- Library - Add 16-128k IoBatch/EventResult pool for read and write. + +### Changed +- MemFS - Replace `std::mutex` by `std::shared_mutex`. +- Library - Detect and use the best number of pulling threads with a minimum of two (unless single thread mode enabled) and a max of 16. Above 16, the io batch is enabled to use the extra threads to execute the possible extra request pulled. +- Library - Expensive `ZeroMemory` on large Read and Write buffers were removed. +- Library - Use absolute path for `NetworkProvider` registration `ProviderPath`. + +### Fixed +- Installer - Change driver `GUID` to avoid installer to uninstall v1 files during the installation. +- Library - Fix incorrect lock hold when manipulating IoBatch. +- Library - Add lock to avoid `Unmounted` callback to be called multiple times (each pulling thread). +- MemFS - Fix double instance free on `CTRL+C`. + ## [2.0.2.1000] - 2021-02-06 ### Fixed diff --git a/Dokan.props b/Dokan.props index e3a9dc97..1acad530 100644 --- a/Dokan.props +++ b/Dokan.props @@ -3,7 +3,7 @@ 2 - 2.0.2 + 2.0.3 diff --git a/README.md b/README.md index 7e12c218..3fd47205 100644 --- a/README.md +++ b/README.md @@ -34,15 +34,15 @@ for more information. The API has then again changed over time in [1.1.0](https://github.com/dokan-dev/dokany/wiki/Update-Dokan-1.0.0-application-to-Dokany-1.1.0) and [2.0.0](https://github.com/dokan-dev/dokany/wiki/Update-Dokan-1.1.0-application-to-Dokany-2.0.0). -## Benchmark v1.5.1.1000 vs v2.0.1.2000 -A benchmark that is testing multiple scenarios repeaditly and sequentially was run 5 times against the `memfs` sample of v1.5.1.1000 and v2.0.1.2000 in an idle environment to precise results. +## Benchmark v1.5.1.1000 vs v2.0.3.1000 +A benchmark that is testing multiple scenarios repeaditly and sequentially was run 5 times against the `memfs` sample of v1.5.1.1000 and v2.0.3.1000 in an idle environment to precise results. The detail results can be seen in this spreadsheet [here](https://docs.google.com/spreadsheets/d/1zdJ6fmP_sqUGCM7SLtTle9N3JLyBOEAMRlwDLfUqm4Q/edit?usp=sharing). As better threading and memory poll were added in v2, it is expected that concurrent scenarios (like those tests) would be even more highly improved. A sample of the results: ``` -Create New | +13.55% | List | +60.69% | GetAttributes | +48.78% | Read | +16-28% | -Open/Overwrite | +153.41% | ListExactFile | +131.91% | SetAttributes | +120.91% | Write | +2-24% | +Create New | +13.55% | List | +60.69% | GetAttributes | +48.78% | Read | +18-42% | +Open/Overwrite | +153.41% | ListExactFile | +131.91% | SetAttributes | +120.91% | Write | +10-32% | RandomOpenClose | +173.05% | | | Delete | +90.83% | | | ``` diff --git a/appveyor.yml b/appveyor.yml index 6a46151f..11f1c228 100644 --- a/appveyor.yml +++ b/appveyor.yml @@ -13,7 +13,7 @@ WLK_INST_CACHE: '%DOKAN_CI_CACHE%\wlk_inst' DOKAN_MAIN_BUILD_JOB_NAME: "Image: Visual Studio 2019; Configuration: All" - version: 2.0.2-{build} + version: 2.0.3-{build} configuration: - All - SonarQube diff --git a/documentations/Doxyfile b/documentations/Doxyfile index f438dabb..3625dd7b 100644 --- a/documentations/Doxyfile +++ b/documentations/Doxyfile @@ -38,7 +38,7 @@ PROJECT_NAME = Dokan # could be handy for archiving the generated documentation or if some version # control system is used. -PROJECT_NUMBER = 2.0.2 +PROJECT_NUMBER = 2.0.3 # Using the PROJECT_BRIEF tag one can provide an optional one line description # for a project that appears at the top of each page and should give viewer a diff --git a/dokan/dokan.h b/dokan/dokan.h index df98cfa9..f8eee384 100644 --- a/dokan/dokan.h +++ b/dokan/dokan.h @@ -56,7 +56,7 @@ extern "C" { /** @{ */ /** The current Dokan version (200 means ver 2.0.0). \ref DOKAN_OPTIONS.Version */ -#define DOKAN_VERSION 202 +#define DOKAN_VERSION 203 /** Minimum Dokan version (ver 2.0.0) accepted. */ #define DOKAN_MINIMUM_COMPATIBLE_VERSION 200 /** Driver file name including the DOKAN_MAJOR_API_VERSION */ diff --git a/dokan/dokan.rc b/dokan/dokan.rc index 1ed99320..0c6a8352 100644 --- a/dokan/dokan.rc +++ b/dokan/dokan.rc @@ -16,8 +16,8 @@ // VS_VERSION_INFO VERSIONINFO - FILEVERSION 2,0,2,1000 - PRODUCTVERSION 2,0,2,1000 + FILEVERSION 2,0,3,1000 + PRODUCTVERSION 2,0,3,1000 FILEFLAGSMASK 0x3fL #ifdef _DEBUG FILEFLAGS 0x1L @@ -34,12 +34,12 @@ BEGIN BEGIN VALUE "CompanyName", "Dokan Project" VALUE "FileDescription", "Dokan Library" - VALUE "FileVersion", "2.0.2.1000" + VALUE "FileVersion", "2.0.3.1000" VALUE "InternalName", "dokan.dll" VALUE "LegalCopyright", "Copyright (C) 2021" VALUE "OriginalFilename", "dokan.dll" VALUE "ProductName", "Dokan" - VALUE "ProductVersion", "2.0.2.1000" + VALUE "ProductVersion", "2.0.3.1000" END END BLOCK "VarFileInfo" diff --git a/dokan_fuse/src/dokanfuse.rc b/dokan_fuse/src/dokanfuse.rc index 99060340..79115d8b 100644 --- a/dokan_fuse/src/dokanfuse.rc +++ b/dokan_fuse/src/dokanfuse.rc @@ -16,8 +16,8 @@ // VS_VERSION_INFO VERSIONINFO - FILEVERSION 2,0,2,1000 - PRODUCTVERSION 2,0,2,1000 + FILEVERSION 2,0,3,1000 + PRODUCTVERSION 2,0,3,1000 FILEFLAGSMASK 0x3fL #ifdef _DEBUG FILEFLAGS 0x1L @@ -34,12 +34,12 @@ BEGIN BEGIN VALUE "CompanyName", "Dokan Project" VALUE "FileDescription", "Dokan Fuse library" - VALUE "FileVersion", "2.0.2.1000" + VALUE "FileVersion", "2.0.3.1000" VALUE "InternalName", "dokanfuse.dll" VALUE "LegalCopyright", "Copyright (C) 2021" VALUE "OriginalFilename", "dokanfuse.dll" VALUE "ProductName", "Dokan" - VALUE "ProductVersion", "2.0.2.1000" + VALUE "ProductVersion", "2.0.3.1000" END END BLOCK "VarFileInfo" diff --git a/dokan_np/dokan_np.rc b/dokan_np/dokan_np.rc index 2ac4b0a0..e6d0df03 100644 --- a/dokan_np/dokan_np.rc +++ b/dokan_np/dokan_np.rc @@ -16,8 +16,8 @@ // VS_VERSION_INFO VERSIONINFO - FILEVERSION 2,0,2,1000 - PRODUCTVERSION 2,0,2,1000 + FILEVERSION 2,0,3,1000 + PRODUCTVERSION 2,0,3,1000 FILEFLAGSMASK 0x3fL #ifdef _DEBUG FILEFLAGS 0x1L @@ -34,12 +34,12 @@ BEGIN BEGIN VALUE "CompanyName", "Dokan Project" VALUE "FileDescription", "Dokan Network Provider" - VALUE "FileVersion", "2.0.2.1000" + VALUE "FileVersion", "2.0.3.1000" VALUE "InternalName", "dokan.dll" VALUE "LegalCopyright", "Copyright (C) 2021" VALUE "OriginalFilename", "dokannp.dll" VALUE "ProductName", "Dokan" - VALUE "ProductVersion", "2.0.2.1000" + VALUE "ProductVersion", "2.0.3.1000" END END BLOCK "VarFileInfo" diff --git a/dokan_wix/version.xml b/dokan_wix/version.xml index dc956da5..6a7ebf68 100644 --- a/dokan_wix/version.xml +++ b/dokan_wix/version.xml @@ -1,13 +1,13 @@ - + - + - + diff --git a/sys/dokan.rc b/sys/dokan.rc index 3fd83c48..5d894776 100644 --- a/sys/dokan.rc +++ b/sys/dokan.rc @@ -16,8 +16,8 @@ // VS_VERSION_INFO VERSIONINFO - FILEVERSION 2,0,2,1000 - PRODUCTVERSION 2,0,2,1000 + FILEVERSION 2,0,3,1000 + PRODUCTVERSION 2,0,3,1000 FILEFLAGSMASK 0x3fL #ifdef _DEBUG FILEFLAGS 0x1L @@ -34,12 +34,12 @@ BEGIN BEGIN VALUE "CompanyName", "Dokan Project" VALUE "FileDescription", "Dokan Driver" - VALUE "FileVersion", "2.0.2.1000" + VALUE "FileVersion", "2.0.3.1000" VALUE "InternalName", "dokan.sys" VALUE "LegalCopyright", "Copyright (C) 2021" VALUE "OriginalFilename", "dokan.sys" VALUE "ProductName", "Dokan" - VALUE "ProductVersion", "2.0.2.1000" + VALUE "ProductVersion", "2.0.3.1000" END END BLOCK "VarFileInfo"