diff options
author | NeilBrown <neilb@suse.de> | 2012-07-30 20:04:55 -0400 |
---|---|---|
committer | NeilBrown <neilb@suse.de> | 2012-07-30 20:04:55 -0400 |
commit | 90cf195d9bcb4bf70e8b6df5073b05164b279ba0 (patch) | |
tree | 815e0ad7c0b7f4af7eb04d07eb2093e60540bb55 /drivers | |
parent | 3f9e7c140e4c4e75bdeeb8df46dd40e49386c978 (diff) |
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>
Diffstat (limited to 'drivers')
-rw-r--r-- | drivers/md/md.c | 8 |
1 files changed, 2 insertions, 6 deletions
diff --git a/drivers/md/md.c b/drivers/md/md.c index d5ab4493c8be..f6c46109b071 100644 --- a/drivers/md/md.c +++ b/drivers/md/md.c | |||
@@ -3942,17 +3942,13 @@ array_state_store(struct mddev *mddev, const char *buf, size_t len) | |||
3942 | break; | 3942 | break; |
3943 | case clear: | 3943 | case clear: |
3944 | /* stopping an active array */ | 3944 | /* stopping an active array */ |
3945 | if (atomic_read(&mddev->openers) > 0) | ||
3946 | return -EBUSY; | ||
3947 | err = do_md_stop(mddev, 0, NULL); | 3945 | err = do_md_stop(mddev, 0, NULL); |
3948 | break; | 3946 | break; |
3949 | case inactive: | 3947 | case inactive: |
3950 | /* stopping an active array */ | 3948 | /* stopping an active array */ |
3951 | if (mddev->pers) { | 3949 | if (mddev->pers) |
3952 | if (atomic_read(&mddev->openers) > 0) | ||
3953 | return -EBUSY; | ||
3954 | err = do_md_stop(mddev, 2, NULL); | 3950 | err = do_md_stop(mddev, 2, NULL); |
3955 | } else | 3951 | else |
3956 | err = 0; /* already inactive */ | 3952 | err = 0; /* already inactive */ |
3957 | break; | 3953 | break; |
3958 | case suspended: | 3954 | case suspended: |