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: NeilBrown <neilb@suse.de>
This commit is contained in:
parent
3f9e7c140e
commit
90cf195d9b
|
@ -3942,17 +3942,13 @@ array_state_store(struct mddev *mddev, const char *buf, size_t len)
|
|||
break;
|
||||
case clear:
|
||||
/* stopping an active array */
|
||||
if (atomic_read(&mddev->openers) > 0)
|
||||
return -EBUSY;
|
||||
err = do_md_stop(mddev, 0, NULL);
|
||||
break;
|
||||
case inactive:
|
||||
/* stopping an active array */
|
||||
if (mddev->pers) {
|
||||
if (atomic_read(&mddev->openers) > 0)
|
||||
return -EBUSY;
|
||||
if (mddev->pers)
|
||||
err = do_md_stop(mddev, 2, NULL);
|
||||
} else
|
||||
else
|
||||
err = 0; /* already inactive */
|
||||
break;
|
||||
case suspended:
|
||||
|
|
Loading…
Reference in New Issue