Steve Kuryachy
2005-Apr-15 03:57 UTC
[Samba] Multi-user databases (DOS application) in WIndows XP and Windows 2k file locking problem
Hello all! I discover a strange thing. We use and develop DOS financial accounting application, written on Xbase (formerly known as Clipper). This application agressively uses of file sharing and locking (byte-range and all possible for DOS combinations), creates and uses huge amount of index (NTX) and Dbase III (DBF) files on network shared resource. Network clients are Windows 98se, Windows Millennium, Windows 2k (latest SP applied) and Windows XP (latest SP applied) In case of Windows 98 or Me, file lock operations seems to be good. When application creates NTX (index) files, other users can open and read and possibly update this files, but cannot overwrite or delete them. THis is correct behavior. Also, users with our application can read and edit some .DBF's concurrently. All concurrent edits and updates are goes fine (in the order of byte-range locking). But when I start this application on Windows 2k or XP in their "premium" DOS virtual machine (ntvdm), all things goes bad. Applications on the stations, which are runs under Win2k or XP also create NTX or DBF files as it needs. But other user (from ANY client (Win98/Me, 2k or XP) may freely overwrite "locked" NTX files and delete them. Seems what this files are not locked, but smbstatus and SWAT shows what this files are locked. Also, in concurrent updates and edits of some DBF's updates are goes in wrong order. User on Win98/Me may enter some very valuable data, but user on WinXP or 2k (who use same file) may trash this data by one DBF update. Seems, what Win2k or WinXP put a some sort of "internal caching" on all DOS file operations. Seems to be that some (or all) portions of internal cache on Win2k or XP stations are not synchronized with real data on the network shared resource I found, what opportunistic locking (level 2 too) and client-side caching may produce similair bugs. I found MANY registry patches for XP and 2k, which are turns CSC and Oplocks off, they are all applied, but nothing helps me. Here is my smb.conf: # Samba config file created using SWAT # from 127.0.0.1 (127.0.0.1) # Date: 2005/04/14 13:41:01 # Global parameters [global] dos charset = cp866 unix charset = koi8-r workgroup = ICPLUS netbios name = SK_UNIX server string = Samba Server interfaces = eth0, eth1, eth2, lo0 security = SHARE log file = /var/log/smb/log.%m max log size = 50 time server = Yes # change notify timeout = 300 max disk size = 40000 max open files = 65300 socket options = TCP_NODELAY IPTOS_LOWDELAY os level = 90 preferred master = Yes dns proxy = No wins server = 192.168.0.14 kernel oplocks = No lock spin count = 100 lock spin time = 15 ldap ssl = no hosts allow = 192.168.0., 192.168.5., 192.168.7., 192.168.3., 127. csc policy = disable oplocks = No level2 oplocks = No wide links = No follow symlinks = No dos filemode = Yes dos filetimes = Yes dos filetime resolution = Yes [sys] comment = System volume path = /mnt/raid1/wingz/sys/__sys read only = No create mask = 0770 directory mask = 0770 guest ok = Yes And here is output of smbstatus for some NTX'es and DBF's: this files on the Windows 98 station: 27783 DENY_NONE 0x3 RDWR NONE /mnt/raid1/wingz/sys/__sys/_INFOBUH/2005/ZPL/UVOLNNL.NTX Fri Apr 15 10:09:08 2005 27783 DENY_NONE 0x3 RDWR NONE /mnt/raid1/wingz/sys/_ _sys/#BUDGET/2005/SYS/DOCOMP.DBF Fri Apr 15 09:39:39 2005 and this files on the Windows XP station: 28217 DENY_NONE 0x2019f RDWR NONE /mnt/raid1/wingz/sys/_ _sys/#BALSYS/NSI/VENTADDR.NTX Fri Apr 15 10:45:15 2005 28217 DENY_NONE 0x2019f RDWR NONE /mnt/raid1/wingz/sys/_ _sys/#BAL/SETUP/STATUSG.DBF Fri Apr 15 10:45:12 2005 Why status are so different for Windows 98 (0x3) and XP(0x2019f)? -------------- next part -------------- A non-text attachment was scrubbed... Name: not available Type: application/pgp-signature Size: 189 bytes Desc: not available Url : http://lists.samba.org/archive/samba/attachments/20050415/8c0cf617/attachment.bin