Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 90cf195d authored by NeilBrown's avatar NeilBrown
Browse files

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
Loading
Loading
Loading
Loading
+2 −6
Original line number Diff line number Diff line
@@ -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: