|
@@ -4647,9 +4647,10 @@ static int md_ioctl(struct inode *inode, struct file *file,
|
|
|
*/
|
|
|
/* if we are not initialised yet, only ADD_NEW_DISK, STOP_ARRAY,
|
|
|
* RUN_ARRAY, and GET_ and SET_BITMAP_FILE are allowed */
|
|
|
- if (!mddev->raid_disks && cmd != ADD_NEW_DISK && cmd != STOP_ARRAY
|
|
|
- && cmd != RUN_ARRAY && cmd != SET_BITMAP_FILE
|
|
|
- && cmd != GET_BITMAP_FILE) {
|
|
|
+ if ((!mddev->raid_disks && !mddev->external)
|
|
|
+ && cmd != ADD_NEW_DISK && cmd != STOP_ARRAY
|
|
|
+ && cmd != RUN_ARRAY && cmd != SET_BITMAP_FILE
|
|
|
+ && cmd != GET_BITMAP_FILE) {
|
|
|
err = -ENODEV;
|
|
|
goto abort_unlock;
|
|
|
}
|