Re: SMB oddness (patch attached)

Bill Hawes (whawes@star.net)
Sat, 22 Nov 1997 12:04:39 -0500


This is a multi-part message in MIME format.
--------------649DFB9D5E53AFA52172F2E0
Content-Type: text/plain; charset=us-ascii
Content-Transfer-Encoding: 7bit

Steven N. Hirsch wrote:
> Here's some more input on my ongoing saga with smbfs and WfW.

> 4) Umounted the smb share, shut down and restarted WfW, remounted and
> ran 'strace -o /tmp/output iozone auto':
>
> Nov 22 10:42:37 cy kernel: smb_newconn: server not locked, count=1
> Nov 22 10:42:37 cy kernel: smb_offerconn: server not locked, count=1
> Nov 22 10:42:37 cy kernel: smb_offerconn: state valid, pid=252
> Nov 22 10:42:52 cy kernel: smb_proc_open: BENCH/iozone.tmp R/W failed, error=-26, retrying R/O
> Nov 22 10:42:52 cy kernel: smb_open: BENCH/iozone.tmp access denied, access=0, wish=1
>

> This was the strace capture:
> creat("iozone.tmp", 0640) = 4
> times({tms_utime=0, tms_stime=0, tms_cutime=0, tms_cstime=0}) = 4428692
> times({tms_utime=0, tms_stime=0, tms_cutime=0, tms_cstime=0}) = 4428692
> write(4, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 512) = -1 EACCES (Permission denied)

> This appears to be a WfW wart which occurs when writing to the first
> newly-created file on the server. Hopefully this information will suggest
> a workaround?

Hi Steve,
I've gone over your report and have a theory that would explain the
problems. The significant facts are that the smb_proc_open fails on a
R/W try, and that the open is being done implicitly in the write
operation.

The current smbfs saves the fileid obtained when it creates a file, so
the file should already be opened in R/W mode after the creat() call
succeeds. But obviously smbfs thinks the file isn't open, since it tries
to open it. If the server really does have the file open R/W, then of
course the second open attempt would fail.

My theory is that WfW is using fileid 0 for the first open after a
reboot, and the smbfs code doesn't think this is a legal fileid value.
I've changed the code to accept 0 as a fileid following a successful
create, but to print a message if this occurs. Hopefully this will take
care of that problem ...

BTW, are you having any time-stamp problems with your smbfs shares?
There seem to be some weird timestamp problems (not on NT) that I'm
trying to track down.

Regards,
Bill
--------------649DFB9D5E53AFA52172F2E0
Content-Type: application/x-gzip; name="smbfs_65-patch.gz"
Content-Transfer-Encoding: base64
Content-Disposition: inline; filename="smbfs_65-patch.gz"

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
--------------649DFB9D5E53AFA52172F2E0--