public inbox for lvm2-cvs@sourceware.org help / color / mirror / Atom feed
From: agk@sourceware.org To: lvm-devel@redhat.com, lvm2-cvs@sourceware.org Subject: LVM2 ./WHATS_NEW lib/format_text/format-text.c Date: Thu, 31 Jul 2008 10:50:00 -0000 [thread overview] Message-ID: <20080731105019.32561.qmail@sourceware.org> (raw) CVSROOT: /cvs/lvm2 Module name: LVM2 Changes by: agk@sourceware.org 2008-07-31 10:50:19 Modified files: . : WHATS_NEW lib/format_text: format-text.c Log message: Refactor _text_pv_read and always return mda list if requested. Patches: http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/WHATS_NEW.diff?cvsroot=lvm2&r1=1.936&r2=1.937 http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/lib/format_text/format-text.c.diff?cvsroot=lvm2&r1=1.91&r2=1.92 --- LVM2/WHATS_NEW 2008/07/24 15:39:47 1.936 +++ LVM2/WHATS_NEW 2008/07/31 10:50:12 1.937 @@ -1,5 +1,6 @@ Version 2.02.40 - ================================ + Refactor _text_pv_read and always return mda list if requested. Fix configure to work w/o readline unless --enable-readline used. (2.02.39) Remove is_lvm_partition template which has not yet been coded. Refactor pvcreate to separate parameter parsing from validation logic. --- LVM2/lib/format_text/format-text.c 2008/07/16 21:32:38 1.91 +++ LVM2/lib/format_text/format-text.c 2008/07/31 10:50:18 1.92 @@ -1396,43 +1396,33 @@ return 1; } -static int _text_pv_read(const struct format_type *fmt, const char *pv_name, - struct physical_volume *pv, struct list *mdas) +static int _get_pv_if_in_vg(struct lvmcache_info *info, + struct physical_volume *pv) { - struct label *label; - struct device *dev; - struct lvmcache_info *info; - struct metadata_area *mda, *mda_new; - struct mda_context *mdac, *mdac_new; - struct data_area_list *da; + if (info->vginfo && info->vginfo->vgname && + !is_orphan_vg(info->vginfo->vgname) && + get_pv_from_vg_by_id(info->fmt, info->vginfo->vgname, + info->vginfo->vgid, info->dev->pvid, pv)) + return 1; - if (!(dev = dev_cache_get(pv_name, fmt->cmd->filter))) - return_0; + return 0; +} - /* FIXME Optimise out repeated reading when cache lock held */ - if (!(label_read(dev, &label, UINT64_C(0)))) - return_0; - info = (struct lvmcache_info *) label->info; +static int _populate_pv_fields(struct lvmcache_info *info, + struct physical_volume *pv) +{ + struct data_area_list *da; /* Have we already cached vgname? */ - if (info->vginfo && info->vginfo->vgname && - !is_orphan_vg(info->vginfo->vgname) && - get_pv_from_vg_by_id(info->fmt, info->vginfo->vgname, - info->vginfo->vgid, info->dev->pvid, pv)) { + if (_get_pv_if_in_vg(info, pv)) return 1; - } /* Perform full scan (just the first time) and try again */ if (!memlock() && !full_scan_done()) { - lvmcache_label_scan(fmt->cmd, 2); + lvmcache_label_scan(info->fmt->cmd, 2); - if (info->vginfo && info->vginfo->vgname && - !is_orphan_vg(info->vginfo->vgname) && - get_pv_from_vg_by_id(info->fmt, info->vginfo->vgname, - info->vginfo->vgid, - info->dev->pvid, pv)) { + if (_get_pv_if_in_vg(info, pv)) return 1; - } } /* Orphan */ @@ -1445,13 +1435,35 @@ /* Currently only support exactly one data area */ if (list_size(&info->das) != 1) { log_error("Must be exactly one data area (found %d) on PV %s", - list_size(&info->das), dev_name(dev)); + list_size(&info->das), dev_name(info->dev)); return 0; } list_iterate_items(da, &info->das) pv->pe_start = da->disk_locn.offset >> SECTOR_SHIFT; + return 1; +} + +static int _text_pv_read(const struct format_type *fmt, const char *pv_name, + struct physical_volume *pv, struct list *mdas) +{ + struct label *label; + struct device *dev; + struct lvmcache_info *info; + struct metadata_area *mda, *mda_new; + struct mda_context *mdac, *mdac_new; + + if (!(dev = dev_cache_get(pv_name, fmt->cmd->filter))) + return_0; + + if (!(label_read(dev, &label, UINT64_C(0)))) + return_0; + info = (struct lvmcache_info *) label->info; + + if (!_populate_pv_fields(info, pv)) + return 0; + if (!mdas) return 1;
next reply other threads:[~2008-07-31 10:50 UTC|newest] Thread overview: 17+ messages / expand[flat|nested] mbox.gz Atom feed top 2008-07-31 10:50 agk [this message] 2008-08-16 9:46 mbroz 2008-09-30 20:37 agk 2008-10-17 0:55 agk 2009-03-03 16:35 mbroz 2009-03-23 21:13 taka 2009-07-30 17:18 snitzer 2009-07-30 17:19 snitzer 2009-07-30 17:42 snitzer 2009-07-30 18:40 snitzer 2009-07-30 21:15 snitzer 2010-06-01 12:08 prajnoha 2010-09-30 14:12 prajnoha 2010-10-26 9:13 zkabelac 2011-02-03 1:41 zkabelac 2011-08-29 13:37 prajnoha 2012-02-13 11:09 zkabelac
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=20080731105019.32561.qmail@sourceware.org \ --to=agk@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).