Exemple #1
0
int pvremove(struct cmd_context *cmd, int argc, char **argv)
{
	int i;
	unsigned force_count;
	unsigned prompt;
	struct dm_list pv_names;

	if (!argc) {
		log_error("Please enter a physical volume path");
		return EINVALID_CMD_LINE;
	}

	force_count = arg_count(cmd, force_ARG);
	prompt = arg_count(cmd, yes_ARG);

	dm_list_init(&pv_names);

	/* Needed to change the set of orphan PVs. */
	if (!lockd_gl(cmd, "ex", 0))
		return_ECMD_FAILED;

	for (i = 0; i < argc; i++) {
		dm_unescape_colons_and_at_signs(argv[i], NULL, NULL);
		if (!str_list_add(cmd->mem, &pv_names, argv[i]))
			return_ECMD_FAILED;
	}

	if (!pvremove_many(cmd, &pv_names, force_count, prompt))
		return_ECMD_FAILED;

	return ECMD_PROCESSED;
}
Exemple #2
0
int pvcreate(struct cmd_context *cmd, int argc, char **argv)
{
	int i;
	int ret = ECMD_PROCESSED;
	struct pvcreate_params pp;

	pvcreate_params_set_defaults(&pp);

	if (!pvcreate_restore_params_validate(cmd, argc, argv, &pp)) {
		return EINVALID_CMD_LINE;
	}
	if (!pvcreate_params_validate(cmd, argc, argv, &pp)) {
		return EINVALID_CMD_LINE;
	}

	for (i = 0; i < argc; i++) {
		if (sigint_caught())
			return_ECMD_FAILED;

		dm_unescape_colons_and_at_signs(argv[i], NULL, NULL);

		if (ECMD_PROCESSED != pvcreate_locked(cmd, argv[i], &pp)) {
			ret = ECMD_FAILED;
		}
	}

	return ret;
}
Exemple #3
0
int pvck(struct cmd_context *cmd, int argc, char **argv)
{
	int i;

	/* FIXME: validate cmdline options */
	/* FIXME: what does the cmdline look like? */
	/*
	 * Use what's on the cmdline directly, and avoid calling into
	 * some of the other infrastructure functions, so as to avoid
	 * hitting some of the lvmcache behavior, scanning other devices,
	 * etc.
	 */
	for (i = 0; i < argc; i++) {
		/* FIXME: warning and/or check if in use? */
		log_verbose("Scanning %s", argv[i]);

		dm_unescape_colons_and_at_signs(argv[i], NULL, NULL);
		pv_analyze(cmd, argv[i],
			   arg_uint64_value(cmd, labelsector_ARG,
					   UINT64_C(0)));
	}

	return ECMD_PROCESSED;
}
Exemple #4
0
int pvcreate(struct cmd_context *cmd, int argc, char **argv)
{
	int i;
	int ret = ECMD_PROCESSED;
	struct pvcreate_params pp;
	struct physical_volume *pv;

	pvcreate_params_set_defaults(&pp);

	if (!pvcreate_restore_params_validate(cmd, argc, argv, &pp)) {
		return EINVALID_CMD_LINE;
	}
	if (!pvcreate_params_validate(cmd, argc, argv, &pp)) {
		return EINVALID_CMD_LINE;
	}

	for (i = 0; i < argc; i++) {
		if (!lock_vol(cmd, VG_ORPHANS, LCK_VG_WRITE)) {
			log_error("Can't get lock for orphan PVs");
			return ECMD_FAILED;
		}

		dm_unescape_colons_and_at_signs(argv[i], NULL, NULL);

		if (!(pv = pvcreate_single(cmd, argv[i], &pp, 1))) {
			stack;
			ret = ECMD_FAILED;
		}

		unlock_vg(cmd, VG_ORPHANS);
		if (sigint_caught())
			return ret;
	}

	return ret;
}