|
@@ -6347,24 +6347,23 @@ static int md_ioctl(struct block_device *bdev, fmode_t mode,
|
|
|
* Commands dealing with the RAID driver but not any
|
|
|
* particular array:
|
|
|
*/
|
|
|
- switch (cmd)
|
|
|
- {
|
|
|
- case RAID_VERSION:
|
|
|
- err = get_version(argp);
|
|
|
- goto done;
|
|
|
+ switch (cmd) {
|
|
|
+ case RAID_VERSION:
|
|
|
+ err = get_version(argp);
|
|
|
+ goto done;
|
|
|
|
|
|
- case PRINT_RAID_DEBUG:
|
|
|
- err = 0;
|
|
|
- md_print_devices();
|
|
|
- goto done;
|
|
|
+ case PRINT_RAID_DEBUG:
|
|
|
+ err = 0;
|
|
|
+ md_print_devices();
|
|
|
+ goto done;
|
|
|
|
|
|
#ifndef MODULE
|
|
|
- case RAID_AUTORUN:
|
|
|
- err = 0;
|
|
|
- autostart_arrays(arg);
|
|
|
- goto done;
|
|
|
+ case RAID_AUTORUN:
|
|
|
+ err = 0;
|
|
|
+ autostart_arrays(arg);
|
|
|
+ goto done;
|
|
|
#endif
|
|
|
- default:;
|
|
|
+ default:;
|
|
|
}
|
|
|
|
|
|
/*
|
|
@@ -6411,50 +6410,44 @@ static int md_ioctl(struct block_device *bdev, fmode_t mode,
|
|
|
goto abort;
|
|
|
}
|
|
|
|
|
|
- switch (cmd)
|
|
|
- {
|
|
|
- case SET_ARRAY_INFO:
|
|
|
- {
|
|
|
- mdu_array_info_t info;
|
|
|
- if (!arg)
|
|
|
- memset(&info, 0, sizeof(info));
|
|
|
- else if (copy_from_user(&info, argp, sizeof(info))) {
|
|
|
- err = -EFAULT;
|
|
|
- goto abort_unlock;
|
|
|
- }
|
|
|
- if (mddev->pers) {
|
|
|
- err = update_array_info(mddev, &info);
|
|
|
- if (err) {
|
|
|
- printk(KERN_WARNING "md: couldn't update"
|
|
|
- " array info. %d\n", err);
|
|
|
- goto abort_unlock;
|
|
|
- }
|
|
|
- goto done_unlock;
|
|
|
- }
|
|
|
- if (!list_empty(&mddev->disks)) {
|
|
|
- printk(KERN_WARNING
|
|
|
- "md: array %s already has disks!\n",
|
|
|
- mdname(mddev));
|
|
|
- err = -EBUSY;
|
|
|
- goto abort_unlock;
|
|
|
- }
|
|
|
- if (mddev->raid_disks) {
|
|
|
- printk(KERN_WARNING
|
|
|
- "md: array %s already initialised!\n",
|
|
|
- mdname(mddev));
|
|
|
- err = -EBUSY;
|
|
|
- goto abort_unlock;
|
|
|
- }
|
|
|
- err = set_array_info(mddev, &info);
|
|
|
- if (err) {
|
|
|
- printk(KERN_WARNING "md: couldn't set"
|
|
|
- " array info. %d\n", err);
|
|
|
- goto abort_unlock;
|
|
|
- }
|
|
|
+ if (cmd == SET_ARRAY_INFO) {
|
|
|
+ mdu_array_info_t info;
|
|
|
+ if (!arg)
|
|
|
+ memset(&info, 0, sizeof(info));
|
|
|
+ else if (copy_from_user(&info, argp, sizeof(info))) {
|
|
|
+ err = -EFAULT;
|
|
|
+ goto abort_unlock;
|
|
|
+ }
|
|
|
+ if (mddev->pers) {
|
|
|
+ err = update_array_info(mddev, &info);
|
|
|
+ if (err) {
|
|
|
+ printk(KERN_WARNING "md: couldn't update"
|
|
|
+ " array info. %d\n", err);
|
|
|
+ goto abort_unlock;
|
|
|
}
|
|
|
goto done_unlock;
|
|
|
-
|
|
|
- default:;
|
|
|
+ }
|
|
|
+ if (!list_empty(&mddev->disks)) {
|
|
|
+ printk(KERN_WARNING
|
|
|
+ "md: array %s already has disks!\n",
|
|
|
+ mdname(mddev));
|
|
|
+ err = -EBUSY;
|
|
|
+ goto abort_unlock;
|
|
|
+ }
|
|
|
+ if (mddev->raid_disks) {
|
|
|
+ printk(KERN_WARNING
|
|
|
+ "md: array %s already initialised!\n",
|
|
|
+ mdname(mddev));
|
|
|
+ err = -EBUSY;
|
|
|
+ goto abort_unlock;
|
|
|
+ }
|
|
|
+ err = set_array_info(mddev, &info);
|
|
|
+ if (err) {
|
|
|
+ printk(KERN_WARNING "md: couldn't set"
|
|
|
+ " array info. %d\n", err);
|
|
|
+ goto abort_unlock;
|
|
|
+ }
|
|
|
+ goto done_unlock;
|
|
|
}
|
|
|
|
|
|
/*
|
|
@@ -6473,52 +6466,51 @@ static int md_ioctl(struct block_device *bdev, fmode_t mode,
|
|
|
/*
|
|
|
* Commands even a read-only array can execute:
|
|
|
*/
|
|
|
- switch (cmd)
|
|
|
- {
|
|
|
- case GET_BITMAP_FILE:
|
|
|
- err = get_bitmap_file(mddev, argp);
|
|
|
- goto done_unlock;
|
|
|
+ switch (cmd) {
|
|
|
+ case GET_BITMAP_FILE:
|
|
|
+ err = get_bitmap_file(mddev, argp);
|
|
|
+ goto done_unlock;
|
|
|
|
|
|
- case RESTART_ARRAY_RW:
|
|
|
- err = restart_array(mddev);
|
|
|
- goto done_unlock;
|
|
|
+ case RESTART_ARRAY_RW:
|
|
|
+ err = restart_array(mddev);
|
|
|
+ goto done_unlock;
|
|
|
|
|
|
- case STOP_ARRAY:
|
|
|
- err = do_md_stop(mddev, 0, bdev);
|
|
|
- goto done_unlock;
|
|
|
+ case STOP_ARRAY:
|
|
|
+ err = do_md_stop(mddev, 0, bdev);
|
|
|
+ goto done_unlock;
|
|
|
|
|
|
- case STOP_ARRAY_RO:
|
|
|
- err = md_set_readonly(mddev, bdev);
|
|
|
- goto done_unlock;
|
|
|
+ case STOP_ARRAY_RO:
|
|
|
+ err = md_set_readonly(mddev, bdev);
|
|
|
+ goto done_unlock;
|
|
|
|
|
|
- case BLKROSET:
|
|
|
- if (get_user(ro, (int __user *)(arg))) {
|
|
|
- err = -EFAULT;
|
|
|
- goto done_unlock;
|
|
|
- }
|
|
|
- err = -EINVAL;
|
|
|
+ case BLKROSET:
|
|
|
+ if (get_user(ro, (int __user *)(arg))) {
|
|
|
+ err = -EFAULT;
|
|
|
+ goto done_unlock;
|
|
|
+ }
|
|
|
+ err = -EINVAL;
|
|
|
|
|
|
- /* if the bdev is going readonly the value of mddev->ro
|
|
|
- * does not matter, no writes are coming
|
|
|
- */
|
|
|
- if (ro)
|
|
|
- goto done_unlock;
|
|
|
+ /* if the bdev is going readonly the value of mddev->ro
|
|
|
+ * does not matter, no writes are coming
|
|
|
+ */
|
|
|
+ if (ro)
|
|
|
+ goto done_unlock;
|
|
|
|
|
|
- /* are we are already prepared for writes? */
|
|
|
- if (mddev->ro != 1)
|
|
|
- goto done_unlock;
|
|
|
+ /* are we are already prepared for writes? */
|
|
|
+ if (mddev->ro != 1)
|
|
|
+ goto done_unlock;
|
|
|
|
|
|
- /* transitioning to readauto need only happen for
|
|
|
- * arrays that call md_write_start
|
|
|
- */
|
|
|
- if (mddev->pers) {
|
|
|
- err = restart_array(mddev);
|
|
|
- if (err == 0) {
|
|
|
- mddev->ro = 2;
|
|
|
- set_disk_ro(mddev->gendisk, 0);
|
|
|
- }
|
|
|
+ /* transitioning to readauto need only happen for
|
|
|
+ * arrays that call md_write_start
|
|
|
+ */
|
|
|
+ if (mddev->pers) {
|
|
|
+ err = restart_array(mddev);
|
|
|
+ if (err == 0) {
|
|
|
+ mddev->ro = 2;
|
|
|
+ set_disk_ro(mddev->gendisk, 0);
|
|
|
}
|
|
|
- goto done_unlock;
|
|
|
+ }
|
|
|
+ goto done_unlock;
|
|
|
}
|
|
|
|
|
|
/*
|
|
@@ -6540,37 +6532,36 @@ static int md_ioctl(struct block_device *bdev, fmode_t mode,
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- switch (cmd)
|
|
|
+ switch (cmd) {
|
|
|
+ case ADD_NEW_DISK:
|
|
|
{
|
|
|
- case ADD_NEW_DISK:
|
|
|
- {
|
|
|
- mdu_disk_info_t info;
|
|
|
- if (copy_from_user(&info, argp, sizeof(info)))
|
|
|
- err = -EFAULT;
|
|
|
- else
|
|
|
- err = add_new_disk(mddev, &info);
|
|
|
- goto done_unlock;
|
|
|
- }
|
|
|
+ mdu_disk_info_t info;
|
|
|
+ if (copy_from_user(&info, argp, sizeof(info)))
|
|
|
+ err = -EFAULT;
|
|
|
+ else
|
|
|
+ err = add_new_disk(mddev, &info);
|
|
|
+ goto done_unlock;
|
|
|
+ }
|
|
|
|
|
|
- case HOT_REMOVE_DISK:
|
|
|
- err = hot_remove_disk(mddev, new_decode_dev(arg));
|
|
|
- goto done_unlock;
|
|
|
+ case HOT_REMOVE_DISK:
|
|
|
+ err = hot_remove_disk(mddev, new_decode_dev(arg));
|
|
|
+ goto done_unlock;
|
|
|
|
|
|
- case HOT_ADD_DISK:
|
|
|
- err = hot_add_disk(mddev, new_decode_dev(arg));
|
|
|
- goto done_unlock;
|
|
|
+ case HOT_ADD_DISK:
|
|
|
+ err = hot_add_disk(mddev, new_decode_dev(arg));
|
|
|
+ goto done_unlock;
|
|
|
|
|
|
- case RUN_ARRAY:
|
|
|
- err = do_md_run(mddev);
|
|
|
- goto done_unlock;
|
|
|
+ case RUN_ARRAY:
|
|
|
+ err = do_md_run(mddev);
|
|
|
+ goto done_unlock;
|
|
|
|
|
|
- case SET_BITMAP_FILE:
|
|
|
- err = set_bitmap_file(mddev, (int)arg);
|
|
|
- goto done_unlock;
|
|
|
+ case SET_BITMAP_FILE:
|
|
|
+ err = set_bitmap_file(mddev, (int)arg);
|
|
|
+ goto done_unlock;
|
|
|
|
|
|
- default:
|
|
|
- err = -EINVAL;
|
|
|
- goto abort_unlock;
|
|
|
+ default:
|
|
|
+ err = -EINVAL;
|
|
|
+ goto abort_unlock;
|
|
|
}
|
|
|
|
|
|
done_unlock:
|