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; }
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; }
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; }
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; }