diff options
author | Al Viro <viro@zeniv.linux.org.uk> | 2016-02-13 11:16:37 -0500 |
---|---|---|
committer | Mike Marshall <hubcap@omnibond.com> | 2016-02-19 13:45:54 -0500 |
commit | 178041848a6e7072cc6ebc1c6c7763e33f564722 (patch) | |
tree | faeb03a2420885da2a825695386331aac12b5186 /fs/orangefs/orangefs-bufmap.c | |
parent | 05b39a8b5cecaaf356497ee7df2f8acbc59eb2ee (diff) | |
download | lwn-178041848a6e7072cc6ebc1c6c7763e33f564722.tar.gz lwn-178041848a6e7072cc6ebc1c6c7763e33f564722.zip |
orangefs_bufmap_..._query(): don't bother with refcounts
... just hold the spinlock while fetching the field in question.
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
Signed-off-by: Mike Marshall <hubcap@omnibond.com>
Diffstat (limited to 'fs/orangefs/orangefs-bufmap.c')
-rw-r--r-- | fs/orangefs/orangefs-bufmap.c | 16 |
1 files changed, 8 insertions, 8 deletions
diff --git a/fs/orangefs/orangefs-bufmap.c b/fs/orangefs/orangefs-bufmap.c index 1819dee58433..cd484665bf72 100644 --- a/fs/orangefs/orangefs-bufmap.c +++ b/fs/orangefs/orangefs-bufmap.c @@ -91,11 +91,11 @@ int orangefs_bufmap_size_query(void) { struct orangefs_bufmap *bufmap; int size = 0; - bufmap = orangefs_bufmap_ref(); - if (bufmap) { + spin_lock(&orangefs_bufmap_lock); + bufmap = __orangefs_bufmap; + if (bufmap) size = bufmap->desc_size; - orangefs_bufmap_unref(bufmap); - } + spin_unlock(&orangefs_bufmap_lock); return size; } @@ -103,11 +103,11 @@ int orangefs_bufmap_shift_query(void) { struct orangefs_bufmap *bufmap; int shift = 0; - bufmap = orangefs_bufmap_ref(); - if (bufmap) { + spin_lock(&orangefs_bufmap_lock); + bufmap = __orangefs_bufmap; + if (bufmap) shift = bufmap->desc_shift; - orangefs_bufmap_unref(bufmap); - } + spin_unlock(&orangefs_bufmap_lock); return shift; } |