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>
This commit is contained in:
@@ -2211,11 +2211,13 @@ __ATTR(metadata, S_IRUGO|S_IWUSR, metadata_show, metadata_store);
|
||||
static ssize_t can_clear_show(struct mddev *mddev, char *page)
|
||||
{
|
||||
int len;
|
||||
spin_lock(&mddev->lock);
|
||||
if (mddev->bitmap)
|
||||
len = sprintf(page, "%s\n", (mddev->bitmap->need_sync ?
|
||||
"false" : "true"));
|
||||
else
|
||||
len = sprintf(page, "\n");
|
||||
spin_unlock(&mddev->lock);
|
||||
return len;
|
||||
}
|
||||
|
||||
@@ -2240,10 +2242,15 @@ __ATTR(can_clear, S_IRUGO|S_IWUSR, can_clear_show, can_clear_store);
|
||||
static ssize_t
|
||||
behind_writes_used_show(struct mddev *mddev, char *page)
|
||||
{
|
||||
ssize_t ret;
|
||||
spin_lock(&mddev->lock);
|
||||
if (mddev->bitmap == NULL)
|
||||
return sprintf(page, "0\n");
|
||||
return sprintf(page, "%lu\n",
|
||||
mddev->bitmap->behind_writes_used);
|
||||
ret = sprintf(page, "0\n");
|
||||
else
|
||||
ret = sprintf(page, "%lu\n",
|
||||
mddev->bitmap->behind_writes_used);
|
||||
spin_unlock(&mddev->lock);
|
||||
return ret;
|
||||
}
|
||||
|
||||
static ssize_t
|
||||
|
Reference in New Issue
Block a user