From c24a4ff2cc7c498e26de9ae43777e735692b0101 Mon Sep 17 00:00:00 2001 From: Dave Wysochanski Date: Mon, 5 Oct 2009 20:03:08 +0000 Subject: [PATCH] Allow calling fill_default_pvcreate_params from tools. We need defaults for pvcreate_params at a higher level - this will allow us to use a common function from the tools to take defaults, then fill in any non-defaults from the commandline. Future patches will refactor vgcreate/vgextend to call this function if one or more pvcreate parameters are given on the commandline. --- lib/metadata/metadata-exported.h | 1 + lib/metadata/metadata.c | 2 +- liblvm/lvm_vg.c | 13 ++++--------- 3 files changed, 6 insertions(+), 10 deletions(-) diff --git a/lib/metadata/metadata-exported.h b/lib/metadata/metadata-exported.h index ebaea928e..b67afd0a0 100644 --- a/lib/metadata/metadata-exported.h +++ b/lib/metadata/metadata-exported.h @@ -371,6 +371,7 @@ struct pvcreate_params { struct physical_volume *pvcreate_single(struct cmd_context *cmd, const char *pv_name, struct pvcreate_params *pp); +void fill_default_pvcreate_params(struct pvcreate_params *pp); /* * Utility functions diff --git a/lib/metadata/metadata.c b/lib/metadata/metadata.c index 5f65d263c..341128db6 100644 --- a/lib/metadata/metadata.c +++ b/lib/metadata/metadata.c @@ -1272,7 +1272,7 @@ static int pvcreate_check(struct cmd_context *cmd, const char *name, return 1; } -static void fill_default_pvcreate_params(struct pvcreate_params *pp) +void fill_default_pvcreate_params(struct pvcreate_params *pp) { memset(pp, 0, sizeof(*pp)); pp->zero = 0; diff --git a/liblvm/lvm_vg.c b/liblvm/lvm_vg.c index 0c097c037..4b4d7f640 100644 --- a/liblvm/lvm_vg.c +++ b/liblvm/lvm_vg.c @@ -41,6 +41,8 @@ vg_t lvm_vg_create(lvm_t libh, const char *vg_name) int lvm_vg_extend(vg_t vg, const char *device) { + struct pvcreate_params pp; + if (vg_read_error(vg)) return -1; @@ -52,15 +54,8 @@ int lvm_vg_extend(vg_t vg, const char *device) return -1; } - /* If device not initialized, pvcreate it */ - if (!pv_by_path(vg->cmd, device) && - (!pvcreate_single(vg->cmd, device, NULL))) { - log_error("Unable to initialize device for LVM use"); - unlock_vg(vg->cmd, VG_ORPHANS); - return -1; - } - - if (!vg_extend(vg, 1, (char **) &device, NULL)) { + fill_default_pvcreate_params(&pp); + if (!vg_extend(vg, 1, (char **) &device, &pp)) { unlock_vg(vg->cmd, VG_ORPHANS); return -1; }