Thanks to OSR for the article of the same name and another article on
oplocks. I am working on a filter driver and currently I handle my rdr files
non-cached. Naturally, this method is not optimal and I hope to clarify some
concerns in order to make the transformation.
- Firstly, when does a oplock level becomes changed? Does it require the
current client to agree to change before the change can be effected? Can an
oplock change happen at any IRP at any time? - If a filter driver acquire the eresource exclusive, this means that other
threads cannot modify the FcbState, correct? But the rdr can still modify
the FcbState within the same thread, correct? Then my concern is that when I
pass the thread down to the rdr, it can still respond to a oplock break. Is
this concern correct? - I would only need to check the FcbState at read & write for user cached
requests and adjust the caching accordingly, correct?
Thanks,
Tian