aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/md/bitmap.c
diff options
context:
space:
mode:
authorNeilBrown <neilb@suse.de>2014-12-14 20:56:59 -0500
committerNeilBrown <neilb@suse.de>2015-02-05 17:32:55 -0500
commitb7b17c9b67e5984210c83d50d2c8117d3bd50ea0 (patch)
tree072e63fa9cd1e1c314d9d99d0ae77d9e955d1a38 /drivers/md/bitmap.c
parent7b1485bab9c49b0d3811d72beb0de60c7b8b337d (diff)
md: remove mddev_lock() from md_attr_show()
Most attributes can be read safely without any locking. A race might lead to a slightly out-dated value, but nothing wrong. We already have locking in some places where needed. All that remains is can_clear_show(), behind_writes_used_show() and action_show() which are easily fixed. Signed-off-by: NeilBrown <neilb@suse.de>
Diffstat (limited to 'drivers/md/bitmap.c')
-rw-r--r--drivers/md/bitmap.c13
1 files changed, 10 insertions, 3 deletions
diff --git a/drivers/md/bitmap.c b/drivers/md/bitmap.c
index 3424b1915fc4..3a5767968ba0 100644
--- a/drivers/md/bitmap.c
+++ b/drivers/md/bitmap.c
@@ -2211,11 +2211,13 @@ __ATTR(metadata, S_IRUGO|S_IWUSR, metadata_show, metadata_store);
2211static ssize_t can_clear_show(struct mddev *mddev, char *page) 2211static ssize_t can_clear_show(struct mddev *mddev, char *page)
2212{ 2212{
2213 int len; 2213 int len;
2214 spin_lock(&mddev->lock);
2214 if (mddev->bitmap) 2215 if (mddev->bitmap)
2215 len = sprintf(page, "%s\n", (mddev->bitmap->need_sync ? 2216 len = sprintf(page, "%s\n", (mddev->bitmap->need_sync ?
2216 "false" : "true")); 2217 "false" : "true"));
2217 else 2218 else
2218 len = sprintf(page, "\n"); 2219 len = sprintf(page, "\n");
2220 spin_unlock(&mddev->lock);
2219 return len; 2221 return len;
2220} 2222}
2221 2223
@@ -2240,10 +2242,15 @@ __ATTR(can_clear, S_IRUGO|S_IWUSR, can_clear_show, can_clear_store);
2240static ssize_t 2242static ssize_t
2241behind_writes_used_show(struct mddev *mddev, char *page) 2243behind_writes_used_show(struct mddev *mddev, char *page)
2242{ 2244{
2245 ssize_t ret;
2246 spin_lock(&mddev->lock);
2243 if (mddev->bitmap == NULL) 2247 if (mddev->bitmap == NULL)
2244 return sprintf(page, "0\n"); 2248 ret = sprintf(page, "0\n");
2245 return sprintf(page, "%lu\n", 2249 else
2246 mddev->bitmap->behind_writes_used); 2250 ret = sprintf(page, "%lu\n",
2251 mddev->bitmap->behind_writes_used);
2252 spin_unlock(&mddev->lock);
2253 return ret;
2247} 2254}
2248 2255
2249static ssize_t 2256static ssize_t