]> git.karo-electronics.de Git - karo-tx-linux.git/commitdiff
md: remove duplicated test on ->openers when calling do_md_stop()
authorNeilBrown <neilb@suse.de>
Thu, 19 Jul 2012 10:49:59 +0000 (20:49 +1000)
committerNeilBrown <neilb@suse.de>
Thu, 19 Jul 2012 10:49:59 +0000 (20:49 +1000)
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>
drivers/md/md.c

index db02d2efb76f943185ec0d4101c4913fe0b3a41e..fcd098794d37d16c7b48b12c54b5ba6f5e6ba60e 100644 (file)
@@ -3893,17 +3893,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: