The Samba-Bugzilla – Bug 5980
Race condition when granting level2 oplocks can cause break notify to be missed.
Last modified: 2013-08-16 10:51:42 UTC
A client that views a file and sees all entries having a level two oplock
(fake or not) should get a level two oplock fake or real depending on his
now when a client decides to break all level2 oplocks he send everyone an aync
oplock break under the tdb lock (including to himself) then he frees the tdb
lets say some open request waited on that tdb lock, the request cant know a
downgrade had happend so it will get a level two oplock, but no other owner
will notify it on changes.
This is solved basicly by changing the share entry data under the tdb lock,
before or after sending the oplock break requests. (the tdb lock is what
here there are 3 options :
1. have a new state and keep the reguler flow the same (sending the async
oplock to breaker client as an async event)
2. send the client the oplock break request from the release function and
update the share entry database.
3. send the client a break and update all other share entries also.
Number one is my orignal suggestion, but number two seems as the best solution
i will try to look into the code of the samba tourte suit and see if i can
Itay Dar <Itay.Dar@exanet.com>
Created attachment 3817 [details]
Patch for 3.2.x and above.
this one seems to be pushed to 3.2 (3a8ca840) and above. Can we be sure the problem is fixed and the bug can be closed?