Windows System Software -- Consulting, Training, Development -- Unique Expertise, Guaranteed Results

Home NTFSD

Before Posting...

Please check out the Community Guidelines in the Announcements and Administration Category.

More Info on Driver Writing and Debugging


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/


Cached/non-cached io for shadow copy and encryption filter

Sergey_PisarevSergey_Pisarev Member - All Emails Posts: 284

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 ?

Comments

  • Scott_Noone_(OSR)Scott_Noone_(OSR) Administrator Posts: 3,650

    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

  • Sergey_PisarevSergey_Pisarev Member - All Emails Posts: 284

    Thank you Scott !

    Now I also need to read about intel Optane.
    Nothing is ever easy in windows fs world :)

  • Scott_Noone_(OSR)Scott_Noone_(OSR) Administrator Posts: 3,650

    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

Sign In or Register to comment.

Howdy, Stranger!

It looks like you're new here. Sign in or register to get started.

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 13-17 May 2024 Live, Online
Developing Minifilters 1-5 Apr 2024 Live, Online
Internals & Software Drivers 11-15 Mar 2024 Live, Online
Writing WDF Drivers 26 Feb - 1 Mar 2024 Live, Online