diff options
author | Suresh Jayaraman <sjayaraman@suse.de> | 2010-10-18 13:59:37 -0400 |
---|---|---|
committer | Steve French <sfrench@us.ibm.com> | 2010-10-21 09:14:27 -0400 |
commit | 3f9bcca7820a6711307b6499952b13cfcfc31dd6 (patch) | |
tree | 6c380f5877562778335d6794e1e4a297f8970d77 /fs/cifs/sess.c | |
parent | 3e24e132878c83910b61eb7704511a6d96a0389f (diff) |
cifs: convert cifs_tcp_ses_lock from a rwlock to a spinlock
cifs_tcp_ses_lock is a rwlock with protects the cifs_tcp_ses_list,
server->smb_ses_list and the ses->tcon_list. It also protects a few
ref counters in server, ses and tcon. In most cases the critical section
doesn't seem to be large, in a few cases where it is slightly large, there
seem to be really no benefit from concurrent access. I briefly considered RCU
mechanism but it appears to me that there is no real need.
Replace it with a spinlock and get rid of the last rwlock in the cifs code.
Signed-off-by: Suresh Jayaraman <sjayaraman@suse.de>
Signed-off-by: Steve French <sfrench@us.ibm.com>
Diffstat (limited to 'fs/cifs/sess.c')
-rw-r--r-- | fs/cifs/sess.c | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/fs/cifs/sess.c b/fs/cifs/sess.c index e35dc60d3255..2a11efd96592 100644 --- a/fs/cifs/sess.c +++ b/fs/cifs/sess.c | |||
@@ -80,7 +80,7 @@ static __le16 get_next_vcnum(struct cifsSesInfo *ses) | |||
80 | if (max_vcs < 2) | 80 | if (max_vcs < 2) |
81 | max_vcs = 0xFFFF; | 81 | max_vcs = 0xFFFF; |
82 | 82 | ||
83 | write_lock(&cifs_tcp_ses_lock); | 83 | spin_lock(&cifs_tcp_ses_lock); |
84 | if ((ses->need_reconnect) && is_first_ses_reconnect(ses)) | 84 | if ((ses->need_reconnect) && is_first_ses_reconnect(ses)) |
85 | goto get_vc_num_exit; /* vcnum will be zero */ | 85 | goto get_vc_num_exit; /* vcnum will be zero */ |
86 | for (i = ses->server->srv_count - 1; i < max_vcs; i++) { | 86 | for (i = ses->server->srv_count - 1; i < max_vcs; i++) { |
@@ -112,7 +112,7 @@ static __le16 get_next_vcnum(struct cifsSesInfo *ses) | |||
112 | vcnum = i; | 112 | vcnum = i; |
113 | ses->vcnum = vcnum; | 113 | ses->vcnum = vcnum; |
114 | get_vc_num_exit: | 114 | get_vc_num_exit: |
115 | write_unlock(&cifs_tcp_ses_lock); | 115 | spin_unlock(&cifs_tcp_ses_lock); |
116 | 116 | ||
117 | return cpu_to_le16(vcnum); | 117 | return cpu_to_le16(vcnum); |
118 | } | 118 | } |