master - metadata: schedule PV for header rewrite if adding a PV to VG or restoring VG
by Peter Rajnoha
Gitweb: http://git.fedorahosted.org/git/?p=lvm2.git;a=commitdiff;h=10128c9bd67a02...
Commit: 10128c9bd67a027b480e0f0637745f97fb39ecfa
Parent: 2950adc2ab67fd14173807164f9829f5f53cd33c
Author: Peter Rajnoha <prajnoha(a)redhat.com>
AuthorDate: Thu Mar 12 14:49:10 2015 +0100
Committer: Peter Rajnoha <prajnoha(a)redhat.com>
CommitterDate: Mon Feb 15 12:44:46 2016 +0100
metadata: schedule PV for header rewrite if adding a PV to VG or restoring VG
When adding PV to VG, we need to rewrite PV header as there's a flip
in PV_EXT_USED flag. The same applies if we're restoring VG from backup.
---
lib/format_text/archiver.c | 10 ++++++++++
lib/metadata/metadata.c | 3 ++-
2 files changed, 12 insertions(+), 1 deletions(-)
diff --git a/lib/format_text/archiver.c b/lib/format_text/archiver.c
index 0efe5c5..56eb1ca 100644
--- a/lib/format_text/archiver.c
+++ b/lib/format_text/archiver.c
@@ -335,6 +335,7 @@ int backup_restore_vg(struct cmd_context *cmd, struct volume_group *vg, int drop
struct pv_list *pvl;
struct format_instance *fid;
struct format_instance_ctx fic;
+ struct pv_to_write *pvw;
uint32_t tmp;
/*
@@ -363,6 +364,15 @@ int backup_restore_vg(struct cmd_context *cmd, struct volume_group *vg, int drop
/* Add any metadata areas on the PVs */
dm_list_iterate_items(pvl, &vg->pvs) {
+ if (pvl->pv->fmt->features & FMT_PV_FLAGS) {
+ if (!(pvw = dm_pool_zalloc(vg->vgmem, sizeof(*pvw)))) {
+ log_error("pv_to_write allocation for '%s' failed", pv_dev_name(pvl->pv));
+ return 0;
+ }
+ pvw->pv = pvl->pv;
+ dm_list_add(&vg->pvs_to_write, &pvw->list);
+ }
+
tmp = vg->extent_size;
vg->extent_size = 0;
if (!vg->fid->fmt->ops->pv_setup(vg->fid->fmt, pvl->pv, vg)) {
diff --git a/lib/metadata/metadata.c b/lib/metadata/metadata.c
index 981bfbc..9c0423e 100644
--- a/lib/metadata/metadata.c
+++ b/lib/metadata/metadata.c
@@ -279,7 +279,8 @@ int add_pv_to_vg(struct volume_group *vg, const char *pv_name,
break;
}
- if (pv->status & UNLABELLED_PV) {
+ if ((pv->fmt->features & FMT_PV_FLAGS) ||
+ (pv->status & UNLABELLED_PV)) {
if (!(pvw = dm_pool_zalloc(mem, sizeof(*pvw)))) {
log_error("pv_to_write allocation for '%s' failed", pv_name);
return 0;
8 years, 2 months
master - metadata: add_pv_to_vg: add 'new_pv' arg to state if the PV is about to be created
by Peter Rajnoha
Gitweb: http://git.fedorahosted.org/git/?p=lvm2.git;a=commitdiff;h=2950adc2ab67fd...
Commit: 2950adc2ab67fd14173807164f9829f5f53cd33c
Parent: 4cbaaa5c98c78784e9eab5489c12d2e72e952f32
Author: Peter Rajnoha <prajnoha(a)redhat.com>
AuthorDate: Thu Mar 12 14:37:50 2015 +0100
Committer: Peter Rajnoha <prajnoha(a)redhat.com>
CommitterDate: Mon Feb 15 12:44:46 2016 +0100
metadata: add_pv_to_vg: add 'new_pv' arg to state if the PV is about to be created
---
lib/metadata/metadata.c | 11 +++++++----
lib/metadata/metadata.h | 3 ++-
2 files changed, 9 insertions(+), 5 deletions(-)
diff --git a/lib/metadata/metadata.c b/lib/metadata/metadata.c
index 0ca17f6..981bfbc 100644
--- a/lib/metadata/metadata.c
+++ b/lib/metadata/metadata.c
@@ -177,7 +177,8 @@ void del_pvl_from_vgs(struct volume_group *vg, struct pv_list *pvl)
* FIXME: remove pv_name - obtain safely from pv
*/
int add_pv_to_vg(struct volume_group *vg, const char *pv_name,
- struct physical_volume *pv, struct pvcreate_params *pp)
+ struct physical_volume *pv, struct pvcreate_params *pp,
+ int new_pv)
{
struct pv_to_write *pvw;
struct pv_list *pvl;
@@ -284,7 +285,7 @@ int add_pv_to_vg(struct volume_group *vg, const char *pv_name,
return 0;
}
pvw->pv = pv;
- pvw->pp = pp;
+ pvw->pp = new_pv ? pp : NULL;
dm_list_add(&vg->pvs_to_write, &pvw->list);
}
@@ -710,6 +711,7 @@ static int vg_extend_single_pv(struct volume_group *vg, char *pv_name,
unsigned int *max_phys_block_size)
{
struct physical_volume *pv;
+ int new_pv = 0;
pv = find_pv_by_name(vg->cmd, pv_name, 1, 1);
@@ -720,13 +722,14 @@ static int vg_extend_single_pv(struct volume_group *vg, char *pv_name,
} else if (!pv && pp) {
if (!(pv = pvcreate_vol(vg->cmd, pv_name, pp, 0)))
return_0;
+ new_pv = 1;
}
if (!(check_dev_block_size_for_vg(pv->dev, (const struct volume_group *) vg,
max_phys_block_size)))
goto_bad;
- if (!add_pv_to_vg(vg, pv_name, pv, pp))
+ if (!add_pv_to_vg(vg, pv_name, pv, pp, new_pv))
goto_bad;
return 1;
@@ -1610,7 +1613,7 @@ void pvcreate_params_set_defaults(struct pvcreate_params *pp)
static int _pvcreate_write(struct cmd_context *cmd, struct pv_to_write *pvw)
{
- int zero = pvw->pp->zero;
+ int zero = pvw->pp ? pvw->pp->zero : 1;
struct physical_volume *pv = pvw->pv;
struct device *dev = pv->dev;
const char *pv_name = dev_name(dev);
diff --git a/lib/metadata/metadata.h b/lib/metadata/metadata.h
index 3891b26..3f5f5ae 100644
--- a/lib/metadata/metadata.h
+++ b/lib/metadata/metadata.h
@@ -496,7 +496,8 @@ const struct format_type *pv_format_type(const struct physical_volume *pv);
struct id pv_vgid(const struct physical_volume *pv);
int add_pv_to_vg(struct volume_group *vg, const char *pv_name,
- struct physical_volume *pv, struct pvcreate_params *pp);
+ struct physical_volume *pv, struct pvcreate_params *pp,
+ int new_pv);
uint64_t find_min_mda_size(struct dm_list *mdas);
char *tags_format_and_copy(struct dm_pool *mem, const struct dm_list *tagsl);
8 years, 2 months
master - pv: add is_used_pv fn
by Peter Rajnoha
Gitweb: http://git.fedorahosted.org/git/?p=lvm2.git;a=commitdiff;h=4cbaaa5c98c787...
Commit: 4cbaaa5c98c78784e9eab5489c12d2e72e952f32
Parent: 71ea2e1602f9b058ee1cad445a07bf80413f833f
Author: Peter Rajnoha <prajnoha(a)redhat.com>
AuthorDate: Fri Feb 12 10:17:18 2016 +0100
Committer: Peter Rajnoha <prajnoha(a)redhat.com>
CommitterDate: Mon Feb 15 12:44:46 2016 +0100
pv: add is_used_pv fn
---
lib/metadata/pv.c | 21 +++++++++++++++++++++
lib/metadata/pv.h | 1 +
2 files changed, 22 insertions(+), 0 deletions(-)
diff --git a/lib/metadata/pv.c b/lib/metadata/pv.c
index 927b426..7ea7d2b 100644
--- a/lib/metadata/pv.c
+++ b/lib/metadata/pv.c
@@ -208,6 +208,27 @@ int is_missing_pv(const struct physical_volume *pv)
return pv_field(pv, status) & MISSING_PV ? 1 : 0;
}
+int is_used_pv(const struct physical_volume *pv)
+{
+ struct lvmcache_info *info;
+ uint32_t ext_flags;
+
+ if (!is_orphan(pv))
+ return 1;
+
+ if (!(pv->fmt->features & FMT_PV_FLAGS))
+ return 0;
+
+ if (!(info = lvmcache_info_from_pvid((const char *)&pv->id, 0))) {
+ log_error("Failed to find cached info for PV %s.", pv_dev_name(pv));
+ return -1;
+ }
+
+ ext_flags = lvmcache_ext_flags(info);
+
+ return ext_flags & PV_EXT_USED ? 1 : 0;
+}
+
char *pv_attr_dup(struct dm_pool *mem, const struct physical_volume *pv)
{
char *repstr;
diff --git a/lib/metadata/pv.h b/lib/metadata/pv.h
index cbfe79c..9e8207d 100644
--- a/lib/metadata/pv.h
+++ b/lib/metadata/pv.h
@@ -96,6 +96,7 @@ uint32_t pv_mda_used_count(const struct physical_volume *pv);
unsigned pv_mda_set_ignored(const struct physical_volume *pv, unsigned ignored);
int is_orphan(const struct physical_volume *pv);
int is_missing_pv(const struct physical_volume *pv);
+int is_used_pv(const struct physical_volume *pv);
int is_pv(const struct physical_volume *pv);
struct label *pv_label(const struct physical_volume *pv);
8 years, 2 months
master - lvmcache/lvmetad: cache PV extension version
by Peter Rajnoha
Gitweb: http://git.fedorahosted.org/git/?p=lvm2.git;a=commitdiff;h=71ea2e1602f9b0...
Commit: 71ea2e1602f9b058ee1cad445a07bf80413f833f
Parent: 7593221f94f9b2b81b169fc526829bfc44c74166
Author: Peter Rajnoha <prajnoha(a)redhat.com>
AuthorDate: Thu Feb 11 16:25:36 2016 +0100
Committer: Peter Rajnoha <prajnoha(a)redhat.com>
CommitterDate: Mon Feb 15 12:44:46 2016 +0100
lvmcache/lvmetad: cache PV extension version
Store PV extension version in lvmcache/lvmetad for use throughout the code.
---
lib/cache/lvmcache.c | 9 +++++++++
lib/cache/lvmcache.h | 2 ++
lib/cache/lvmetad.c | 3 +++
lib/format1/lvm1-label.c | 1 +
lib/format_pool/disk_rep.c | 1 +
lib/format_text/text_label.c | 3 +++
6 files changed, 19 insertions(+), 0 deletions(-)
diff --git a/lib/cache/lvmcache.c b/lib/cache/lvmcache.c
index 3218619..1945a74 100644
--- a/lib/cache/lvmcache.c
+++ b/lib/cache/lvmcache.c
@@ -42,6 +42,7 @@ struct lvmcache_info {
const struct format_type *fmt;
struct device *dev;
uint64_t device_size; /* Bytes */
+ uint32_t ext_version; /* Extension version */
uint32_t ext_flags; /* Extension flags */
uint32_t status;
};
@@ -2366,6 +2367,14 @@ void lvmcache_set_device_size(struct lvmcache_info *info, uint64_t size) {
struct device *lvmcache_device(struct lvmcache_info *info) {
return info->dev;
}
+void lvmcache_set_ext_version(struct lvmcache_info *info, uint32_t version)
+{
+ info->ext_version = version;
+}
+
+uint32_t lvmcache_ext_version(struct lvmcache_info *info) {
+ return info->ext_version;
+}
void lvmcache_set_ext_flags(struct lvmcache_info *info, uint32_t flags) {
info->ext_flags = flags;
diff --git a/lib/cache/lvmcache.h b/lib/cache/lvmcache.h
index 7de4e14..9ca0379 100644
--- a/lib/cache/lvmcache.h
+++ b/lib/cache/lvmcache.h
@@ -156,6 +156,8 @@ int lvmcache_add_mda(struct lvmcache_info *info, struct device *dev,
int lvmcache_add_da(struct lvmcache_info *info, uint64_t start, uint64_t size);
int lvmcache_add_ba(struct lvmcache_info *info, uint64_t start, uint64_t size);
+void lvmcache_set_ext_version(struct lvmcache_info *info, uint32_t version);
+uint32_t lvmcache_ext_version(struct lvmcache_info *info);
void lvmcache_set_ext_flags(struct lvmcache_info *info, uint32_t flags);
uint32_t lvmcache_ext_flags(struct lvmcache_info *info);
diff --git a/lib/cache/lvmetad.c b/lib/cache/lvmetad.c
index 70ab44f..7d6356d 100644
--- a/lib/cache/lvmetad.c
+++ b/lib/cache/lvmetad.c
@@ -369,6 +369,7 @@ static int _pv_populate_lvmcache(struct cmd_context *cmd,
uint64_t devsize = dm_config_find_int64(cn->child, "dev_size", 0),
label_sector = dm_config_find_int64(cn->child, "label_sector", 0);
uint32_t ext_flags = (uint32_t) dm_config_find_int64(cn->child, "ext_flags", 0);
+ uint32_t ext_version = (uint32_t) dm_config_find_int64(cn->child, "ext_version", 0);
if (!fmt && fmt_name)
fmt = get_format_by_name(cmd, fmt_name);
@@ -481,6 +482,7 @@ static int _pv_populate_lvmcache(struct cmd_context *cmd,
lvmcache_set_preferred_duplicates((const char *)&vgid);
lvmcache_set_ext_flags(info, ext_flags);
+ lvmcache_set_ext_version(info, ext_version);
return 1;
}
@@ -1051,6 +1053,7 @@ int lvmetad_pv_found(const struct id *pvid, struct device *dev, const struct for
"format = %s", fmt->name,
"label_sector = %"PRId64, (int64_t) label_sector,
"id = %s", uuid,
+ "ext_version = %"PRId64, (int64_t) lvmcache_ext_version(info),
"ext_flags = %"PRId64, (int64_t) lvmcache_ext_flags(info),
NULL))
{
diff --git a/lib/format1/lvm1-label.c b/lib/format1/lvm1-label.c
index 903a430..f5ce1e8 100644
--- a/lib/format1/lvm1-label.c
+++ b/lib/format1/lvm1-label.c
@@ -80,6 +80,7 @@ static int _lvm1_read(struct labeller *l, struct device *dev, void *buf,
*label = lvmcache_get_label(info);
lvmcache_set_device_size(info, ((uint64_t)xlate32(pvd->pv_size)) << SECTOR_SHIFT);
+ lvmcache_set_ext_version(info, 0);
lvmcache_set_ext_flags(info, 0);
lvmcache_del_mdas(info);
lvmcache_del_bas(info);
diff --git a/lib/format_pool/disk_rep.c b/lib/format_pool/disk_rep.c
index 6d8787e..fd11380 100644
--- a/lib/format_pool/disk_rep.c
+++ b/lib/format_pool/disk_rep.c
@@ -104,6 +104,7 @@ int read_pool_label(struct pool_list *pl, struct labeller *l,
*label = lvmcache_get_label(info);
lvmcache_set_device_size(info, ((uint64_t)xlate32_be(pd->pl_blocks)) << SECTOR_SHIFT);
+ lvmcache_set_ext_version(info, 0);
lvmcache_set_ext_flags(info, 0);
lvmcache_del_mdas(info);
lvmcache_del_bas(info);
diff --git a/lib/format_text/text_label.c b/lib/format_text/text_label.c
index c62cf5a..6edfae7 100644
--- a/lib/format_text/text_label.c
+++ b/lib/format_text/text_label.c
@@ -421,6 +421,9 @@ static int _text_read(struct labeller *l, struct device *dev, void *buf,
log_debug_metadata("%s: PV header extension version %" PRIu32 " found",
dev_name(dev), ext_version);
+ /* Extension version */
+ lvmcache_set_ext_version(info, xlate32(pvhdr_ext->version));
+
/* Extension flags */
lvmcache_set_ext_flags(info, xlate32(pvhdr_ext->flags));
8 years, 2 months
master - lvmcache/lvmetad: cache PV extension flags
by Peter Rajnoha
Gitweb: http://git.fedorahosted.org/git/?p=lvm2.git;a=commitdiff;h=7593221f94f9b2...
Commit: 7593221f94f9b2b81b169fc526829bfc44c74166
Parent: 54b41db9a6c2ec78c5c768972dda59283563eb9d
Author: Peter Rajnoha <prajnoha(a)redhat.com>
AuthorDate: Mon Mar 9 12:52:07 2015 +0100
Committer: Peter Rajnoha <prajnoha(a)redhat.com>
CommitterDate: Mon Feb 15 12:44:46 2016 +0100
lvmcache/lvmetad: cache PV extension flags
Store PV extension flags in lvmcache/lvmetad for use throughout the code.
---
lib/cache/lvmcache.c | 9 +++++++++
lib/cache/lvmcache.h | 3 +++
lib/cache/lvmetad.c | 5 +++++
lib/format1/lvm1-label.c | 1 +
lib/format_pool/disk_rep.c | 1 +
lib/format_text/text_label.c | 5 ++++-
6 files changed, 23 insertions(+), 1 deletions(-)
diff --git a/lib/cache/lvmcache.c b/lib/cache/lvmcache.c
index 4a4b53f..3218619 100644
--- a/lib/cache/lvmcache.c
+++ b/lib/cache/lvmcache.c
@@ -42,6 +42,7 @@ struct lvmcache_info {
const struct format_type *fmt;
struct device *dev;
uint64_t device_size; /* Bytes */
+ uint32_t ext_flags; /* Extension flags */
uint32_t status;
};
@@ -2366,6 +2367,14 @@ struct device *lvmcache_device(struct lvmcache_info *info) {
return info->dev;
}
+void lvmcache_set_ext_flags(struct lvmcache_info *info, uint32_t flags) {
+ info->ext_flags = flags;
+}
+
+uint32_t lvmcache_ext_flags(struct lvmcache_info *info) {
+ return info->ext_flags;
+}
+
int lvmcache_is_orphan(struct lvmcache_info *info) {
if (!info->vginfo)
return 1; /* FIXME? */
diff --git a/lib/cache/lvmcache.h b/lib/cache/lvmcache.h
index 371ac8e..7de4e14 100644
--- a/lib/cache/lvmcache.h
+++ b/lib/cache/lvmcache.h
@@ -156,6 +156,9 @@ int lvmcache_add_mda(struct lvmcache_info *info, struct device *dev,
int lvmcache_add_da(struct lvmcache_info *info, uint64_t start, uint64_t size);
int lvmcache_add_ba(struct lvmcache_info *info, uint64_t start, uint64_t size);
+void lvmcache_set_ext_flags(struct lvmcache_info *info, uint32_t flags);
+uint32_t lvmcache_ext_flags(struct lvmcache_info *info);
+
const struct format_type *lvmcache_fmt(struct lvmcache_info *info);
struct label *lvmcache_get_label(struct lvmcache_info *info);
diff --git a/lib/cache/lvmetad.c b/lib/cache/lvmetad.c
index 90ff4cb..70ab44f 100644
--- a/lib/cache/lvmetad.c
+++ b/lib/cache/lvmetad.c
@@ -368,6 +368,7 @@ static int _pv_populate_lvmcache(struct cmd_context *cmd,
dev_t devt = dm_config_find_int(cn->child, "device", 0);
uint64_t devsize = dm_config_find_int64(cn->child, "dev_size", 0),
label_sector = dm_config_find_int64(cn->child, "label_sector", 0);
+ uint32_t ext_flags = (uint32_t) dm_config_find_int64(cn->child, "ext_flags", 0);
if (!fmt && fmt_name)
fmt = get_format_by_name(cmd, fmt_name);
@@ -478,6 +479,9 @@ static int _pv_populate_lvmcache(struct cmd_context *cmd,
}
lvmcache_set_preferred_duplicates((const char *)&vgid);
+
+ lvmcache_set_ext_flags(info, ext_flags);
+
return 1;
}
@@ -1047,6 +1051,7 @@ int lvmetad_pv_found(const struct id *pvid, struct device *dev, const struct for
"format = %s", fmt->name,
"label_sector = %"PRId64, (int64_t) label_sector,
"id = %s", uuid,
+ "ext_flags = %"PRId64, (int64_t) lvmcache_ext_flags(info),
NULL))
{
dm_config_destroy(pvmeta);
diff --git a/lib/format1/lvm1-label.c b/lib/format1/lvm1-label.c
index b600bd7..903a430 100644
--- a/lib/format1/lvm1-label.c
+++ b/lib/format1/lvm1-label.c
@@ -80,6 +80,7 @@ static int _lvm1_read(struct labeller *l, struct device *dev, void *buf,
*label = lvmcache_get_label(info);
lvmcache_set_device_size(info, ((uint64_t)xlate32(pvd->pv_size)) << SECTOR_SHIFT);
+ lvmcache_set_ext_flags(info, 0);
lvmcache_del_mdas(info);
lvmcache_del_bas(info);
lvmcache_make_valid(info);
diff --git a/lib/format_pool/disk_rep.c b/lib/format_pool/disk_rep.c
index 688c521..6d8787e 100644
--- a/lib/format_pool/disk_rep.c
+++ b/lib/format_pool/disk_rep.c
@@ -104,6 +104,7 @@ int read_pool_label(struct pool_list *pl, struct labeller *l,
*label = lvmcache_get_label(info);
lvmcache_set_device_size(info, ((uint64_t)xlate32_be(pd->pl_blocks)) << SECTOR_SHIFT);
+ lvmcache_set_ext_flags(info, 0);
lvmcache_del_mdas(info);
lvmcache_del_bas(info);
lvmcache_make_valid(info);
diff --git a/lib/format_text/text_label.c b/lib/format_text/text_label.c
index 2865226..c62cf5a 100644
--- a/lib/format_text/text_label.c
+++ b/lib/format_text/text_label.c
@@ -124,7 +124,7 @@ static int _text_write(struct label *label, void *buf)
*/
pvhdr_ext = (struct pv_header_extension *) ((char *) baton.pvh_dlocn_xl);
pvhdr_ext->version = xlate32(PV_HEADER_EXTENSION_VSN);
- pvhdr_ext->flags = 0; /* no flags yet */
+ pvhdr_ext->flags = xlate32(lvmcache_ext_flags(info));
/* List of bootloader area locations */
baton.pvh_dlocn_xl = &pvhdr_ext->bootloader_areas_xl[0];
@@ -421,6 +421,9 @@ static int _text_read(struct labeller *l, struct device *dev, void *buf,
log_debug_metadata("%s: PV header extension version %" PRIu32 " found",
dev_name(dev), ext_version);
+ /* Extension flags */
+ lvmcache_set_ext_flags(info, xlate32(pvhdr_ext->flags));
+
/* Bootloader areas */
dlocn_xl = pvhdr_ext->bootloader_areas_xl;
while ((offset = xlate64(dlocn_xl->offset))) {
8 years, 2 months
master - metadata: introduce PV_EXT_USED flag and bump PV_HEADER_EXTENSION_VSN
by Peter Rajnoha
Gitweb: http://git.fedorahosted.org/git/?p=lvm2.git;a=commitdiff;h=54b41db9a6c2ec...
Commit: 54b41db9a6c2ec78c5c768972dda59283563eb9d
Parent: a522af93b7365d183fd7f82ac65cc7f3bed2423a
Author: Peter Rajnoha <prajnoha(a)redhat.com>
AuthorDate: Fri Feb 12 13:20:34 2016 +0100
Committer: Peter Rajnoha <prajnoha(a)redhat.com>
CommitterDate: Mon Feb 15 12:44:46 2016 +0100
metadata: introduce PV_EXT_USED flag and bump PV_HEADER_EXTENSION_VSN
---
lib/format_text/layout.h | 7 ++++++-
lib/metadata/metadata-exported.h | 3 +++
2 files changed, 9 insertions(+), 1 deletions(-)
diff --git a/lib/format_text/layout.h b/lib/format_text/layout.h
index b8a2774..75a935b 100644
--- a/lib/format_text/layout.h
+++ b/lib/format_text/layout.h
@@ -23,7 +23,12 @@
/* disk_locn and data_area_list are defined in format-text.h */
-#define PV_HEADER_EXTENSION_VSN 1
+/*
+ * PV header extension versions:
+ * - version 1: bootloader area support
+ * - version 2: PV_EXT_USED flag support
+ */
+#define PV_HEADER_EXTENSION_VSN 2
struct pv_header_extension {
uint32_t version;
diff --git a/lib/metadata/metadata-exported.h b/lib/metadata/metadata-exported.h
index 5cf7c88..fc09e2e 100644
--- a/lib/metadata/metadata-exported.h
+++ b/lib/metadata/metadata-exported.h
@@ -40,6 +40,9 @@
/* Layer suffix */
#define MIRROR_SYNC_LAYER "_mimagetmp"
+/* PV extension flags */
+#define PV_EXT_USED UINT32_C(0x00000001)
+
/* Various flags */
/* Note that the bits no longer necessarily correspond to LVM1 disk format */
8 years, 2 months
master - format: add FMT_PV_FLAGS to indicate format supports PV flags
by Peter Rajnoha
Gitweb: http://git.fedorahosted.org/git/?p=lvm2.git;a=commitdiff;h=a522af93b7365d...
Commit: a522af93b7365d183fd7f82ac65cc7f3bed2423a
Parent: 4361543f3eb037237438c32f1c8a558f4d695e93
Author: Peter Rajnoha <prajnoha(a)redhat.com>
AuthorDate: Fri Feb 12 12:58:59 2016 +0100
Committer: Peter Rajnoha <prajnoha(a)redhat.com>
CommitterDate: Mon Feb 15 12:44:46 2016 +0100
format: add FMT_PV_FLAGS to indicate format supports PV flags
---
lib/format_text/format-text.c | 2 +-
lib/metadata/metadata-exported.h | 1 +
2 files changed, 2 insertions(+), 1 deletions(-)
diff --git a/lib/format_text/format-text.c b/lib/format_text/format-text.c
index b1e2ebf..f290619 100644
--- a/lib/format_text/format-text.c
+++ b/lib/format_text/format-text.c
@@ -2466,7 +2466,7 @@ struct format_type *create_text_format(struct cmd_context *cmd)
fmt->features = FMT_SEGMENTS | FMT_MDAS | FMT_TAGS | FMT_PRECOMMIT |
FMT_UNLIMITED_VOLS | FMT_RESIZE_PV |
FMT_UNLIMITED_STRIPESIZE | FMT_BAS | FMT_CONFIG_PROFILE |
- FMT_NON_POWER2_EXTENTS;
+ FMT_NON_POWER2_EXTENTS | FMT_PV_FLAGS;
if (!(mda_lists = dm_malloc(sizeof(struct mda_lists)))) {
log_error("Failed to allocate dir_list");
diff --git a/lib/metadata/metadata-exported.h b/lib/metadata/metadata-exported.h
index b9363f1..5cf7c88 100644
--- a/lib/metadata/metadata-exported.h
+++ b/lib/metadata/metadata-exported.h
@@ -150,6 +150,7 @@
#define FMT_OBSOLETE 0x000001000U /* Obsolete format? */
#define FMT_NON_POWER2_EXTENTS 0x000002000U /* Non-power-of-2 extent sizes? */
#define FMT_SYSTEMID_ON_PVS 0x000004000U /* System ID is stored on PVs not VG */
+#define FMT_PV_FLAGS 0x000008000U /* Supports PV flags */
#define systemid_on_pvs(vg) ((vg)->fid->fmt->features & FMT_SYSTEMID_ON_PVS)
8 years, 2 months
master - refactor: rename struct pv_to_create --> struct pv_to_write
by Peter Rajnoha
Gitweb: http://git.fedorahosted.org/git/?p=lvm2.git;a=commitdiff;h=4361543f3eb037...
Commit: 4361543f3eb037237438c32f1c8a558f4d695e93
Parent: 952498ef4d1d9aada0f81ba367d870c7aa1a0413
Author: Peter Rajnoha <prajnoha(a)redhat.com>
AuthorDate: Mon Mar 9 12:29:30 2015 +0100
Committer: Peter Rajnoha <prajnoha(a)redhat.com>
CommitterDate: Mon Feb 15 12:44:45 2016 +0100
refactor: rename struct pv_to_create --> struct pv_to_write
We'll use this struct in subsequent patches for PVs which should
be rewritten, not just created. So rename struct pv_to_create to
struct pv_to_write for clarity.
---
lib/metadata/metadata.c | 36 ++++++++++++++++++------------------
lib/metadata/vg.c | 2 +-
lib/metadata/vg.h | 4 ++--
3 files changed, 21 insertions(+), 21 deletions(-)
diff --git a/lib/metadata/metadata.c b/lib/metadata/metadata.c
index d8a7128..0ca17f6 100644
--- a/lib/metadata/metadata.c
+++ b/lib/metadata/metadata.c
@@ -179,7 +179,7 @@ void del_pvl_from_vgs(struct volume_group *vg, struct pv_list *pvl)
int add_pv_to_vg(struct volume_group *vg, const char *pv_name,
struct physical_volume *pv, struct pvcreate_params *pp)
{
- struct pv_to_create *pvc;
+ struct pv_to_write *pvw;
struct pv_list *pvl;
struct format_instance *fid = vg->fid;
struct dm_pool *mem = vg->vgmem;
@@ -279,13 +279,13 @@ int add_pv_to_vg(struct volume_group *vg, const char *pv_name,
}
if (pv->status & UNLABELLED_PV) {
- if (!(pvc = dm_pool_zalloc(mem, sizeof(*pvc)))) {
- log_error("pv_to_create allocation for '%s' failed", pv_name);
+ if (!(pvw = dm_pool_zalloc(mem, sizeof(*pvw)))) {
+ log_error("pv_to_write allocation for '%s' failed", pv_name);
return 0;
}
- pvc->pv = pv;
- pvc->pp = pp;
- dm_list_add(&vg->pvs_to_create, &pvc->list);
+ pvw->pv = pv;
+ pvw->pp = pp;
+ dm_list_add(&vg->pvs_to_write, &pvw->list);
}
return 1;
@@ -1608,10 +1608,10 @@ void pvcreate_params_set_defaults(struct pvcreate_params *pp)
}
-static int _pvcreate_write(struct cmd_context *cmd, struct pv_to_create *pvc)
+static int _pvcreate_write(struct cmd_context *cmd, struct pv_to_write *pvw)
{
- int zero = pvc->pp->zero;
- struct physical_volume *pv = pvc->pv;
+ int zero = pvw->pp->zero;
+ struct physical_volume *pv = pvw->pv;
struct device *dev = pv->dev;
const char *pv_name = dev_name(dev);
@@ -1762,10 +1762,10 @@ struct physical_volume *pvcreate_vol(struct cmd_context *cmd, const char *pv_nam
pv->status |= UNLABELLED_PV;
if (write_now) {
- struct pv_to_create pvc;
- pvc.pp = pp;
- pvc.pv = pv;
- if (!_pvcreate_write(cmd, &pvc))
+ struct pv_to_write pvw;
+ pvw.pp = pp;
+ pvw.pv = pv;
+ if (!_pvcreate_write(cmd, &pvw))
goto bad;
}
@@ -3047,7 +3047,7 @@ out:
int vg_write(struct volume_group *vg)
{
struct dm_list *mdah;
- struct pv_to_create *pv_to_create, *pv_to_create_safe;
+ struct pv_to_write *pv_to_write, *pv_to_write_safe;
struct metadata_area *mda;
struct lv_list *lvl;
int revert = 0, wrote = 0;
@@ -3103,10 +3103,10 @@ int vg_write(struct volume_group *vg)
memlock_unlock(vg->cmd);
vg->seqno++;
- dm_list_iterate_items_safe(pv_to_create, pv_to_create_safe, &vg->pvs_to_create) {
- if (!_pvcreate_write(vg->cmd, pv_to_create))
- return 0;
- dm_list_del(&pv_to_create->list);
+ dm_list_iterate_items_safe(pv_to_write, pv_to_write_safe, &vg->pvs_to_write) {
+ if (!_pvcreate_write(vg->cmd, pv_to_write))
+ return_0;
+ dm_list_del(&pv_to_write->list);
}
/* Write to each copy of the metadata area */
diff --git a/lib/metadata/vg.c b/lib/metadata/vg.c
index 59af13e..e93108c 100644
--- a/lib/metadata/vg.c
+++ b/lib/metadata/vg.c
@@ -60,7 +60,7 @@ struct volume_group *alloc_vg(const char *pool_name, struct cmd_context *cmd,
}
dm_list_init(&vg->pvs);
- dm_list_init(&vg->pvs_to_create);
+ dm_list_init(&vg->pvs_to_write);
dm_list_init(&vg->pvs_outdated);
dm_list_init(&vg->lvs);
dm_list_init(&vg->tags);
diff --git a/lib/metadata/vg.h b/lib/metadata/vg.h
index 6ff77cf..1c7c31c 100644
--- a/lib/metadata/vg.h
+++ b/lib/metadata/vg.h
@@ -32,7 +32,7 @@ typedef enum {
ALLOC_INHERIT
} alloc_policy_t;
-struct pv_to_create {
+struct pv_to_write {
struct dm_list list;
struct physical_volume *pv;
struct pvcreate_params *pp;
@@ -90,7 +90,7 @@ struct volume_group {
* a PV label yet. They need to be pvcreate'd at vg_write time.
*/
- struct dm_list pvs_to_create;
+ struct dm_list pvs_to_write;
/*
* List of physical volumes that carry outdated metadata that belongs
8 years, 2 months
v2_02_142 annotated tag has been created
by Alasdair Kergon
Gitweb: http://git.fedorahosted.org/git/?p=lvm2.git;a=commitdiff;h=c7b8bc05f66110...
Commit: c7b8bc05f661105aeacac34813178c87bfefdb73
Parent: 0000000000000000000000000000000000000000
Author: Alasdair G Kergon <agk(a)redhat.com>
AuthorDate: 2016-02-15 10:35 +0000
Committer: Alasdair G Kergon <agk(a)redhat.com>
CommitterDate: 2016-02-15 10:35 +0000
annotated tag: v2_02_142 has been created
at c7b8bc05f661105aeacac34813178c87bfefdb73 (tag)
tagging 228b8245e4fbae92968feeb8ded57697b567ceed (commit)
replaces v2_02_141
Release 2.02.142.
28 files changed, 383 insertions(+), 229 deletions(-)
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v2.0.14 (GNU/Linux)
iEYEABECAAYFAlbBqhcACgkQIoGRwVZ+LBdIkACg+zSPRaCCSfahIp5krxrsQNDa
gB4AoPi4oW/dsOsl8y/sL+NkS1QJCo2f
=3xtI
-----END PGP SIGNATURE-----
Alasdair G Kergon (2):
post-release
pre-release
David Teigland (1):
lvmlockd: don't adopt locks from unused lm
M.H. Tsai (4):
config: fix verbose type to int
lvconvert: enable spare creation during conversion
dm: fix thin-pool targer params order
debug: cut_and_paste type in message
Ondrej Kozina (1):
pvmove: fix possible memory pool corruption
Peter Rajnoha (5):
filters: partitioned: fix partition table filter with external_device_info_source="udev" and blkid<2.20
metadata: format: also delete bootloader areas from lvmcache when reading lvm1 and pool label
filter: do not check for suspended devs in filter-usable in lvmetad mode
conf: use use_blkid_wiping=0 if not defined in lvm.conf and support not compiled in
man: pvresize: remove old comment about inability to resize PV with more mdas
Zdenek Kabelac (12):
thin: fix low_water_mark threshold calc
dm: alloc always 8byte aligned
lvresize: check for given parameters
cleanup: rename usepolicies
cleanup: stripes_extents
cleanup: relocate function to vg.c
cleanup: drop unneeded assigns
cleanup: update messages
tests: check for automated dmeventd resize
gcc: better code for older compiler
tests: update test
tests: indent
8 years, 2 months
master - post-release
by Alasdair Kergon
Gitweb: http://git.fedorahosted.org/git/?p=lvm2.git;a=commitdiff;h=952498ef4d1d9a...
Commit: 952498ef4d1d9aada0f81ba367d870c7aa1a0413
Parent: 228b8245e4fbae92968feeb8ded57697b567ceed
Author: Alasdair G Kergon <agk(a)redhat.com>
AuthorDate: Mon Feb 15 10:48:55 2016 +0000
Committer: Alasdair G Kergon <agk(a)redhat.com>
CommitterDate: Mon Feb 15 10:48:55 2016 +0000
post-release
---
VERSION | 2 +-
VERSION_DM | 2 +-
WHATS_NEW | 3 +++
WHATS_NEW_DM | 3 +++
4 files changed, 8 insertions(+), 2 deletions(-)
diff --git a/VERSION b/VERSION
index 6ac1ce6..3dc718b 100644
--- a/VERSION
+++ b/VERSION
@@ -1 +1 @@
-2.02.142(2)-git (2016-02-15)
+2.02.143(2)-git (2016-02-15)
diff --git a/VERSION_DM b/VERSION_DM
index 73eb926..621718a 100644
--- a/VERSION_DM
+++ b/VERSION_DM
@@ -1 +1 @@
-1.02.116-git (2016-02-15)
+1.02.117-git (2016-02-15)
diff --git a/WHATS_NEW b/WHATS_NEW
index 9207fca..c7ffcf7 100644
--- a/WHATS_NEW
+++ b/WHATS_NEW
@@ -1,3 +1,6 @@
+Version 2.02.143 -
+=====================================
+
Version 2.02.142 - 15th February 2016
=====================================
Fix memory pool corruption in pvmove (2.02.141).
diff --git a/WHATS_NEW_DM b/WHATS_NEW_DM
index 9e30e66..d82ebf3 100644
--- a/WHATS_NEW_DM
+++ b/WHATS_NEW_DM
@@ -1,3 +1,6 @@
+Version 1.02.117 -
+=====================================
+
Version 1.02.116 - 15th February 2016
=====================================
Use fully aligned allocations for dm_pool_strdup/strndup() (1.02.64).
8 years, 2 months