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: link
Be 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).