浏览代码

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>
Al Viro 9 年之前
父节点
当前提交
178041848a
共有 1 个文件被更改,包括 8 次插入8 次删除
  1. 8 8
      fs/orangefs/orangefs-bufmap.c

+ 8 - 8
fs/orangefs/orangefs-bufmap.c

@@ -91,11 +91,11 @@ int orangefs_bufmap_size_query(void)
 {
 {
 	struct orangefs_bufmap *bufmap;
 	struct orangefs_bufmap *bufmap;
 	int size = 0;
 	int size = 0;
-	bufmap = orangefs_bufmap_ref();
-	if (bufmap) {
+	spin_lock(&orangefs_bufmap_lock);
+	bufmap = __orangefs_bufmap;
+	if (bufmap)
 		size = bufmap->desc_size;
 		size = bufmap->desc_size;
-		orangefs_bufmap_unref(bufmap);
-	}
+	spin_unlock(&orangefs_bufmap_lock);
 	return size;
 	return size;
 }
 }
 
 
@@ -103,11 +103,11 @@ int orangefs_bufmap_shift_query(void)
 {
 {
 	struct orangefs_bufmap *bufmap;
 	struct orangefs_bufmap *bufmap;
 	int shift = 0;
 	int shift = 0;
-	bufmap = orangefs_bufmap_ref();
-	if (bufmap) {
+	spin_lock(&orangefs_bufmap_lock);
+	bufmap = __orangefs_bufmap;
+	if (bufmap)
 		shift = bufmap->desc_shift;
 		shift = bufmap->desc_shift;
-		orangefs_bufmap_unref(bufmap);
-	}
+	spin_unlock(&orangefs_bufmap_lock);
 	return shift;
 	return shift;
 }
 }