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