md: clean up 'exit' labels in md_ioctl().
There are 4 labels and we only really need two. Signed-off-by: NeilBrown <neilb@suse.de>
This commit is contained in:
Родитель
326eb17d73
Коммит
3adc28d85f
|
@ -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:;
|
||||
}
|
||||
|
@ -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 */
|
||||
|
@ -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)
|
||||
|
@ -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);
|
||||
|
@ -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) {
|
||||
|
@ -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;
|
||||
}
|
||||
|
||||
/*
|
||||
|
@ -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;
|
||||
}
|
||||
|
||||
/*
|
||||
|
@ -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
|
||||
|
@ -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;
|
||||
|
||||
|
@ -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
|
||||
|
@ -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;
|
||||
}
|
||||
|
||||
/*
|
||||
|
@ -6578,7 +6578,7 @@ static int md_ioctl(struct block_device *bdev, fmode_t mode,
|
|||
}
|
||||
} else {
|
||||
err = -EROFS;
|
||||
goto abort_unlock;
|
||||
goto unlock;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -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
|
||||
|
|
Загрузка…
Ссылка в новой задаче