]> sourceware.org Git - lvm2.git/commitdiff
Call destroy_instance for any PVs found in VG structure during vg_free call.
authorPeter Rajnoha <prajnoha@redhat.com>
Fri, 11 Mar 2011 15:06:13 +0000 (15:06 +0000)
committerPeter Rajnoha <prajnoha@redhat.com>
Fri, 11 Mar 2011 15:06:13 +0000 (15:06 +0000)
This is necessary for proper format instance ref_count support. We iterate
over vg->pvs and vg->removed_pvs list and the ref_count is decremented and
then it is destroyed if not referenced anymore.

WHATS_NEW
lib/metadata/metadata.c

index 606a20ad101174637b84b73fa59b9793b89631b4..9b8c79bbaf2f34f1520238378dcefd7ed9df38a8 100644 (file)
--- a/WHATS_NEW
+++ b/WHATS_NEW
@@ -1,5 +1,6 @@
 Version 2.02.85 - 
 ===================================
+  Call destroy_instance for any PVs found in VG structure during vg_free call.
   Add new free_pv_fid fn and use it throughout to free all attached fids.
   Use only vg_set_fid and new pv_set_fid fn to assign the format instance.
   Make create_text_context fn static and move it inside create_instance fn.
index a7553a547bb8ce41b32eeee4d2dc4a68c5c5656b..d1035e539fd193e78d89e7e260ec267684a1bd56 100644 (file)
@@ -3243,9 +3243,20 @@ void free_pv_fid(struct physical_volume *pv)
 
 void free_vg(struct volume_group *vg)
 {
+       struct pv_list *pvl;
+
        if (!vg)
                return;
 
+       dm_list_iterate_items(pvl, &vg->pvs)
+               pvl->pv->fid->fmt->ops->destroy_instance(pvl->pv->fid);
+
+       dm_list_iterate_items(pvl, &vg->removed_pvs)
+               pvl->pv->fid->fmt->ops->destroy_instance(pvl->pv->fid);
+
+       if (vg->fid)
+               vg->fid->fmt->ops->destroy_instance(vg->fid);
+
        if (vg->cmd && vg->vgmem == vg->cmd->mem) {
                log_error(INTERNAL_ERROR "global memory pool used for VG %s",
                          vg->name);
This page took 0.049402 seconds and 5 git commands to generate.