client: debian, linux 2.6.23-1-amd64, cifs 1.50
server1: windows 2003 server, latest sp
server2: windows 2003 server, clean install (without sp)
mount opts: rw,user=user,dom=domain,pass=pass
On many of our machines mount.cifs hangs with state "D" in ps.
Doing a echo 7 > cifsFYI i see in demsg:
fs/cifs/connect.c: Socket created
fs/cifs/connect.c: Error -512 connecting to server via ipv4
fs/cifs/connect.c: reconnect error -512
-512 is ERESTARTSYS. Makeing the server available / unavailable, plugging network cables and so on did not help, the only way to solve it is rebooting the machine, then it works for a while.
cat DebugData shows:
Active VFS Requests: 1718
a lot of:
8) Name: 10.32.1.83 Domain: DOMAIN Mounts: -1 OS: Windows Server 2003 R2 3790 Service Pack 2
NOS: Windows Server 2003 R2 5.2 Capability: 0x1f3fd
SMB session status: 2
-ERESTARTSYS usually means that the task (which is probably cifsd in this case) caught a signal. That shouldn't happen -- cifsd should be insulated from signals originating in userspace. The kernel should only send it a signal when it's taking down the thread.
The Mounts -1 here means that the refcounting is broken (that should never dip below 0).
Are you able to reproduce this on recent kernels? In particular, the current state of Linus tree or later? We've recently corrected a number of mount/umount refcounting bugs there.
As Jeff said, we fixed similar sounding problems in cifs mount in 2.6.27 stable series, and later kernels.
Please reopen if the changes to mount code in recent 2.6.27 and 2.6.28 do not fix it.