BUG: vfs-cifs hangs from windows explorer: access denied: cause write size

Amin Azez azez at ufomechanic.net
Thu Nov 29 10:31:09 GMT 2007


Writing large-ish (< 2MB) files from pbrush.exe or from windows explorer
via the vfs_cifs proxy (without my patches) is very slow, hangs windows
for a while and reports that delayed writes failed.
If I try to copy the same file under cygwin (with a fresh smbd proxy) it
runs through just fine.

tshark recording traffic says:
1445.335452  win2kclient -> wafs-dev     SMB Write AndX Request, FID:
0x001b, 61440 bytes at offset 0
...
...
1445.352346     wafs-dev -> mothership   SMB Write AndX Request, FID:
0x4000, 61440 bytes at offset 0
1445.352356     wafs-dev -> mothership   NBSS NBSS Continuation Message
1445.352361     wafs-dev -> mothership   NBSS NBSS Continuation Message
1445.354056   mothership -> wafs-dev     SMB Write AndX Response, Error:
STATUS_ACCESS_DENIED

(cygwin uses 8192 byte writes)

further debugging shows that in cvfs_write,
private->tree->session->transport->negotiate.max_xmit
= 16644, but the write from the win2kclient is 61440 bytes.

So I guess the max_xmit needs properly negotiating between the proxied
server and the client, or if impossible, then perhaps break up the async
write into smaller async writes within the proxy (ouch).

I also note that after the STATUS_ACCESS_DENIED error windows may send
more writes but the win2k server does not respond to these at all! And
the proxy eventually sends timeout messages to the client.

After this the smb session becomes pretty useless, although that may be
the windows service that is choking up rather than the proxy.

max xmit is set in smb.conf [globals] to 8192 (and defaults to 12211
anyway) so I'm not sure why the win2k wanted to go sending 61440 byte
writes anyway.
I'm trying to track down the reason the win2k client thought it could
make big writes, but shortcuts would be appreciated.

Sam


More information about the samba-technical mailing list