cifs: reinstate sharing of SMB sessions sans races
authorJeff Layton <jlayton@redhat.com>
Fri, 14 Nov 2008 18:53:46 +0000 (13:53 -0500)
committerSteve French <sfrench@us.ibm.com>
Fri, 14 Nov 2008 23:56:55 +0000 (23:56 +0000)
commit14fbf50d695207754daeb96270b3027a3821121f
tree05e80aa7e5e6a6bc07a9354f744ba9c599699569
parente7ddee9037e7dd43de1ad08b51727e552aedd836
cifs: reinstate sharing of SMB sessions sans races

We do this by abandoning the global list of SMB sessions and instead
moving to a per-server list. This entails adding a new list head to the
TCP_Server_Info struct. The refcounting for the cifsSesInfo is moved to
a non-atomic variable. We have to protect it by a lock anyway, so there's
no benefit to making it an atomic. The list and refcount are protected
by the global cifs_tcp_ses_lock.

The patch also adds a new routines to find and put SMB sessions and
that properly take and put references under the lock.

Signed-off-by: Jeff Layton <jlayton@redhat.com>
Signed-off-by: Steve French <sfrench@us.ibm.com>
fs/cifs/cifs_debug.c
fs/cifs/cifsfs.c
fs/cifs/cifsglob.h
fs/cifs/cifsproto.h
fs/cifs/cifssmb.c
fs/cifs/connect.c
fs/cifs/misc.c