You asked for it, you got it:
> Then just try a simple file creation and access, e.g. something like
> echo hi >foo
> cat foo
> rm -f foo
>
> and send me the syslog debugging output.
The mounted share is exported from a WfW 3.11 box. Kernel is stock 2.1.62
(I backed out your patch as requested):
Nov 10 22:29:10 cy kernel: smb_receive: rcls=1, err=2
Nov 10 22:29:10 cy kernel: smb_revalidate_inode: up-to-date, jiffies=41171, oldtime=41171
Nov 10 22:29:10 cy kernel: smb_proc_open: error=0, access=2
Nov 10 22:29:10 cy kernel: smb_get_wsize: packet=4096, xmit=2920, size=2868
Nov 10 22:29:10 cy kernel: smb_proc_write: file //foo, count=3@0, packet_size=4096
Nov 10 22:29:10 cy kernel: smb_close_dentry: closed //foo, count=1
Nov 10 22:29:16 cy kernel: smb_close_dentry: closed //foo, count=1
Nov 10 22:29:16 cy kernel: smb_revalidate_inode: up-to-date, jiffies=41709, oldtime=41709
Nov 10 22:29:16 cy kernel: smb_revalidate_inode: up-to-date, jiffies=41709, oldtime=41709
Nov 10 22:29:16 cy kernel: smb_get_rsize: packet=4096, xmit=2920, size=2868
Nov 10 22:29:16 cy kernel: smb_proc_open: error=0, access=2
Nov 10 22:29:16 cy kernel: smb_proc_read: file //foo, count=2868, result=3
Nov 10 22:29:16 cy kernel: smb_revalidate_inode: up-to-date, jiffies=41710, oldtime=41709
Nov 10 22:29:16 cy kernel: smb_close_dentry: closed //foo, count=1
Next, I ran "iozone 1" on the mounted share. It dumped several hundred K
of log information before failing with an on-screen message of "Read error
at block 0". Now, here's the interesting part: Following a large number
of smb_proc_write operations, there was no record of smb_proc_read ever
being executed! From the application's point of view, the read fails
instantly. However it's apparently not making it to the smbfs code.
Here's the tail of the log:
Nov 10 22:31:26 cy kernel: smb_get_wsize: packet=4096, xmit=2920, size=2868
Nov 10 22:31:26 cy kernel: smb_proc_write: file //iozone.tmp, count=512@1046016, packet_size=4096
Nov 10 22:31:26 cy kernel: smb_revalidate_inode: up-to-date, jiffies=53635, oldtime=53635
Nov 10 22:31:26 cy kernel: smb_get_wsize: packet=4096, xmit=2920, size=2868
Nov 10 22:31:26 cy kernel: smb_proc_write: file //iozone.tmp, count=512@1046528, packet_size=4096
Nov 10 22:31:27 cy kernel: smb_revalidate_inode: up-to-date, jiffies=53637, oldtime=53637
Nov 10 22:31:27 cy kernel: smb_get_wsize: packet=4096, xmit=2920, size=2868
Nov 10 22:31:27 cy kernel: smb_proc_write: file //iozone.tmp, count=512@1047040, packet_size=4096
Nov 10 22:31:27 cy kernel: smb_revalidate_inode: up-to-date, jiffies=53638, oldtime=53638
Nov 10 22:31:27 cy kernel: smb_get_wsize: packet=4096, xmit=2920, size=2868
Nov 10 22:31:27 cy kernel: smb_proc_write: file //iozone.tmp, count=512@1047552, packet_size=4096
Nov 10 22:31:27 cy kernel: smb_revalidate_inode: up-to-date, jiffies=53639, oldtime=53639
Nov 10 22:31:27 cy kernel: smb_get_wsize: packet=4096, xmit=2920, size=2868
Nov 10 22:31:27 cy kernel: smb_proc_write: file //iozone.tmp, count=512@1048064, packet_size=4096
Nov 10 22:31:27 cy kernel: smb_close_dentry: closed //iozone.tmp, count=1
Nov 10 22:31:27 cy kernel: smb_revalidate_inode: up-to-date, jiffies=53648, oldtime=53640
Nov 10 22:31:28 cy kernel: smb_close_dentry: closed //iozone.tmp, count=1
Wouldn't you have expected some indication of the read attempt?
For what it's worth, the iozone.tmp file was written in its entirety.
Let me know what you would like next.
Steve