public inbox for lvm2-cvs@sourceware.org help / color / mirror / Atom feed
From: prajnoha@sourceware.org To: lvm-devel@redhat.com, lvm2-cvs@sourceware.org Subject: LVM2/lib/metadata metadata.c Date: Fri, 01 Apr 2011 14:54:00 -0000 [thread overview] Message-ID: <20110401145421.8740.qmail@sourceware.org> (raw) CVSROOT: /cvs/lvm2 Module name: LVM2 Changes by: prajnoha@sourceware.org 2011-04-01 14:54:21 Modified files: lib/metadata : metadata.c Log message: Cleanup fid finalization code in free_vg and allow exactly the same fid to be set again for a PV/VG. Actually, we can call vg_set_fid(vg, NULL) instead of calling destroy_instance for all PV structs and a VG struct - it's the same code we already have in the vg_set_fid. Also, allow exactly the same fid to be set again for the same PV/VG Before, this could end up with the fid destroyed because we destroyed existing fid first and then we used the new one and we didn't care whether existing one == new one by chance. Patches: http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/lib/metadata/metadata.c.diff?cvsroot=lvm2&r1=1.452&r2=1.453 --- LVM2/lib/metadata/metadata.c 2011/03/30 13:35:51 1.452 +++ LVM2/lib/metadata/metadata.c 2011/04/01 14:54:20 1.453 @@ -3243,19 +3243,10 @@ 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); + vg_set_fid(vg, NULL); if (vg->cmd && vg->vgmem == vg->cmd->mem) { log_error(INTERNAL_ERROR "global memory pool used for VG %s", @@ -4048,12 +4039,13 @@ void pv_set_fid(struct physical_volume *pv, struct format_instance *fid) { + if (fid) + fid->ref_count++; + if (pv->fid) pv->fid->fmt->ops->destroy_instance(pv->fid); pv->fid = fid; - if (fid) - fid->ref_count++; } void vg_set_fid(struct volume_group *vg, @@ -4061,15 +4053,19 @@ { struct pv_list *pvl; - if (vg->fid) - vg->fid->fmt->ops->destroy_instance(vg->fid); - - vg->fid = fid; if (fid) fid->ref_count++; dm_list_iterate_items(pvl, &vg->pvs) pv_set_fid(pvl->pv, fid); + + dm_list_iterate_items(pvl, &vg->removed_pvs) + pv_set_fid(pvl->pv, fid); + + if (vg->fid) + vg->fid->fmt->ops->destroy_instance(vg->fid); + + vg->fid = fid; } static int _convert_key_to_string(const char *key, size_t key_len,
next reply other threads:[~2011-04-01 14:54 UTC|newest] Thread overview: 73+ messages / expand[flat|nested] mbox.gz Atom feed top 2011-04-01 14:54 prajnoha [this message] -- strict thread matches above, loose matches on Subject: below -- 2012-03-12 14:43 zkabelac 2012-03-01 9:46 zkabelac 2012-02-29 0:19 mornfall 2012-02-29 0:18 mornfall 2012-02-28 11:10 zkabelac 2012-02-27 9:54 zkabelac 2012-02-12 20:19 agk 2012-01-25 8:50 zkabelac 2011-03-30 13:35 zkabelac 2011-03-10 22:39 zkabelac 2011-02-21 12:13 prajnoha 2011-02-14 19:27 mornfall 2010-12-14 17:07 mornfall 2010-11-30 11:15 mornfall 2010-10-25 13:35 zkabelac 2010-07-30 16:47 wysochanski 2010-07-09 16:57 wysochanski 2010-07-08 17:41 wysochanski 2010-07-06 20:09 agk 2010-07-06 17:29 agk 2010-07-06 17:27 agk 2010-07-06 17:26 agk 2010-06-30 19:55 wysochanski 2010-06-30 14:54 agk 2010-06-30 14:52 agk 2010-06-30 14:48 wysochanski 2010-06-30 14:27 agk 2010-06-28 20:38 wysochanski 2010-06-28 20:38 wysochanski 2010-06-28 20:37 wysochanski 2010-06-28 20:35 wysochanski 2010-06-28 20:35 wysochanski 2010-04-08 15:18 wysochanski 2010-04-06 14:03 wysochanski 2010-04-01 13:08 agk 2010-04-01 11:45 agk 2010-02-24 18:15 wysochanski 2010-01-21 21:04 wysochanski 2010-01-21 21:04 wysochanski 2010-01-07 14:29 zkabelac 2009-12-16 19:26 mornfall 2009-11-19 13:44 mornfall 2009-10-05 20:02 wysochanski 2009-10-05 20:02 wysochanski 2009-09-02 21:39 wysochanski 2009-08-10 17:15 wysochanski 2009-07-28 20:41 agk 2009-07-26 12:41 wysochanski 2009-07-26 1:53 wysochanski 2009-07-26 1:52 wysochanski 2009-07-24 15:15 wysochanski 2009-07-16 20:18 wysochanski 2009-07-01 17:03 wysochanski 2009-06-10 16:14 wysochanski 2009-05-13 1:48 agk 2009-04-28 17:46 wysochanski 2009-04-10 10:01 mbroz 2009-04-02 15:01 mbroz 2009-02-23 16:53 mbroz 2009-01-26 22:22 agk 2008-08-13 13:42 zkabelac 2008-01-22 16:02 agk 2008-01-16 22:52 agk 2007-10-12 21:08 wysochanski 2007-08-06 21:11 wysochanski 2007-07-12 4:12 wysochanski 2007-06-13 21:14 wysochanski 2007-06-12 21:39 wysochanski 2006-10-07 23:06 agk 2005-04-19 20:44 agk 2005-04-17 23:59 agk 2004-03-26 21:07 agk
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=20110401145421.8740.qmail@sourceware.org \ --to=prajnoha@sourceware.org \ --cc=lvm-devel@redhat.com \ --cc=lvm2-cvs@sourceware.org \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: linkBe sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).