]> sourceware.org Git - lvm2.git/commitdiff
Add pv to vg->pvs after check for maximum value of vg->extent_count.
authorDave Wysochanski <dwysocha@redhat.com>
Tue, 6 Apr 2010 14:03:43 +0000 (14:03 +0000)
committerDave Wysochanski <dwysocha@redhat.com>
Tue, 6 Apr 2010 14:03:43 +0000 (14:03 +0000)
In add_pv_to_vg(), we should only add the pv to vg->pvs after all
internal checks have passed.  The check for vg->extent_count exeeding
maximum was after we added the pv to the list, so this function could
return a state of vg->pvs that did not reflect other parameters such
as vg->pv_count.

Signed-off-by: Dave Wysochanski <dwysocha@redhat.com>
lib/metadata/metadata.c

index a12a8c86541738594238456149a7a690c57b7ffa..9e6d9babca59635104853a01e93996a94cbf4697 100644 (file)
@@ -220,9 +220,6 @@ int add_pv_to_vg(struct volume_group *vg, const char *pv_name,
        if (!alloc_pv_segment_whole_pv(mem, pv))
                return_0;
 
-       pvl->pv = pv;
-       dm_list_add(&vg->pvs, &pvl->list);
-
        if ((uint64_t) vg->extent_count + pv->pe_count > UINT32_MAX) {
                log_error("Unable to add %s to %s: new extent count (%"
                          PRIu64 ") exceeds limit (%" PRIu32 ").",
@@ -232,6 +229,9 @@ int add_pv_to_vg(struct volume_group *vg, const char *pv_name,
                return 0;
        }
 
+       pvl->pv = pv;
+       dm_list_add(&vg->pvs, &pvl->list);
+
        vg->pv_count++;
        vg->extent_count += pv->pe_count;
        vg->free_count += pv->pe_count;
This page took 0.043588 seconds and 5 git commands to generate.