I have been going crazy over the last few weeks trying to install a new Samba server (using v2.2.1, v2.2.5 and v2.2.6) to replace a old system. Problem seems to be with file locking on the new server - works perfectly on old server!!
Attached are configuration files for Samba for old (smb205.conf) and new (smb226.conf) servers, plus the source of a Cobol test program (samtest.cbl) that demonstrates the problem. Also included is a program (samdata.cbl) that creates the test file. I can supply binary versions if required - not sending .EXE for anti-virus purposes.
I have tried various variations on the parameters, but doesn't seem to make a lot of difference. Am I missing something?
Old Server - FreeBSD 3.2 + Samba 2.0.5 - P2/300 with 128Mb RAM
New Server - RedHat Linux 7.2 + Samba 2.2.6 - Duron 1200 with 768Mb RAM
Workstations - MS-DOS 6.22 + MS-Client v3.0 - P200MMX/P233MMX with 64Mb
Problem: simulating multi-user access to a file, when program hits a locked record (cobol reply 9/68 - record locked) both machines freeze for some considerable time (15 - 30 mins) before they continue. Program reply test has a delay loop built in such that it will wait before re-trying the locked record (have tried making delay 10 times longer to no effect). Also under 2.2.1, it seems that one workstation runs for several seconds, locking the other out. They them swap. Doesn't seem as bad under 2.2.5, but still happens to some extent depending on the parameters.
From the release notes, I had hoped that 2.2.6 cures this problem. Am I missing something?
Regards,
Brian
-----------------------------------------------------------------------
Brian W Spoor MBCS
Chartered Information Systems Practitioner
Phone: +44-(0)1803 852625
Email: [EMAIL PROTECTED]
-----------------------------------------------------------------------
******************************************************************************
This email has been virus checked by the Eclipse Internet MAILsafe service
******************************************************************************
www: http://www.eclipse.net.uk/ email: [EMAIL PROTECTED] ******************************************************************************
identification division.
program-id. samdata.
*
*
environment division.
configuration section.
input-output section.
file-control.
select f00 assign to "samdata.dat"
organization is indexed
access mode is sequential
lock mode is exclusive
record key is f00-test-key.
*
*
data division.
file section.
fd f00.
01 f00-test-rec.
03 f00-test-key pic 9(4).
03 f00-test-text pic x(20).
03 f00-test-count pic 9(6).
03 filler pic x(224).
*
*
working-storage section.
77 mod pic 9(6) comp.
*
*
procedure division.
open output f00.
move spaces to f00-test-rec.
move 1 to f00-test-count.
perform varying mod from 1
by 1
until mod > 9999
move mod to f00-test-key
write f00-test-rec
end-perform.
close f00.
stop run.
/
end program samdata.
identification division.
program-id. samtest.
*author. B W Spoor.
*
*
environment division.
configuration section.
input-output section.
file-control.
select f00 assign to "samdata.dat"
organization is indexed
access mode is dynamic
lock mode is automatic
record key is f00-test-key
file status is f-status.
*
*
data division.
file section.
fd f00.
01 f00-test-rec.
03 f00-test-key pic 9(4).
03 f00-test-text pic x(20).
03 f00-test-count pic 9(6).
03 filler pic x(224).
*
*
working-storage section.
77 f-mode pic x(1).
77 f-reply pic 9(1).
77 mod pic s9(6) comp.
77 mod1 pic s9(2) comp.
77 mod2 pic s9(2) comp.
77 modw pic s9(6) comp.
*
01 f-disp pic 9(5).
01 filler redefines f-disp.
03 f-disp-9 pic 9(1).
03 filler pic x(4).
*
01 f-status.
03 f-stat-1 pic x(1).
03 f-stat-2 pic x(1).
01 f-stat-n pic 9(2)
redefines f-status.
01 f-stat-bin pic 9(4) comp
redefines f-status.
*
*
screen section.
01 screen-f1 highlight
background-color 4
foreground-color 6.
03 line 23 col 1 value "Disc Reply - Mode=".
03 line 23 col 19 pic X(1) from f-mode.
03 line 23 col 20 value " Reply=".
03 line 23 col 28 pic z(4)9 from f-disp.
03 line 23 col 33 value " Key=".
03 line 23 col 40 pic 9(4) from f00-test-key.
*
01 screen-l1 highlight
background-color 1
foreground-color 6.
03 line 20 col 1 value "Record ".
03 line 20 col 8 pic 9(4) from f00-test-key.
03 line 20 col 12 value " Locked".
*
*
procedure division.
move zero to f00-test-key.
move "O" to f-mode.
move 2 to f-reply.
perform until f-reply = zero
open i-o f00
perform check-status
end-perform.
perform varying mod2 from 1
by 1
until mod2 > 9
perform varying mod from 10
by 10
until mod > 9999
perform varying mod1 from 9
by -1
until mod1 < 1
add mod mod1 giving f00-test-key
move "R" to f-mode
move 2 to f-reply
perform until f-reply = zero
read f00 record
end-read
perform check-status
end-perform
add 1 to f00-test-count
move "W" to f-mode
move 2 to f-reply
perform until f-reply = zero
rewrite f00-test-rec
end-rewrite
perform check-status
end-perform
end-perform
end-perform
end-perform.
close f00.
stop run.
*
*
check-status.
if f-stat-1 = "0"
move f-stat-n to f-disp
move zero to f-reply
else
if f-stat-1 = "9"
move low-values to f-stat-1
move f-stat-bin to f-disp
move 9 to f-disp-9
if f-stat-bin = 65 or
f-stat-bin = 68
perform lock-wait
move 1 to f-reply
else
move 2 to f-reply
end-if
else
move f-stat-n to f-disp
move 2 to f-reply
end-if
end-if.
display screen-f1.
if f-reply > 1
stop run
end-if.
*
*
lock-wait.
display screen-l1.
perform varying modw from 1
by 1
until modw > 999
continue
end-perform.
/
end program samtest.
[global] workgroup = FCS server string = FCS44 hosts allow = 192.168.8. 127. guest account = samba load printers = yes printing = bsd min print space = 2000 log file = /var/log/log.%m max log size = 50 security = share socket options = TCP_NODELAY dns proxy = no
[printers] comment = All Printers path = /var/spool/output/samba printcap name = /etc/printcap print command = /usr/bin/lpr -P%p -r %s lpq command = /usr/bin/lpq -P%p lprm command = /usr/bin/lprm -P%p %j lppause command = /usr/sbin/lpc stop %p lpresume command = /usr/sbin/lpc start %p public = yes guest ok = yes writable = no printable = yes [public] path = /home/samba/public public = yes writable = yes printable = no
[global]
workgroup = FCS
server string = FCS0
hosts allow = 192.168.8. 127.
guest account = samba
load printers = no
log file = /var/log/log.%m
max log size = 50
security = share
socket options = TCP_NODELAY
dns proxy = no
[public]
path = /home/samba/public
public = yes
guest ok = yes
browsable = yes
printable = no
writable = yes
#
share modes = yes
locking = yes
strict locking = no
oplocks = no
level2 oplocks = no
blocking locks = yes
