From 57a44ab9831d5df9d4d0351e09d2d7236a02e7c9 Mon Sep 17 00:00:00 2001 From: NeilBrown Date: Tue, 11 Dec 2012 13:35:54 +1100 Subject: [PATCH] --- yaml --- r: 346522 b: refs/heads/master c: a7a3f08dc24690ae00c75cfe4b4701a970dd0155 h: refs/heads/master v: v3 --- [refs] | 2 +- trunk/drivers/md/md.c | 6 ++++++ 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/[refs] b/[refs] index 7a6303de0626..96e505cc8950 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 1f3c9907b8037de7b9635b0b471572ea8758bcd1 +refs/heads/master: a7a3f08dc24690ae00c75cfe4b4701a970dd0155 diff --git a/trunk/drivers/md/md.c b/trunk/drivers/md/md.c index 89dbd444517e..8b0e3d21f736 100644 --- a/trunk/drivers/md/md.c +++ b/trunk/drivers/md/md.c @@ -4752,6 +4752,8 @@ md_attr_store(struct kobject *kobj, struct attribute *attr, } mddev_get(mddev); spin_unlock(&all_mddevs_lock); + if (entry->store == new_dev_store) + flush_workqueue(md_misc_wq); rv = mddev_lock(mddev); if (!rv) { rv = entry->store(mddev, page, length); @@ -6397,6 +6399,10 @@ static int md_ioctl(struct block_device *bdev, fmode_t mode, goto abort; } + if (cmd == ADD_NEW_DISK) + /* need to ensure md_delayed_delete() has completed */ + flush_workqueue(md_misc_wq); + err = mddev_lock(mddev); if (err) { printk(KERN_INFO