Windows System Software -- Consulting, Training, Development -- Unique Expertise, Guaranteed Results
The free OSR Learning Library has more than 50 articles on a wide variety of topics about writing and debugging device drivers and Minifilters. From introductory level to advanced. All the articles have been recently reviewed and updated, and are written using the clear and definitive style you've come to expect from OSR over the years.
Check out The OSR Learning Library at: https://www.osr.com/osr-learning-library/
Hello !
I am reading https://community.osr.com/discussion/280359/minifilter-not-intercepting-irp-mj-write-when-a-file-is-copied
Slava Imameev says that it is totally ok for FS to convert cached io to non-cached. In this case filter won’t see this data written to disk with paging io.
It raises some concerns.
1) for shadow copy filter. If I am not writing an isolation filter, what is my best course of action to be as correct as possible ? Copy all writes (including cached ones) to my shadow copy ?
2) for encrypting filter. Let’s say io manager calls fast io write routine for highest filter. My encrypting filter skips this write since data in cache should be plaintext. But fs decides to write this data directly to volume. Non-encrypted data stored on volume. Without writing isolation filter, can this problem be solved correctly ?
Upcoming OSR Seminars | ||
---|---|---|
OSR has suspended in-person seminars due to the Covid-19 outbreak. But, don't miss your training! Attend via the internet instead! | ||
Kernel Debugging | 16-20 October 2023 | Live, Online |
Developing Minifilters | 13-17 November 2023 | Live, Online |
Internals & Software Drivers | 4-8 Dec 2023 | Live, Online |
Writing WDF Drivers | 10-14 July 2023 | Live, Online |
Comments
It's common to see this behavior on the client side of the network though I've never seen a local FSD do it*. So, if you care about doing your shadow copy work for network shares on the client side you need to account for this somehow. Same with encryption: if you do the enc/dec on the client you have to worry about not ever seeing a paging I/O. The only real answers are to either do the work on the server side or Isolate on the client.
*Persistent Memory/DAX is an exception here. In that case your cached I/Os go directly to the device and you will not ever see a paging I/O. That's a very specific technology though and always requires special consideration.
-scott
OSR
Thank you Scott !
Now I also need to read about intel Optane.
Nothing is ever easy in windows fs world
The PMEM stuff is very cool but still niche. It's also quite pricey...512GB module is available for around $18,000USD (hint, hint to anyone looking for gift ideas
)
Note that these devices can and do run in "compatibility mode" where they behave like a normal storage device in Windows (paging I/Os and all). Kind of a waste though in terms of achieving the maximum perf benefit of the technology.
-scott
OSR