]> sourceware.org Git - lvm2.git/commitdiff
Add pvcreate_params to vg_extend_single_pv.
authorDave Wysochanski <dwysocha@redhat.com>
Mon, 5 Oct 2009 20:02:30 +0000 (20:02 +0000)
committerDave Wysochanski <dwysocha@redhat.com>
Mon, 5 Oct 2009 20:02:30 +0000 (20:02 +0000)
Should be no functional change.  If this parameter is set to NULL, just fail
the extend if the device is not already a PV.  If non-NULL, try pvcreate_single
before failing.  Note that pvcreate_single() handles the log_error in case
of failure so we just return 0 if pvcreate_single() fails.

lib/metadata/metadata.c

index 07af5b1f3e0028d86bafbfdee8246e7e8b7603dc..b6f84d7c87cc863312436d05f4a2c339a5092411 100644 (file)
@@ -559,16 +559,23 @@ int vg_remove(struct volume_group *vg)
  * Parameters:
  * - vg: handle of volume group to extend by 'pv_name'
  * - pv_name: device path of PV to add to VG
+ * - pp: parameters to pass to implicit pvcreate; if NULL, do not pvcreate
  *
  */
-static int vg_extend_single_pv(struct volume_group *vg, char *pv_name)
+static int vg_extend_single_pv(struct volume_group *vg, char *pv_name,
+                              struct pvcreate_params *pp)
 {
        struct physical_volume *pv;
 
-       if (!(pv = pv_by_path(vg->fid->fmt->cmd, pv_name))) {
+       pv = pv_by_path(vg->fid->fmt->cmd, pv_name);
+       if (!pv && !pp) {
                log_error("%s not identified as an existing "
                          "physical volume", pv_name);
                return 0;
+       } else if (!pv && pp) {
+               pv = pvcreate_single(vg->cmd, pv_name, pp);
+               if (!pv)
+                       return 0;
        }
        if (!add_pv_to_vg(vg, pv_name, pv))
                return 0;
@@ -584,7 +591,7 @@ int vg_extend(struct volume_group *vg, int pv_count, char **pv_names)
 
        /* attach each pv */
        for (i = 0; i < pv_count; i++) {
-               if (!vg_extend_single_pv(vg, pv_names[i]))
+               if (!vg_extend_single_pv(vg, pv_names[i], NULL))
                        goto bad;
        }
 
This page took 0.038709 seconds and 5 git commands to generate.