Commit 90cf195d authored by NeilBrown's avatar NeilBrown

md: remove duplicated test on ->openers when calling do_md_stop()

do_md_stop tests mddev->openers while holding ->open_mutex,
and fails if this count is too high.
So callers do not need to check mddev->openers and doing so isn't
very meaningful as they don't hold ->open_mutex so the number could
change.

So remove the unnecessary tests on mddev->openers.
These are not called often enough for there to be any gain in
an early test on ->open_mutex to avoid the need for a slightly more
costly mutex_lock call.
Signed-off-by: default avatarNeilBrown <neilb@suse.de>
parent 3f9e7c14
...@@ -3942,17 +3942,13 @@ array_state_store(struct mddev *mddev, const char *buf, size_t len) ...@@ -3942,17 +3942,13 @@ array_state_store(struct mddev *mddev, const char *buf, size_t len)
break; break;
case clear: case clear:
/* stopping an active array */ /* stopping an active array */
if (atomic_read(&mddev->openers) > 0)
return -EBUSY;
err = do_md_stop(mddev, 0, NULL); err = do_md_stop(mddev, 0, NULL);
break; break;
case inactive: case inactive:
/* stopping an active array */ /* stopping an active array */
if (mddev->pers) { if (mddev->pers)
if (atomic_read(&mddev->openers) > 0)
return -EBUSY;
err = do_md_stop(mddev, 2, NULL); err = do_md_stop(mddev, 2, NULL);
} else else
err = 0; /* already inactive */ err = 0; /* already inactive */
break; break;
case suspended: case suspended:
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment