Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 3adc28d8 authored by NeilBrown's avatar NeilBrown
Browse files

md: clean up 'exit' labels in md_ioctl().



There are 4 labels and we only really need two.

Signed-off-by: default avatarNeilBrown <neilb@suse.de>
parent 326eb17d
Loading
Loading
Loading
Loading
+35 −41
Original line number Diff line number Diff line
@@ -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