Description of problem: Assume we have a W2K server exporting a number of shares. If we mount one of then and wait long enough, it becomes DISCONNECTED, as cat /proc/fs/cifs/DebugData shows. Then, if we try to mount a different share exported from the same server, mount fails, until the already mounted share is accessed (e.g. df or ls) Version-Release number of selected component (if applicable): kernel 2.6.22.5-49.fc6, CIFS Version 1.49, util-linux-2.13-0.48.fc6.i386 (for mount) samba-client-3.0.24-7.fc6.i386 (for mount.cifs) How reproducible: always Steps to Reproduce: 1. have a W2K server srv with share share1, share2, local dirs /mnt/cifs1, /mnt/cifs2 2. mount one share \\srv\share1 as /mnt/cifs1 3. run cat /proc/fs/cifs/DebugData and wait until share1 is in DISCONNECTED state 4. Try to mount \\srv\share2 as /mnt/cifs2 5. run df /mnt/cifs1 6. repeat mount command as in 4. Actual results: from 4. mount error 11 = Resource temporarily unavailable form Expected results: should mount without the need to access the other share Additional info: tcpdump indicates no attempts to connect to the server in step 4.
Thanks for the report. I've been able to replicate this on very recent kernels as well. I'll have a look and see what can be done to fix it.
The problem seems to be confined to the situation where SMB sessions are shared. If you mount with different creds, then the old share stays in DISCONNECTED state, and the mount works. It's only when mounting in such a way that the SMB session is shared that there's a problem.
Created attachment 290173 [details] patch -- redo existing session setup if needed in cifs_mount This patch seems to fix it for me. If you're able to test this out, could you do so and verify the fix? I'll plan to send this upstream in the near future.
Patch sent upstream to linux-cifs-client mailing list.
Fix has been taken upstream. Closing as UPSTREAM.