From: Yu Kuai <yuku...@huawei.com>

mddev_create_serial_pool() will be called from bind_rdev_to_array(), and
mddev_suspend() will be called if serial pool is used.

Prepare to remove the mddev_suspend() from mddev_create_serial_pool().

Signed-off-by: Yu Kuai <yuku...@huawei.com>
---
 drivers/md/md-autodetect.c |  4 ++--
 drivers/md/md.c            | 14 +++++++-------
 2 files changed, 9 insertions(+), 9 deletions(-)

diff --git a/drivers/md/md-autodetect.c b/drivers/md/md-autodetect.c
index 6eaa0eab40f9..4b80165afd23 100644
--- a/drivers/md/md-autodetect.c
+++ b/drivers/md/md-autodetect.c
@@ -175,7 +175,7 @@ static void __init md_setup_drive(struct md_setup_args 
*args)
                return;
        }
 
-       err = mddev_lock(mddev);
+       err = mddev_suspend_and_lock(mddev);
        if (err) {
                pr_err("md: failed to lock array %s\n", name);
                goto out_mddev_put;
@@ -221,7 +221,7 @@ static void __init md_setup_drive(struct md_setup_args 
*args)
        if (err)
                pr_warn("md: starting %s failed\n", name);
 out_unlock:
-       mddev_unlock(mddev);
+       mddev_unlock_and_resume(mddev);
 out_mddev_put:
        mddev_put(mddev);
 }
diff --git a/drivers/md/md.c b/drivers/md/md.c
index 0f1006197afd..43bd7274b705 100644
--- a/drivers/md/md.c
+++ b/drivers/md/md.c
@@ -2535,7 +2535,7 @@ static int bind_rdev_to_array(struct md_rdev *rdev, 
struct mddev *mddev)
        pr_debug("md: bind<%s>\n", b);
 
        if (mddev->raid_disks)
-               mddev_create_serial_pool(mddev, rdev, false);
+               mddev_create_serial_pool(mddev, rdev, true);
 
        if ((err = kobject_add(&rdev->kobj, &mddev->kobj, "dev-%s", b)))
                goto fail;
@@ -4662,7 +4662,7 @@ new_dev_store(struct mddev *mddev, const char *buf, 
size_t len)
            minor != MINOR(dev))
                return -EOVERFLOW;
 
-       err = mddev_lock(mddev);
+       err = mddev_suspend_and_lock(mddev);
        if (err)
                return err;
        if (mddev->persistent) {
@@ -4683,14 +4683,14 @@ new_dev_store(struct mddev *mddev, const char *buf, 
size_t len)
                rdev = md_import_device(dev, -1, -1);
 
        if (IS_ERR(rdev)) {
-               mddev_unlock(mddev);
+               mddev_unlock_and_resume(mddev);
                return PTR_ERR(rdev);
        }
        err = bind_rdev_to_array(rdev, mddev);
  out:
        if (err)
                export_rdev(rdev, mddev);
-       mddev_unlock(mddev);
+       mddev_unlock_and_resume(mddev);
        if (!err)
                md_new_event();
        return err ? err : len;
@@ -6619,13 +6619,13 @@ static void autorun_devices(int part)
                if (IS_ERR(mddev))
                        break;
 
-               if (mddev_lock(mddev))
+               if (mddev_suspend_and_lock(mddev))
                        pr_warn("md: %s locked, cannot run\n", mdname(mddev));
                else if (mddev->raid_disks || mddev->major_version
                         || !list_empty(&mddev->disks)) {
                        pr_warn("md: %s already running, cannot run %pg\n",
                                mdname(mddev), rdev0->bdev);
-                       mddev_unlock(mddev);
+                       mddev_unlock_and_resume(mddev);
                } else {
                        pr_debug("md: created %s\n", mdname(mddev));
                        mddev->persistent = 1;
@@ -6635,7 +6635,7 @@ static void autorun_devices(int part)
                                        export_rdev(rdev, mddev);
                        }
                        autorun_array(mddev);
-                       mddev_unlock(mddev);
+                       mddev_unlock_and_resume(mddev);
                }
                /* on success, candidates will be empty, on error
                 * it won't...
-- 
2.39.2

--
dm-devel mailing list
dm-devel@redhat.com
https://listman.redhat.com/mailman/listinfo/dm-devel

Reply via email to