summaryrefslogtreecommitdiffstats
path: root/lib
diff options
context:
space:
mode:
authorDave Wysochanski <dwysocha@redhat.com>2010-06-28 20:34:40 +0000
committerDave Wysochanski <dwysocha@redhat.com>2010-06-28 20:34:40 +0000
commitf9c307cd073ddc042c3d79f504c303ddea210a57 (patch)
tree4339a64df82e92cfa8f135571eba3abbecda21cc /lib
parente6bd367b571ad36160dbb149b22e393c4962b44f (diff)
downloadlvm2-f9c307cd073ddc042c3d79f504c303ddea210a57.tar.gz
lvm2-f9c307cd073ddc042c3d79f504c303ddea210a57.tar.xz
lvm2-f9c307cd073ddc042c3d79f504c303ddea210a57.zip
Add mdas_empty_or_ignored() helper function.
Add a helper function to consolidate checking for an empty mdas list or ignored mdas. Ignored mdas should behave almost identically to an empty mda list - the metadata areas should not be read or written to. This function will make it easier to implement metadata balancing and easier to track pvs with an empty mda list or ignored mdas. Signed-off-by: Dave Wysochanski <dwysocha@redhat.com>
Diffstat (limited to 'lib')
-rw-r--r--lib/metadata/metadata.c13
-rw-r--r--lib/metadata/metadata.h1
2 files changed, 14 insertions, 0 deletions
diff --git a/lib/metadata/metadata.c b/lib/metadata/metadata.c
index 03d2ae90..907886a6 100644
--- a/lib/metadata/metadata.c
+++ b/lib/metadata/metadata.c
@@ -4032,6 +4032,19 @@ unsigned pv_mda_set_ignored(const struct physical_volume *pv, unsigned ignored)
return 1;
}
+int mdas_empty_or_ignored(struct dm_list *mdas)
+{
+ struct metadata_area *mda;
+
+ if (!dm_list_size(mdas))
+ return 1;
+ dm_list_iterate_items(mda, mdas) {
+ if (mda_is_ignored(mda))
+ return 1;
+ }
+ return 0;
+}
+
uint32_t vg_seqno(const struct volume_group *vg)
{
return vg->seqno;
diff --git a/lib/metadata/metadata.h b/lib/metadata/metadata.h
index 22e5dbb4..93c57f82 100644
--- a/lib/metadata/metadata.h
+++ b/lib/metadata/metadata.h
@@ -185,6 +185,7 @@ void mda_set_ignored(struct metadata_area *mda, int value);
unsigned mda_locns_match(struct metadata_area *mda1, struct metadata_area *mda2);
void fid_add_mda(struct format_instance *fid, struct metadata_area *mda);
int fid_add_mdas(struct format_instance *fid, struct dm_list *mdas);
+int mdas_empty_or_ignored(struct dm_list *mdas);
#define seg_pvseg(seg, s) (seg)->areas[(s)].u.pv.pvseg
#define seg_dev(seg, s) (seg)->areas[(s)].u.pv.pvseg->pv->dev