aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/md/md.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/md/md.c')
-rw-r--r--drivers/md/md.c23
1 files changed, 10 insertions, 13 deletions
diff --git a/drivers/md/md.c b/drivers/md/md.c
index eb0c3b576d7d..dbbe5e6df24c 100644
--- a/drivers/md/md.c
+++ b/drivers/md/md.c
@@ -4042,20 +4042,21 @@ static ssize_t
4042action_show(struct mddev *mddev, char *page) 4042action_show(struct mddev *mddev, char *page)
4043{ 4043{
4044 char *type = "idle"; 4044 char *type = "idle";
4045 if (test_bit(MD_RECOVERY_FROZEN, &mddev->recovery)) 4045 unsigned long recovery = mddev->recovery;
4046 if (test_bit(MD_RECOVERY_FROZEN, &recovery))
4046 type = "frozen"; 4047 type = "frozen";
4047 else if (test_bit(MD_RECOVERY_RUNNING, &mddev->recovery) || 4048 else if (test_bit(MD_RECOVERY_RUNNING, &recovery) ||
4048 (!mddev->ro && test_bit(MD_RECOVERY_NEEDED, &mddev->recovery))) { 4049 (!mddev->ro && test_bit(MD_RECOVERY_NEEDED, &recovery))) {
4049 if (test_bit(MD_RECOVERY_RESHAPE, &mddev->recovery)) 4050 if (test_bit(MD_RECOVERY_RESHAPE, &recovery))
4050 type = "reshape"; 4051 type = "reshape";
4051 else if (test_bit(MD_RECOVERY_SYNC, &mddev->recovery)) { 4052 else if (test_bit(MD_RECOVERY_SYNC, &recovery)) {
4052 if (!test_bit(MD_RECOVERY_REQUESTED, &mddev->recovery)) 4053 if (!test_bit(MD_RECOVERY_REQUESTED, &recovery))
4053 type = "resync"; 4054 type = "resync";
4054 else if (test_bit(MD_RECOVERY_CHECK, &mddev->recovery)) 4055 else if (test_bit(MD_RECOVERY_CHECK, &recovery))
4055 type = "check"; 4056 type = "check";
4056 else 4057 else
4057 type = "repair"; 4058 type = "repair";
4058 } else if (test_bit(MD_RECOVERY_RECOVER, &mddev->recovery)) 4059 } else if (test_bit(MD_RECOVERY_RECOVER, &recovery))
4059 type = "recover"; 4060 type = "recover";
4060 } 4061 }
4061 return sprintf(page, "%s\n", type); 4062 return sprintf(page, "%s\n", type);
@@ -4572,11 +4573,7 @@ md_attr_show(struct kobject *kobj, struct attribute *attr, char *page)
4572 mddev_get(mddev); 4573 mddev_get(mddev);
4573 spin_unlock(&all_mddevs_lock); 4574 spin_unlock(&all_mddevs_lock);
4574 4575
4575 rv = mddev_lock(mddev); 4576 rv = entry->show(mddev, page);
4576 if (!rv) {
4577 rv = entry->show(mddev, page);
4578 mddev_unlock(mddev);
4579 }
4580 mddev_put(mddev); 4577 mddev_put(mddev);
4581 return rv; 4578 return rv;
4582} 4579}