File caching while "oplocks=False", black magic or what?

Steve Litt slitt at troubleshooters.com
Sat Nov 27 22:26:36 GMT 1999


Just for fun can you add strict sync=yes, and see whether the symptom changes?

Thanks

Steve Litt


At 09:02 AM 11/28/1999 +1100, Yannis Tzavellas wrote:
>   NOTE: I have definitely put "oplocks=False" in my smb.conf.  I use a
>program running on 2 machines (win95 and win98) to access data on my samba
>server (samba 2.0.3-8, on Redhat 6.0). The programs, when accessing data on
>the server, go like this:             int put_record(..) 
>                            { 
>              if (lock(...)) { 
>                 if (write(...)) { 
>                                ... 
>                       } else ... 
>                     } else ... 
>                            }  i.e they simply lock the file and perform a
>read or write on it.  Files are flushed after writing. So whenever anyone
>of the 2 windows clients changes a record, this change is actually stored
>in samba. (A linux-version of the "client" program that runs on the Linux
>box, sees the change.)  BUT this does't work the other way around: A change
>performed by the linux-client IS NOT SEEN by any of the windows clients.
>They behave lazily on reading (as if they are caching data).  /* 
>After 2 days of debugging, reading docs, drinking coffe and NOT eating
>pizza (or almost anything), 
>.... I finaly find "a way" to get rid of the problem. But what a way it
is... 
>*/  The cure I used is absolutely incomprehensible to me:  ==>> I just
>added a little delay (?) loop at the beginning of the 
>==>> get_record() function as in :  int get_record(..) 
>{ 
>  // this little delay (?) loop seems to cure the problem 
> <4; i++) { // 4 or more works, 3 does't ! 
>           // fh = the file handle 
>                 // no matter what. I read 10 bytes 
>  } 
>  // nothing else touched anywhere...    if (lock(...)) { 
>    if (read(...)) { 
>      .... 
>    } else ... 
>  } else ... 
>}  and after this everything seems to work fine !  So my questions are: 
>1. Why windows clients insist to cache data despite of "oplocks=False" ? 
>2. Does anybody understand what is going on with my "solution" and how it
>actualy manages to force the clients NOT to cache data?  Thanks ! 
>  



More information about the samba mailing list