Loading drivers/md/md.c +35 −41 Original line number Diff line number Diff line Loading @@ -6351,18 +6351,18 @@ static int md_ioctl(struct block_device *bdev, fmode_t mode, switch (cmd) { case RAID_VERSION: err = get_version(argp); goto done; goto out; case PRINT_RAID_DEBUG: err = 0; md_print_devices(); goto done; goto out; #ifndef MODULE case RAID_AUTORUN: err = 0; autostart_arrays(arg); goto done; goto out; #endif default:; } Loading @@ -6375,7 +6375,7 @@ static int md_ioctl(struct block_device *bdev, fmode_t mode, if (!mddev) { BUG(); goto abort; goto out; } /* Some actions do not requires the mutex */ Loading @@ -6385,18 +6385,18 @@ static int md_ioctl(struct block_device *bdev, fmode_t mode, err = -ENODEV; else err = get_array_info(mddev, argp); goto abort; goto out; case GET_DISK_INFO: if (!mddev->raid_disks && !mddev->external) err = -ENODEV; else err = get_disk_info(mddev, argp); goto abort; goto out; case SET_DISK_FAULTY: err = set_disk_faulty(mddev, new_decode_dev(arg)); goto abort; goto out; } if (cmd == ADD_NEW_DISK) Loading @@ -6417,7 +6417,7 @@ static int md_ioctl(struct block_device *bdev, fmode_t mode, if (mddev->pers && atomic_read(&mddev->openers) > 1) { mutex_unlock(&mddev->open_mutex); err = -EBUSY; goto abort; goto out; } set_bit(MD_STILL_CLOSED, &mddev->flags); mutex_unlock(&mddev->open_mutex); Loading @@ -6428,7 +6428,7 @@ static int md_ioctl(struct block_device *bdev, fmode_t mode, printk(KERN_INFO "md: ioctl lock interrupted, reason %d, cmd %d\n", err, cmd); goto abort; goto out; } if (cmd == SET_ARRAY_INFO) { Loading @@ -6437,38 +6437,38 @@ static int md_ioctl(struct block_device *bdev, fmode_t mode, memset(&info, 0, sizeof(info)); else if (copy_from_user(&info, argp, sizeof(info))) { err = -EFAULT; goto abort_unlock; goto 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 unlock; } goto done_unlock; goto unlock; } if (!list_empty(&mddev->disks)) { printk(KERN_WARNING "md: array %s already has disks!\n", mdname(mddev)); err = -EBUSY; goto abort_unlock; goto unlock; } if (mddev->raid_disks) { printk(KERN_WARNING "md: array %s already initialised!\n", mdname(mddev)); err = -EBUSY; goto abort_unlock; goto 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 unlock; } goto done_unlock; goto unlock; } /* Loading @@ -6481,7 +6481,7 @@ static int md_ioctl(struct block_device *bdev, fmode_t mode, && cmd != RUN_ARRAY && cmd != SET_BITMAP_FILE && cmd != GET_BITMAP_FILE) { err = -ENODEV; goto abort_unlock; goto unlock; } /* Loading @@ -6490,23 +6490,23 @@ static int md_ioctl(struct block_device *bdev, fmode_t mode, switch (cmd) { case GET_BITMAP_FILE: err = get_bitmap_file(mddev, argp); goto done_unlock; goto unlock; case RESTART_ARRAY_RW: err = restart_array(mddev); goto done_unlock; goto unlock; case STOP_ARRAY: err = do_md_stop(mddev, 0, bdev); goto done_unlock; goto unlock; case STOP_ARRAY_RO: err = md_set_readonly(mddev, bdev); goto done_unlock; goto unlock; case HOT_REMOVE_DISK: err = hot_remove_disk(mddev, new_decode_dev(arg)); goto done_unlock; goto unlock; case ADD_NEW_DISK: /* We can support ADD_NEW_DISK on read-only arrays Loading @@ -6522,14 +6522,14 @@ static int md_ioctl(struct block_device *bdev, fmode_t mode, break; else err = add_new_disk(mddev, &info); goto done_unlock; goto unlock; } break; case BLKROSET: if (get_user(ro, (int __user *)(arg))) { err = -EFAULT; goto done_unlock; goto unlock; } err = -EINVAL; Loading @@ -6537,11 +6537,11 @@ static int md_ioctl(struct block_device *bdev, fmode_t mode, * does not matter, no writes are coming */ if (ro) goto done_unlock; goto unlock; /* are we are already prepared for writes? */ if (mddev->ro != 1) goto done_unlock; goto unlock; /* transitioning to readauto need only happen for * arrays that call md_write_start Loading @@ -6553,7 +6553,7 @@ static int md_ioctl(struct block_device *bdev, fmode_t mode, set_disk_ro(mddev->gendisk, 0); } } goto done_unlock; goto unlock; } /* Loading @@ -6578,7 +6578,7 @@ static int md_ioctl(struct block_device *bdev, fmode_t mode, } } else { err = -EROFS; goto abort_unlock; goto unlock; } } Loading @@ -6590,38 +6590,32 @@ static int md_ioctl(struct block_device *bdev, fmode_t mode, err = -EFAULT; else err = add_new_disk(mddev, &info); goto done_unlock; goto unlock; } case HOT_ADD_DISK: err = hot_add_disk(mddev, new_decode_dev(arg)); goto done_unlock; goto unlock; case RUN_ARRAY: err = do_md_run(mddev); goto done_unlock; goto unlock; case SET_BITMAP_FILE: err = set_bitmap_file(mddev, (int)arg); goto done_unlock; goto unlock; default: err = -EINVAL; goto abort_unlock; goto unlock; } done_unlock: abort_unlock: unlock: if (mddev->hold_active == UNTIL_IOCTL && err != -EINVAL) mddev->hold_active = 0; mddev_unlock(mddev); return err; done: if (err) MD_BUG(); abort: out: return err; } #ifdef CONFIG_COMPAT Loading Loading
drivers/md/md.c +35 −41 Original line number Diff line number Diff line Loading @@ -6351,18 +6351,18 @@ static int md_ioctl(struct block_device *bdev, fmode_t mode, switch (cmd) { case RAID_VERSION: err = get_version(argp); goto done; goto out; case PRINT_RAID_DEBUG: err = 0; md_print_devices(); goto done; goto out; #ifndef MODULE case RAID_AUTORUN: err = 0; autostart_arrays(arg); goto done; goto out; #endif default:; } Loading @@ -6375,7 +6375,7 @@ static int md_ioctl(struct block_device *bdev, fmode_t mode, if (!mddev) { BUG(); goto abort; goto out; } /* Some actions do not requires the mutex */ Loading @@ -6385,18 +6385,18 @@ static int md_ioctl(struct block_device *bdev, fmode_t mode, err = -ENODEV; else err = get_array_info(mddev, argp); goto abort; goto out; case GET_DISK_INFO: if (!mddev->raid_disks && !mddev->external) err = -ENODEV; else err = get_disk_info(mddev, argp); goto abort; goto out; case SET_DISK_FAULTY: err = set_disk_faulty(mddev, new_decode_dev(arg)); goto abort; goto out; } if (cmd == ADD_NEW_DISK) Loading @@ -6417,7 +6417,7 @@ static int md_ioctl(struct block_device *bdev, fmode_t mode, if (mddev->pers && atomic_read(&mddev->openers) > 1) { mutex_unlock(&mddev->open_mutex); err = -EBUSY; goto abort; goto out; } set_bit(MD_STILL_CLOSED, &mddev->flags); mutex_unlock(&mddev->open_mutex); Loading @@ -6428,7 +6428,7 @@ static int md_ioctl(struct block_device *bdev, fmode_t mode, printk(KERN_INFO "md: ioctl lock interrupted, reason %d, cmd %d\n", err, cmd); goto abort; goto out; } if (cmd == SET_ARRAY_INFO) { Loading @@ -6437,38 +6437,38 @@ static int md_ioctl(struct block_device *bdev, fmode_t mode, memset(&info, 0, sizeof(info)); else if (copy_from_user(&info, argp, sizeof(info))) { err = -EFAULT; goto abort_unlock; goto 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 unlock; } goto done_unlock; goto unlock; } if (!list_empty(&mddev->disks)) { printk(KERN_WARNING "md: array %s already has disks!\n", mdname(mddev)); err = -EBUSY; goto abort_unlock; goto unlock; } if (mddev->raid_disks) { printk(KERN_WARNING "md: array %s already initialised!\n", mdname(mddev)); err = -EBUSY; goto abort_unlock; goto 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 unlock; } goto done_unlock; goto unlock; } /* Loading @@ -6481,7 +6481,7 @@ static int md_ioctl(struct block_device *bdev, fmode_t mode, && cmd != RUN_ARRAY && cmd != SET_BITMAP_FILE && cmd != GET_BITMAP_FILE) { err = -ENODEV; goto abort_unlock; goto unlock; } /* Loading @@ -6490,23 +6490,23 @@ static int md_ioctl(struct block_device *bdev, fmode_t mode, switch (cmd) { case GET_BITMAP_FILE: err = get_bitmap_file(mddev, argp); goto done_unlock; goto unlock; case RESTART_ARRAY_RW: err = restart_array(mddev); goto done_unlock; goto unlock; case STOP_ARRAY: err = do_md_stop(mddev, 0, bdev); goto done_unlock; goto unlock; case STOP_ARRAY_RO: err = md_set_readonly(mddev, bdev); goto done_unlock; goto unlock; case HOT_REMOVE_DISK: err = hot_remove_disk(mddev, new_decode_dev(arg)); goto done_unlock; goto unlock; case ADD_NEW_DISK: /* We can support ADD_NEW_DISK on read-only arrays Loading @@ -6522,14 +6522,14 @@ static int md_ioctl(struct block_device *bdev, fmode_t mode, break; else err = add_new_disk(mddev, &info); goto done_unlock; goto unlock; } break; case BLKROSET: if (get_user(ro, (int __user *)(arg))) { err = -EFAULT; goto done_unlock; goto unlock; } err = -EINVAL; Loading @@ -6537,11 +6537,11 @@ static int md_ioctl(struct block_device *bdev, fmode_t mode, * does not matter, no writes are coming */ if (ro) goto done_unlock; goto unlock; /* are we are already prepared for writes? */ if (mddev->ro != 1) goto done_unlock; goto unlock; /* transitioning to readauto need only happen for * arrays that call md_write_start Loading @@ -6553,7 +6553,7 @@ static int md_ioctl(struct block_device *bdev, fmode_t mode, set_disk_ro(mddev->gendisk, 0); } } goto done_unlock; goto unlock; } /* Loading @@ -6578,7 +6578,7 @@ static int md_ioctl(struct block_device *bdev, fmode_t mode, } } else { err = -EROFS; goto abort_unlock; goto unlock; } } Loading @@ -6590,38 +6590,32 @@ static int md_ioctl(struct block_device *bdev, fmode_t mode, err = -EFAULT; else err = add_new_disk(mddev, &info); goto done_unlock; goto unlock; } case HOT_ADD_DISK: err = hot_add_disk(mddev, new_decode_dev(arg)); goto done_unlock; goto unlock; case RUN_ARRAY: err = do_md_run(mddev); goto done_unlock; goto unlock; case SET_BITMAP_FILE: err = set_bitmap_file(mddev, (int)arg); goto done_unlock; goto unlock; default: err = -EINVAL; goto abort_unlock; goto unlock; } done_unlock: abort_unlock: unlock: if (mddev->hold_active == UNTIL_IOCTL && err != -EINVAL) mddev->hold_active = 0; mddev_unlock(mddev); return err; done: if (err) MD_BUG(); abort: out: return err; } #ifdef CONFIG_COMPAT Loading