Server: linux 2.4.36.6 samba 3.0.32, (kernel oplocks=no oplocks=no ) *--------- Client 1: linux 2.6.28.7 cifs 1.55 OplockEnabled=0 (dosemu 1.2.2 lredir a cifs mount) Cliente 2: windows 2000 SP4 *--------- Both clients add records simultaneously on the server, with a simple program in FoxPro DOS, but does not lock well records, and overwrites everything. If I do that with 2 windows client, everything works fine. If I access directly (without cifs mount)to the file(dbf table) in the server with DOSEMU everything works fine. This is the Foxpro program's that use the clients. In linux replace "windows client" with "linux client" *-- close all use f:\temp\costo shared in 0 for CONTA=1 to 30000 sele costo append blank if rlock() replace number with CONTA replace client with "windows client "+str(CONTA,5) unlock all endif flush endfor *-- Thanks
what sort of locking does foxpro use? POSIX or BSD locking?
I don't know. Foxpro just use bytes range blocking. The problem appears when foxpro run under linux-dosemu opening tables in a cifs mount. Cifs seems to save all cache data from the local client to the server, and overwrites the data from others clients.
Sorry for the long delay in response. cifs.ko has a rather broken caching model by default. Does this work any better if you use a fairly recent kernel and mount with "-o strictcache" ?
Hellooo Retest with foxpro program. Server: linux 32 bits 2.6.33.4 samba 3.5.10, (default options) *--------- Client 1: linux 32 bits 2.6.38.8 (dosemu 1.4.0 lredir a cifs mount) Client 2: windows 7 64 bits I test without strictcache -> corrupt data and with strictcache -> works fine. It´s save 60000 records as expect. I can close this issue. Thanks
Awesome. Thanks for testing it. I'm in the process of trying to make strictcache the default as well.