[lvm-devel] master - archiver: do not archive vg more then once
Zdenek Kabelac
zkabelac at fedoraproject.org
Mon Jul 1 21:13:27 UTC 2013
Gitweb: http://git.fedorahosted.org/git/?p=lvm2.git;a=commitdiff;h=e30028004b45a962c525685824e25dad80b7fbcf
Commit: e30028004b45a962c525685824e25dad80b7fbcf
Parent: afea2bf5982f9a060766c1b67cbbc97ea4ecba2d
Author: Zdenek Kabelac <zkabelac at redhat.com>
AuthorDate: Sun Jun 30 18:01:19 2013 +0200
Committer: Zdenek Kabelac <zkabelac at redhat.com>
CommitterDate: Mon Jul 1 23:09:26 2013 +0200
archiver: do not archive vg more then once
Do not keep multiple archives for the executed command.
Reuse the ALLOCATABLE_PV from pv status for
ARCHIVED_VG vg status. Mark VG with the bit with the
first archivation.
---
WHATS_NEW | 1 +
lib/format_text/archiver.c | 5 +++++
lib/format_text/flags.c | 1 +
lib/metadata/metadata-exported.h | 3 +++
4 files changed, 10 insertions(+), 0 deletions(-)
diff --git a/WHATS_NEW b/WHATS_NEW
index c24f576..b501121 100644
--- a/WHATS_NEW
+++ b/WHATS_NEW
@@ -1,5 +1,6 @@
Version 2.02.99 -
===================================
+ Avoid creation of multiple archives for one command.
Use mirror_segtype_default if type not specified for linear->mirror upconvert.
Fix use of too big chunks of memory when communication with lvmetad.
Fix vgcfgrestore crash when specified incorrect vg name.
diff --git a/lib/format_text/archiver.c b/lib/format_text/archiver.c
index 8599e3b..c012c8f 100644
--- a/lib/format_text/archiver.c
+++ b/lib/format_text/archiver.c
@@ -110,6 +110,9 @@ static int __archive(struct volume_group *vg)
int archive(struct volume_group *vg)
{
+ if (vg_is_archived(vg))
+ return 1; /* VG has been already archived */
+
if (!vg->cmd->archive_params->enabled || !vg->cmd->archive_params->dir)
return 1;
@@ -134,6 +137,8 @@ int archive(struct volume_group *vg)
return 0;
}
+ vg->status |= ARCHIVED_VG;
+
return 1;
}
diff --git a/lib/format_text/flags.c b/lib/format_text/flags.c
index 28a7dc4..cbccdfd 100644
--- a/lib/format_text/flags.c
+++ b/lib/format_text/flags.c
@@ -38,6 +38,7 @@ static const struct flag _vg_flags[] = {
{SHARED, "SHARED", STATUS_FLAG},
{PARTIAL_VG, NULL, 0},
{PRECOMMITTED, NULL, 0},
+ {ARCHIVED_VG, NULL, 0},
{0, NULL, 0}
};
diff --git a/lib/metadata/metadata-exported.h b/lib/metadata/metadata-exported.h
index 6fa0c5b..98216d4 100644
--- a/lib/metadata/metadata-exported.h
+++ b/lib/metadata/metadata-exported.h
@@ -48,6 +48,7 @@
/* May any free extents on this PV be used or must they be left free? */
#define ALLOCATABLE_PV UINT64_C(0x00000008) /* PV */
+#define ARCHIVED_VG ALLOCATABLE_PV /* VG, reuse same bit */
//#define SPINDOWN_LV UINT64_C(0x00000010) /* LV */
//#define BADBLOCK_ON UINT64_C(0x00000020) /* LV */
@@ -140,6 +141,8 @@
#define VGMETADATACOPIES_ALL UINT32_MAX
#define VGMETADATACOPIES_UNMANAGED 0
+#define vg_is_archived(vg) (((vg)->status & ARCHIVED_VG) ? 1 : 0)
+
#define lv_is_external_origin(lv) (((lv)->external_count > 0) ? 1 : 0)
#define lv_is_thin_volume(lv) ((lv)->status & THIN_VOLUME ? 1 : 0)
#define lv_is_thin_pool(lv) ((lv)->status & THIN_POOL ? 1 : 0)
More information about the lvm-devel
mailing list