md: flush md_rdev_misc_wq for HOT_ADD_DISK case
authorGuoqing Jiang <guoqing.jiang@cloud.ionos.com>
Sat, 4 Apr 2020 21:57:10 +0000 (23:57 +0200)
committerSong Liu <songliubraving@fb.com>
Wed, 13 May 2020 18:22:31 +0000 (11:22 -0700)
Since rdev->kobj is removed asynchronously, it is possible that the
rdev->kobj still exists when try to add the rdev again after rdev
is removed. But this path md_ioctl (HOT_ADD_DISK) -> hot_add_disk
-> bind_rdev_to_array missed it.

Signed-off-by: Guoqing Jiang <guoqing.jiang@cloud.ionos.com>
Signed-off-by: Song Liu <songliubraving@fb.com>
drivers/md/md.c

index f5dfa50..95b72e3 100644 (file)
@@ -7512,7 +7512,7 @@ static int md_ioctl(struct block_device *bdev, fmode_t mode,
 
        }
 
-       if (cmd == ADD_NEW_DISK)
+       if (cmd == ADD_NEW_DISK || cmd == HOT_ADD_DISK)
                flush_rdev_wq(mddev);
 
        if (cmd == HOT_REMOVE_DISK)