Franz Sirl
1999-Aug-19 13:14 UTC
dptr_create: returned 9: Error - all new dirptrs in use ?
Hi,
I get this error message in the log for a Win98 client which is regularly
scanning a directory on the share. When this happens the client no longer
can access any data in the shares (security=share), only the toplevel
directory structure of a share is still accessible. This seems to be a new
problem in 2.0.5/6pre (not sure if it already happened for 2.0.4). Any hints?
Franz.
Platform: RH4.2/Intel
Log entry:
[1999/08/19 12:48:44, 0] smbd/dir.c:dptr_create(453)
dptr_create: returned 9: Error - all new dirptrs in use ?
Server setup:
# Global parameters
[global]
workgroup = EVERYONE
netbios name = SHARES
server string = Linux Samba Server
interfaces = 10.10.10.1/24
bind interfaces only = Yes
security = SHARE
encrypt passwords = Yes
username map = /etc/smb.username.map
# debug level = 3
log file = /var/log/samba/%m
max log size = 1024
socket options = TCP_NODELAY
preferred master = Yes
domain master = Yes
wins support = Yes
kernel oplocks = No
null passwords = Yes
[link]
comment = Links
path = /home/samba-mnt
valid users = @users
read only = No
create mask = 010
force create mode = 0664
directory mask = 00
force directory mode = 02775
short preserve case = No
map system = Yes
/home/samba-mnt contains mostly symbolic links to the real directories.
Franz Sirl
1999-Aug-26 14:50 UTC
dptr_create: returned 9: Error - all new dirptrs in use ?
Uhm, this seems to be a dptr leak in combination with Win98/Win98SE. In a Win98 command window try "dir L:\support\mga*." (note the trailing dot) with "L:" being a samba-2.0.5 share and "support" a directory with 8.3 files like "mga?????.bak", but no files like "mga?????". You'll get something similar to this end of the output with debuglevel=3: [1999/08/26 16:15:06, 3] smbd/trans2.c:call_trans2findnext(882) call_trans2findnext: dirhandle = 267, max_data_bytes = 2432, maxentries = 6, close_after_request=0, close_if_end = 0 requires_resume_key = 0 resume_key = 0 resume name = mga18566.bak continue=0 level = 260 [1999/08/26 16:15:06, 3] smbd/dir.c:dptr_fetch_lanman2(545) fetching dirptr 267 for path support [1999/08/26 16:15:06, 3] smbd/trans2.c:call_trans2findnext(929) dptr_num is 267, mask = MGA*, attr = 16, dirptr=(0x81344A0,1033) [1999/08/26 16:15:06, 3] smbd/trans2.c:call_trans2findnext(1065) SMBtrans2 mask=MGA* directory=support dirtype=22 numentries=1 [1999/08/26 16:15:06, 3] smbd/process.c:process_smb(615) Transaction 159 of length 95 [1999/08/26 16:15:06, 3] smbd/process.c:switch_message(448) switch message SMBtrans2 (pid 14500) [1999/08/26 16:15:06, 3] smbd/trans2.c:call_trans2findnext(882) call_trans2findnext: dirhandle = 267, max_data_bytes = 2432, maxentries = 6, close_after_request=0, close_if_end = 0 requires_resume_key = 0 resume_key = 0 resume name = mga18272.bak continue=0 level = 260 [1999/08/26 16:15:06, 3] smbd/dir.c:dptr_fetch_lanman2(545) fetching dirptr 267 for path support [1999/08/26 16:15:06, 3] smbd/trans2.c:call_trans2findnext(929) dptr_num is 267, mask = MGA*, attr = 16, dirptr=(0x81344A0,1251) [1999/08/26 16:15:06, 3] smbd/trans2.c:call_trans2findnext(1065) SMBtrans2 mask=MGA* directory=support dirtype=22 numentries=0 [1999/08/26 16:15:06, 3] smbd/process.c:process_smb(615) Transaction 160 of length 39 [1999/08/26 16:15:06, 3] smbd/process.c:switch_message(448) switch message SMBdskattr (pid 14500) [1999/08/26 16:15:06, 3] smbd/reply.c:reply_dskattr(1125) dskattr dfree=22296 [1999/08/26 16:16:06, 3] lib/doscalls.c:dos_ChDir(336) dos_ChDir to /var/log/samba And whoops, one dptr got lost here, as you can see if you issue another "dir L:\support\mga*.". Win95 doesn't show this behaviour, I haven't tested NT. I'm not sure if this is a bug in Win98 or Samba. As our application is scanning the directory every few seconds, this dptr leak locks up the smbd a few times a day. I'm currently testing a workaround using "mga?????" as a mask which doesn't seem to leak dptrs. On a side note, during debugging I got a 500MB (!) logfile, even though the maximum size is set to 1 MB. It seems the rotating doesn't work well at higher load. Franz.