diff options
author | Jeff Layton <jlayton@redhat.com> | 2010-10-15 15:34:06 -0400 |
---|---|---|
committer | Steve French <sfrench@us.ibm.com> | 2010-10-25 00:18:59 +0000 |
commit | 5f6dbc9e4afe4d1d39e85de3ac2720a2042ad191 (patch) | |
tree | 8e97fe18b6d0824981fd377b2ff35042da264bb4 /fs/cifs/cifsglob.h | |
parent | 229aebb873e29726b91e076161649cf45154b0bf (diff) | |
download | op-kernel-dev-5f6dbc9e4afe4d1d39e85de3ac2720a2042ad191.zip op-kernel-dev-5f6dbc9e4afe4d1d39e85de3ac2720a2042ad191.tar.gz |
cifs: convert cifsFileInfo->count to non-atomic counter
The count for cifsFileInfo is currently an atomic, but that just adds
complexity for little value. We generally need to hold cifs_file_list_lock
to traverse the lists anyway so we might as well make this counter
non-atomic and simply use the cifs_file_list_lock to protect it.
Signed-off-by: Jeff Layton <jlayton@redhat.com>
Reviewed-by: Suresh Jayaraman <sjayaraman@suse.de>
Signed-off-by: Steve French <sfrench@us.ibm.com>
Diffstat (limited to 'fs/cifs/cifsglob.h')
-rw-r--r-- | fs/cifs/cifsglob.h | 9 |
1 files changed, 6 insertions, 3 deletions
diff --git a/fs/cifs/cifsglob.h b/fs/cifs/cifsglob.h index 3365e77f..6319db0 100644 --- a/fs/cifs/cifsglob.h +++ b/fs/cifs/cifsglob.h @@ -395,16 +395,19 @@ struct cifsFileInfo { struct list_head llist; /* list of byte range locks we have. */ bool invalidHandle:1; /* file closed via session abend */ bool oplock_break_cancelled:1; - atomic_t count; /* reference count */ + int count; /* refcount -- protected by cifs_file_list_lock */ struct mutex fh_mutex; /* prevents reopen race after dead ses*/ struct cifs_search_info srch_inf; struct work_struct oplock_break; /* work for oplock breaks */ }; -/* Take a reference on the file private data */ +/* + * Take a reference on the file private data. Must be called with + * cifs_file_list_lock held. + */ static inline void cifsFileInfo_get(struct cifsFileInfo *cifs_file) { - atomic_inc(&cifs_file->count); + ++cifs_file->count; } void cifsFileInfo_put(struct cifsFileInfo *cifs_file); |