Skip to content

Releases: dokan-dev/dokany

2.0.2.1000

06 Feb 18:10

Choose a tag to compare

This is a patch version.

It includes different library and kernel pulling thread fixes, a library crash and proper DokanResetTimeout support.

Please see changelog for more details.
And again here is how to migrate an existing > 1.1.0 filesystem to 2.0.0.

Thanks to all the contributors as always (@nikola-sh) !!!

2.0.1.2000

28 Jan 14:31

Choose a tag to compare

This is a patch version.

Even if this is only a patch version that polish the v2 first release and finally makes it possible to have Dokan v1 and v2 installed side to side... the DokanFCB storage was switched from a simple list O(n) to an Adelson-Velsky/Landis (AVL) table log(n).
It will not make much difference when a few files are open but if you had 16k files opened, the kernel would only make ~4 string compared instead of 16k which is 🚀 during CreateFile.

Benchmark that compare this version against 1.5.1.1000 in multiple scenarios here

Please see changelog for more details.
And again here is how to migrate an existing > 1.1.0 filesystem to 2.0.0.

Thanks to all the contributors as always (@ATRiiX) !!!

2.0.1.1000

24 Jan 03:45

Choose a tag to compare

2.0.0.2000

01 Jan 20:51

Choose a tag to compare

This is a major version.

We have finally moved to version 2!

Introduce Thread & Memory pool to process and pull events by batch.

This is highly based on #307 but without the async logic. The reason is to avoid using the kernel NotificationLoop that was dispatching requests to workers (userland thread) sequentially since wake up workers have a high cost of thread context switch.
The previous logic is nice when you want workers to be async (like #307) but as we have threads (and now even a thread poll) dedicated to pull and process events, there is no issue to make them synchronously wait in kernel for new events and directly take them from the pending request list.

The library will start with a single main thread that pulls events by batch and dispatches them to the thread pool but keeps the last one to be executed (or the only one) to be executed on the same thread. Each thread waken will do the same and pull new events at the same time. If none is returned, the thread goes back to sleep and otherwise does the same as the main thread (dispatch and process...etc).
Only the main thread waits indefinitely for new events while others wait 100ms in the kernel before returning back to userland.Batching events, thread and memory pool offers a great flexibility of resources especially on heavy load. Thousands of lines of code were changed in the library (thanks again to @Corillian contribution of full rewrite) but the public API hasn't changed much.

After running multiple benchmarks against memfs, sequential requests are about +10-35% faster but in the real world with the thread pool the perf are way above. @Corillian full rewrite of FindFiles actually improved an astonishing +100-250%...crazy 😱

Much more was added, please see changelog
See here how to migrate an existing > 1.1.0 filesystem to 2.0.0.

Thanks to all the contributors as always (@ATRiiX) !!! and big thanks again to @Corillian who has waited years to get his work merged!

2.0.0.1000

31 Dec 17:26

Choose a tag to compare

1.5.1.1000

26 Nov 19:19
47d2b30

Choose a tag to compare

This is a minor version.

The version focus on Kernel stability and add a new option to the mirror sample.
More details here: changelog

Thanks to all the contributors as always!!!

1.5.0.3000

31 May 13:29

Choose a tag to compare

This is a minor version.

This version focuses on Kernel changes:

  • Messages between Kernel and Library can now be sent by batch. We are looking for help to implement it in the library..
  • All the kernel logs have been rewritten!!! There is even an option to send them to userland DOKAN_EVENT_DISPATCH_DRIVER_LOGS (needs the batching option to properly work)!
  • IOCTL was changed to FSCTL to reduce conflict with apps and antivirus.

There is much more here: changelog

Important note here: Microsoft has made some changes regarding driver signature for old Windows version (7 & 8.1) see here. This version no longer has the driver signed by Microsoft and us, it only has the Microsoft one as suggested by the article. Please report any issue that you might face. The installer now has the KB4474419 dependency on Windows 7.

Thanks to all the contributors as always!!!

1.5.0.2000

26 May 16:13

Choose a tag to compare

This version was overtaken by 1.5.0.3000

1.5.0.1000

25 May 14:42

Choose a tag to compare

v1.5.0.1000

Updated signature script to support new Microsoft requirements

1.4.1.1000

14 Jan 12:51

Choose a tag to compare

This is a patch version.

It mostly includes fixes (one that reduce antivirus incompatibility) from the community and the addition of two new mount flags: DOKAN_OPTION_CASE_SENSITIVE and DOKAN_OPTION_ENABLE_UNMOUNT_NETWORK_DRIVE.
See the changelog

Thanks to all the contributors as always!!!