From 5c962c8fc539784f4af2708bb09407091ff6f89d Mon Sep 17 00:00:00 2001 From: Bill Zissimopoulos Date: Wed, 15 Nov 2017 15:08:26 -0800 Subject: [PATCH] doc: includes notes on backwards compat testing --- doc/WinFsp-Testing.asciidoc | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/doc/WinFsp-Testing.asciidoc b/doc/WinFsp-Testing.asciidoc index 6f058bd4..84c55368 100644 --- a/doc/WinFsp-Testing.asciidoc +++ b/doc/WinFsp-Testing.asciidoc @@ -95,7 +95,7 @@ if (!Success) In Release builds the +DEBUGTEST(90)+ macro will evaluate to +TRUE+ and the Cache Manager will be asked directly via +CcCanIWrite+ whether a WRITE should be deferred. In Debug builds the +DEBUGTEST(90)+ macro will evaluate to +FALSE+ sometimes (10% of the time) and the WRITE will be deferred, thus allowing us to test the retry code path. -== Compatibility Testing +== NTFS Compatibility Testing WinFsp allows the creation of user mode file systems that exhibit behavior similar to NTFS. This means that Windows applications that use such a file system should not be able to tell the difference between NTFS and the WinFsp-based file system. OTOH specialized applications (such as Defrag) will not work properly on WinFsp file systems. @@ -123,6 +123,12 @@ The goal of performance testing is to evaluate and understand how software behav WinFsp uses a tool called fsbench for this purpose. Fsbench is able to test specific scenarios, for example: "how long does it take to delete 1000 files?" Fsbench has been very useful for WinFsp and has helped improve its performance: in one situation it helped identify quadratic behavior with the MEMFS ReadDirectory operation, in another situation it helped fine tune the performance of the WinFsp I/O Queue. +== Backwards Compatibility testing + +As the WinFsp API's mature it is important to verify that they remain backwards compatible with existing file system binaries. For this purpose binaries that have been compiled against earlier versions of WinFsp are used to verify that they run correctly against the latest version. + +For example, in version v1.2B3 of WinFsp an +FSP_FUSE_CAP_STAT_EX+ FUSE extension was introduced. This can change the layout of +struct fuse_stat+ and is therefore a potentially dangerous change. To test against inadvertent breakage a FUSE file system binary that was compiled against v1.2B2 is regularly used to verify backwards compatibility. + == Code Analysis WinFsp is regularly run under the Visual Studio's Code Analyzer. Any issues found are examined and if necessary acted upon.