master - refactor: rename embedding area -> bootloader area
by Peter Rajnoha
Gitweb: http://git.fedorahosted.org/git/?p=lvm2.git;a=commitdiff;h=732859d21f3b41...
Commit: 732859d21f3b41bdb188f92b60f25d5c94dcee8a
Parent: 9966842810b9044d0a59eebbf05856a3a10102b4
Author: Peter Rajnoha <prajnoha(a)redhat.com>
AuthorDate: Tue May 28 12:37:22 2013 +0200
Committer: Peter Rajnoha <prajnoha(a)redhat.com>
CommitterDate: Tue May 28 12:37:22 2013 +0200
refactor: rename embedding area -> bootloader area
---
WHATS_NEW | 6 ++--
lib/cache/lvmcache.c | 58 +++++++++++++++++-----------------
lib/cache/lvmcache.h | 8 ++--
lib/cache/lvmetad.c | 10 +++---
lib/format1/format1.c | 6 ++--
lib/format_text/export.c | 6 ++--
lib/format_text/format-text.c | 64 +++++++++++++++++++-------------------
lib/format_text/format-text.h | 4 +-
lib/format_text/import_vsn1.c | 22 ++++++------
lib/format_text/layout.h | 4 +-
lib/format_text/text_label.c | 48 ++++++++++++++--------------
lib/metadata/metadata-exported.h | 6 ++--
lib/metadata/metadata.c | 4 +-
lib/metadata/pv.c | 8 ++--
lib/metadata/pv.h | 10 +++---
lib/report/columns.h | 4 +-
lib/report/properties.c | 8 ++--
man/pvcreate.8.in | 18 +++++-----
man/vgconvert.8.in | 2 +-
tools/args.h | 2 +-
tools/commands.h | 8 ++--
tools/pvcreate.c | 4 +-
tools/toollib.c | 12 +++---
tools/vgconvert.c | 14 ++++----
24 files changed, 168 insertions(+), 168 deletions(-)
diff --git a/WHATS_NEW b/WHATS_NEW
index 3b88732..977519c 100644
--- a/WHATS_NEW
+++ b/WHATS_NEW
@@ -38,9 +38,9 @@ Version 2.02.99 -
Add --withcomments and --withversions switch to lvm dumpconfig.
Add --type {current|default|missing|new} and --atversion to lvm dumpconfig.
Support automatic config validation and add 'config' section to lvm.conf.
- Add pvs -o ea_start,ea_size to report embedding area start and size.
- Add --embeddingareasize to pvcreate and vgconvert to create an embedding area.
- Add PV header extension: extension version, flags and embedding areas.
+ Add pvs -o ea_start,ea_size to report bootloader area start and size.
+ Add --bootloaderareasize to pvcreate and vgconvert to create a bootloader area.
+ Add PV header extension: extension version, flags and bootloader areas.
Initial support for lvconvert of thin external origin.
Add _lv_remove_segs_using_this_lv() for removal of dependent lvs.
Improve activation code for better support of stacked devices.
diff --git a/lib/cache/lvmcache.c b/lib/cache/lvmcache.c
index 13a722f..174c133 100644
--- a/lib/cache/lvmcache.c
+++ b/lib/cache/lvmcache.c
@@ -38,7 +38,7 @@ struct lvmcache_info {
struct dm_list list; /* Join VG members together */
struct dm_list mdas; /* list head for metadata areas */
struct dm_list das; /* list head for data areas */
- struct dm_list eas; /* list head for embedding areas */
+ struct dm_list bas; /* list head for bootloader areas */
struct lvmcache_vginfo *vginfo; /* NULL == unknown */
struct label *label;
const struct format_type *fmt;
@@ -1479,7 +1479,7 @@ struct lvmcache_info *lvmcache_add(struct labeller *labeller, const char *pvid,
lvmcache_del_mdas(info);
lvmcache_del_das(info);
- lvmcache_del_eas(info);
+ lvmcache_del_bas(info);
} else {
if (existing->dev != dev) {
/* Is the existing entry a duplicate pvid e.g. md ? */
@@ -1724,19 +1724,19 @@ int lvmcache_populate_pv_fields(struct lvmcache_info *info,
return 0;
}
- /* Currently only support one embedding area at most */
- if (dm_list_size(&info->eas) > 1) {
- log_error("Must be at most one embedding area (found %d) on PV %s",
- dm_list_size(&info->eas), dev_name(info->dev));
+ /* Currently only support one bootloader area at most */
+ if (dm_list_size(&info->bas) > 1) {
+ log_error("Must be at most one bootloader area (found %d) on PV %s",
+ dm_list_size(&info->bas), dev_name(info->dev));
return 0;
}
dm_list_iterate_items(da, &info->das)
pv->pe_start = da->disk_locn.offset >> SECTOR_SHIFT;
- dm_list_iterate_items(da, &info->eas) {
- pv->ea_start = da->disk_locn.offset >> SECTOR_SHIFT;
- pv->ea_size = da->disk_locn.size >> SECTOR_SHIFT;
+ dm_list_iterate_items(da, &info->bas) {
+ pv->ba_start = da->disk_locn.offset >> SECTOR_SHIFT;
+ pv->ba_size = da->disk_locn.size >> SECTOR_SHIFT;
}
return 1;
@@ -1766,11 +1766,11 @@ void lvmcache_del_das(struct lvmcache_info *info)
dm_list_init(&info->das);
}
-void lvmcache_del_eas(struct lvmcache_info *info)
+void lvmcache_del_bas(struct lvmcache_info *info)
{
- if (info->eas.n)
- del_eas(&info->eas);
- dm_list_init(&info->eas);
+ if (info->bas.n)
+ del_bas(&info->bas);
+ dm_list_init(&info->bas);
}
int lvmcache_add_mda(struct lvmcache_info *info, struct device *dev,
@@ -1784,9 +1784,9 @@ int lvmcache_add_da(struct lvmcache_info *info, uint64_t start, uint64_t size)
return add_da(NULL, &info->das, start, size);
}
-int lvmcache_add_ea(struct lvmcache_info *info, uint64_t start, uint64_t size)
+int lvmcache_add_ba(struct lvmcache_info *info, uint64_t start, uint64_t size)
{
- return add_ea(NULL, &info->eas, start, size);
+ return add_ba(NULL, &info->bas, start, size);
}
void lvmcache_update_pv(struct lvmcache_info *info, struct physical_volume *pv,
@@ -1813,20 +1813,20 @@ int lvmcache_update_das(struct lvmcache_info *info, struct physical_volume *pv)
return 1;
}
-int lvmcache_update_eas(struct lvmcache_info *info, struct physical_volume *pv)
+int lvmcache_update_bas(struct lvmcache_info *info, struct physical_volume *pv)
{
- struct data_area_list *ea;
- if (info->eas.n) {
- if (!pv->ea_start && !pv->ea_size)
- dm_list_iterate_items(ea, &info->eas) {
- pv->ea_start = ea->disk_locn.offset >> SECTOR_SHIFT;
- pv->ea_size = ea->disk_locn.size >> SECTOR_SHIFT;
+ struct data_area_list *ba;
+ if (info->bas.n) {
+ if (!pv->ba_start && !pv->ba_size)
+ dm_list_iterate_items(ba, &info->bas) {
+ pv->ba_start = ba->disk_locn.offset >> SECTOR_SHIFT;
+ pv->ba_size = ba->disk_locn.size >> SECTOR_SHIFT;
}
- del_das(&info->eas);
+ del_das(&info->bas);
} else
- dm_list_init(&info->eas);
+ dm_list_init(&info->bas);
- if (!add_ea(NULL, &info->eas, pv->ea_start << SECTOR_SHIFT, pv->ea_size << SECTOR_SHIFT))
+ if (!add_ba(NULL, &info->bas, pv->ba_start << SECTOR_SHIFT, pv->ba_size << SECTOR_SHIFT))
return_0;
return 1;
@@ -1876,13 +1876,13 @@ int lvmcache_foreach_da(struct lvmcache_info *info,
return 1;
}
-int lvmcache_foreach_ea(struct lvmcache_info *info,
+int lvmcache_foreach_ba(struct lvmcache_info *info,
int (*fun)(struct disk_locn *, void *),
void *baton)
{
- struct data_area_list *ea;
- dm_list_iterate_items(ea, &info->eas) {
- if (!fun(&ea->disk_locn, baton))
+ struct data_area_list *ba;
+ dm_list_iterate_items(ba, &info->bas) {
+ if (!fun(&ba->disk_locn, baton))
return_0;
}
diff --git a/lib/cache/lvmcache.h b/lib/cache/lvmcache.h
index 9ceec19..119b411 100644
--- a/lib/cache/lvmcache.h
+++ b/lib/cache/lvmcache.h
@@ -118,11 +118,11 @@ int lvmcache_populate_pv_fields(struct lvmcache_info *info,
int lvmcache_check_format(struct lvmcache_info *info, const struct format_type *fmt);
void lvmcache_del_mdas(struct lvmcache_info *info);
void lvmcache_del_das(struct lvmcache_info *info);
-void lvmcache_del_eas(struct lvmcache_info *info);
+void lvmcache_del_bas(struct lvmcache_info *info);
int lvmcache_add_mda(struct lvmcache_info *info, struct device *dev,
uint64_t start, uint64_t size, unsigned ignored);
int lvmcache_add_da(struct lvmcache_info *info, uint64_t start, uint64_t size);
-int lvmcache_add_ea(struct lvmcache_info *info, uint64_t start, uint64_t size);
+int lvmcache_add_ba(struct lvmcache_info *info, uint64_t start, uint64_t size);
const struct format_type *lvmcache_fmt(struct lvmcache_info *info);
struct label *lvmcache_get_label(struct lvmcache_info *info);
@@ -130,7 +130,7 @@ struct label *lvmcache_get_label(struct lvmcache_info *info);
void lvmcache_update_pv(struct lvmcache_info *info, struct physical_volume *pv,
const struct format_type *fmt);
int lvmcache_update_das(struct lvmcache_info *info, struct physical_volume *pv);
-int lvmcache_update_eas(struct lvmcache_info *info, struct physical_volume *pv);
+int lvmcache_update_bas(struct lvmcache_info *info, struct physical_volume *pv);
int lvmcache_foreach_mda(struct lvmcache_info *info,
int (*fun)(struct metadata_area *, void *),
void *baton);
@@ -139,7 +139,7 @@ int lvmcache_foreach_da(struct lvmcache_info *info,
int (*fun)(struct disk_locn *, void *),
void *baton);
-int lvmcache_foreach_ea(struct lvmcache_info *info,
+int lvmcache_foreach_ba(struct lvmcache_info *info,
int (*fun)(struct disk_locn *, void *),
void *baton);
diff --git a/lib/cache/lvmetad.c b/lib/cache/lvmetad.c
index 348827d..7aa8641 100644
--- a/lib/cache/lvmetad.c
+++ b/lib/cache/lvmetad.c
@@ -280,7 +280,7 @@ static struct lvmcache_info *_pv_populate_lvmcache(
lvmcache_set_device_size(info, devsize);
lvmcache_del_das(info);
lvmcache_del_mdas(info);
- lvmcache_del_eas(info);
+ lvmcache_del_bas(info);
do {
sprintf(mda_id, "mda%d", i);
@@ -309,7 +309,7 @@ static struct lvmcache_info *_pv_populate_lvmcache(
if (da) {
if (!dm_config_get_uint64(da->child, "offset", &offset)) return_0;
if (!dm_config_get_uint64(da->child, "size", &size)) return_0;
- lvmcache_add_ea(info, offset, size);
+ lvmcache_add_ba(info, offset, size);
}
++i;
} while (da);
@@ -706,9 +706,9 @@ static int _extract_da(struct disk_locn *da, void *baton)
return _extract_disk_location("da", da, baton);
}
-static int _extract_ea(struct disk_locn *ea, void *baton)
+static int _extract_ba(struct disk_locn *ba, void *baton)
{
- return _extract_disk_location("ea", ea, baton);
+ return _extract_disk_location("ba", ba, baton);
}
static int _extract_mdas(struct lvmcache_info *info, struct dm_config_tree *cft,
@@ -722,7 +722,7 @@ static int _extract_mdas(struct lvmcache_info *info, struct dm_config_tree *cft,
if (!lvmcache_foreach_da(info, &_extract_da, &baton))
return 0;
baton.i = 0;
- if (!lvmcache_foreach_ea(info, &_extract_ea, &baton))
+ if (!lvmcache_foreach_ba(info, &_extract_ba, &baton))
return 0;
return 1;
diff --git a/lib/format1/format1.c b/lib/format1/format1.c
index 115f8d1..7014a35 100644
--- a/lib/format1/format1.c
+++ b/lib/format1/format1.c
@@ -384,8 +384,8 @@ static int _format1_pv_setup(const struct format_type *fmt,
struct pvcreate_restorable_params rp = {.restorefile = NULL,
.id = {{0}},
.idp = NULL,
- .ea_start = 0,
- .ea_size = 0,
+ .ba_start = 0,
+ .ba_size = 0,
.pe_start = 0,
.extent_count = 0,
.extent_size = vg->extent_size};
@@ -430,7 +430,7 @@ static int _format1_pv_write(const struct format_type *fmt, struct physical_volu
lvmcache_update_pv(info, pv, fmt);
lvmcache_del_mdas(info);
lvmcache_del_das(info);
- lvmcache_del_eas(info);
+ lvmcache_del_bas(info);
dm_list_init(&pvs);
diff --git a/lib/format_text/export.c b/lib/format_text/export.c
index 6d83106..73b5a3a 100644
--- a/lib/format_text/export.c
+++ b/lib/format_text/export.c
@@ -490,9 +490,9 @@ static int _print_pvs(struct formatter *f, struct volume_group *vg)
outsize(f, vg->extent_size * (uint64_t) pv->pe_count,
"pe_count = %u", pv->pe_count);
- if (pv->ea_start && pv->ea_size) {
- outf(f, "ea_start = %" PRIu64, pv->ea_start);
- outsize(f, pv->ea_size, "ea_size = %" PRIu64, pv->ea_size);
+ if (pv->ba_start && pv->ba_size) {
+ outf(f, "ba_start = %" PRIu64, pv->ba_start);
+ outsize(f, pv->ba_size, "ba_size = %" PRIu64, pv->ba_size);
}
_dec_indent(f);
diff --git a/lib/format_text/format-text.c b/lib/format_text/format-text.c
index 951ec76..1a16134 100644
--- a/lib/format_text/format-text.c
+++ b/lib/format_text/format-text.c
@@ -1331,7 +1331,7 @@ static int _text_pv_write(const struct format_type *fmt, struct physical_volume
mdac->area.start, mdac->area.size, mda_is_ignored(mda));
}
- if (!lvmcache_update_eas(info, pv))
+ if (!lvmcache_update_bas(info, pv))
return_0;
/*
@@ -1510,15 +1510,15 @@ static int _text_pv_initialise(const struct format_type *fmt,
return 0;
}
- if (pv->size < final_alignment + rp->ea_size) {
- log_error("%s: Embedding area with data-aligned start must "
+ if (pv->size < final_alignment + rp->ba_size) {
+ log_error("%s: Bootloader area with data-aligned start must "
"not exceed device size.", pv_dev_name(pv));
return 0;
}
if (rp->pe_start == PV_PE_START_CALC) {
/*
- * Calculate new PE start and embedding area start value.
+ * Calculate new PE start and bootloader area start value.
* Make sure both are properly aligned!
* If PE start can't be aligned because EA is taking
* the whole space, make PE start equal to the PV size
@@ -1526,14 +1526,14 @@ static int _text_pv_initialise(const struct format_type *fmt,
* This needs to be done as we can't have a PV without any DA.
* But we still want to support a PV with EA only!
*/
- if (rp->ea_size) {
- pv->ea_start = final_alignment;
- pv->ea_size = rp->ea_size;
- if ((adjustment = rp->ea_size % pv->pe_align))
- pv->ea_size += pv->pe_align - adjustment;
- if (pv->size < pv->ea_start + pv->ea_size)
- pv->ea_size = pv->size - pv->ea_start;
- pv->pe_start = pv->ea_start + pv->ea_size;
+ if (rp->ba_size) {
+ pv->ba_start = final_alignment;
+ pv->ba_size = rp->ba_size;
+ if ((adjustment = rp->ba_size % pv->pe_align))
+ pv->ba_size += pv->pe_align - adjustment;
+ if (pv->size < pv->ba_start + pv->ba_size)
+ pv->ba_size = pv->size - pv->ba_start;
+ pv->pe_start = pv->ba_start + pv->ba_size;
} else
pv->pe_start = final_alignment;
} else {
@@ -1548,16 +1548,16 @@ static int _text_pv_initialise(const struct format_type *fmt,
* in MDA then!
*/
pv->pe_start = rp->pe_start;
- if (rp->ea_size) {
- if ((rp->ea_start && rp->ea_start + rp->ea_size > rp->pe_start) ||
+ if (rp->ba_size) {
+ if ((rp->ba_start && rp->ba_start + rp->ba_size > rp->pe_start) ||
(rp->pe_start <= final_alignment) ||
- (rp->pe_start - final_alignment < rp->ea_size)) {
- log_error("%s: Embedding area would overlap "
+ (rp->pe_start - final_alignment < rp->ba_size)) {
+ log_error("%s: Bootloader area would overlap "
"data area.", pv_dev_name(pv));
return 0;
} else {
- pv->ea_start = rp->ea_start ? : final_alignment;
- pv->ea_size = rp->ea_size;
+ pv->ba_start = rp->ba_start ? : final_alignment;
+ pv->ba_size = rp->ba_size;
}
}
}
@@ -1985,7 +1985,7 @@ static int _text_pv_add_metadata_area(const struct format_type *fmt,
{
struct format_instance *fid = pv->fid;
const char *pvid = (const char *) (*pv->old_id.uuid ? &pv->old_id : &pv->id);
- uint64_t ea_size, pe_start, pe_end;
+ uint64_t ba_size, pe_start, pe_end;
uint64_t alignment, alignment_offset;
uint64_t disk_size;
uint64_t mda_start;
@@ -2006,7 +2006,7 @@ static int _text_pv_add_metadata_area(const struct format_type *fmt,
}
pe_start = pv->pe_start << SECTOR_SHIFT;
- ea_size = pv->ea_size << SECTOR_SHIFT;
+ ba_size = pv->ba_size << SECTOR_SHIFT;
alignment = pv->pe_align << SECTOR_SHIFT;
alignment_offset = pv->pe_align_offset << SECTOR_SHIFT;
disk_size = pv->size << SECTOR_SHIFT;
@@ -2042,10 +2042,10 @@ static int _text_pv_add_metadata_area(const struct format_type *fmt,
limit_name = "disk size";
}
- /* Adjust limits for embedding area if present. */
- if (ea_size) {
- limit -= ea_size;
- limit_name = "ea_start";
+ /* Adjust limits for bootloader area if present. */
+ if (ba_size) {
+ limit -= ba_size;
+ limit_name = "ba_start";
}
if (limit > disk_size)
@@ -2107,9 +2107,9 @@ static int _text_pv_add_metadata_area(const struct format_type *fmt,
* start of the area that follows the MDA0 we've just calculated.
*/
if (!pe_start_locked) {
- if (ea_size) {
- pv->ea_start = (mda_start + mda_size) >> SECTOR_SHIFT;
- pv->pe_start = pv->ea_start + pv->ea_size;
+ if (ba_size) {
+ pv->ba_start = (mda_start + mda_size) >> SECTOR_SHIFT;
+ pv->pe_start = pv->ba_start + pv->ba_size;
} else
pv->pe_start = (mda_start + mda_size) >> SECTOR_SHIFT;
}
@@ -2140,10 +2140,10 @@ static int _text_pv_add_metadata_area(const struct format_type *fmt,
limit_name = "label scan size";
}
- /* Adjust limits for embedding area if present. */
- if (ea_size) {
- limit += ea_size;
- limit_name = "ea_end";
+ /* Adjust limits for bootloader area if present. */
+ if (ba_size) {
+ limit += ba_size;
+ limit_name = "ba_end";
}
}
@@ -2413,7 +2413,7 @@ struct format_type *create_text_format(struct cmd_context *cmd)
fmt->orphan_vg_name = ORPHAN_VG_NAME(FMT_TEXT_NAME);
fmt->features = FMT_SEGMENTS | FMT_MDAS | FMT_TAGS | FMT_PRECOMMIT |
FMT_UNLIMITED_VOLS | FMT_RESIZE_PV |
- FMT_UNLIMITED_STRIPESIZE | FMT_EAS;
+ FMT_UNLIMITED_STRIPESIZE | FMT_BAS;
if (!(mda_lists = dm_malloc(sizeof(struct mda_lists)))) {
log_error("Failed to allocate dir_list");
diff --git a/lib/format_text/format-text.h b/lib/format_text/format-text.h
index 4706313..7d2543d 100644
--- a/lib/format_text/format-text.h
+++ b/lib/format_text/format-text.h
@@ -58,9 +58,9 @@ int pvhdr_read(struct device *dev, char *buf);
int add_da(struct dm_pool *mem, struct dm_list *das,
uint64_t start, uint64_t size);
void del_das(struct dm_list *das);
-int add_ea(struct dm_pool *mem, struct dm_list *eas,
+int add_ba(struct dm_pool *mem, struct dm_list *eas,
uint64_t start, uint64_t size);
-void del_eas(struct dm_list *eas);
+void del_bas(struct dm_list *eas);
int add_mda(const struct format_type *fmt, struct dm_pool *mem, struct dm_list *mdas,
struct device *dev, uint64_t start, uint64_t size, unsigned ignored);
void del_mdas(struct dm_list *mdas);
diff --git a/lib/format_text/import_vsn1.c b/lib/format_text/import_vsn1.c
index d5b5a73..852f2c5 100644
--- a/lib/format_text/import_vsn1.c
+++ b/lib/format_text/import_vsn1.c
@@ -165,7 +165,7 @@ static int _read_pv(struct format_instance *fid,
struct physical_volume *pv;
struct pv_list *pvl;
const struct dm_config_value *cv;
- uint64_t size, ea_start;
+ uint64_t size, ba_start;
if (!(pvl = dm_pool_zalloc(mem, sizeof(*pvl))) ||
!(pvl->pv = dm_pool_zalloc(mem, sizeof(*pvl->pv))))
@@ -246,19 +246,19 @@ static int _read_pv(struct format_instance *fid,
return 0;
}
- /* Embedding area is not compulsory - just log_debug if not found. */
- ea_start = size = 0;
- if (!_read_uint64(pvn, "ea_start", &ea_start))
- log_debug("PV Embedding Area start value (ea_start) not found.");
- if (!_read_uint64(pvn, "ea_size", &size))
- log_debug("PV Embedding Area size (ea_size) not found.");
- if ((!ea_start && size) || (ea_start && !size)) {
- log_error("Incomplete embedding area specification for "
+ /* Bootloader area is not compulsory - just log_debug if not found. */
+ ba_start = size = 0;
+ if (!_read_uint64(pvn, "ba_start", &ba_start))
+ log_debug("PV Bootloader Area start value (ba_start) not found.");
+ if (!_read_uint64(pvn, "ba_size", &size))
+ log_debug("PV Bootloader Area size (ba_size) not found.");
+ if ((!ba_start && size) || (ba_start && !size)) {
+ log_error("Incomplete bootloader area specification for "
"physical volume.");
return 0;
} else {
- pv->ea_start = ea_start;
- pv->ea_size = size;
+ pv->ba_start = ba_start;
+ pv->ba_size = size;
}
dm_list_init(&pv->tags);
diff --git a/lib/format_text/layout.h b/lib/format_text/layout.h
index 14f9930..6fb3e49 100644
--- a/lib/format_text/layout.h
+++ b/lib/format_text/layout.h
@@ -28,8 +28,8 @@
struct pv_header_extension {
uint32_t version;
uint32_t flags;
- /* NULL-terminated list of embedding areas */
- struct disk_locn embedding_areas_xl[0];
+ /* NULL-terminated list of bootloader areas */
+ struct disk_locn bootloader_areas_xl[0];
} __attribute__ ((packed));
/* Fields with the suffix _xl should be xlate'd wherever they appear */
diff --git a/lib/format_text/text_label.c b/lib/format_text/text_label.c
index 32f3347..3408590 100644
--- a/lib/format_text/text_label.c
+++ b/lib/format_text/text_label.c
@@ -49,9 +49,9 @@ static int _da_setup(struct disk_locn *da, void *baton)
return 1;
}
-static int _ea_setup(struct disk_locn *ea, void *baton)
+static int _ba_setup(struct disk_locn *ba, void *baton)
{
- return _da_setup(ea, baton);
+ return _da_setup(ba, baton);
}
static int _mda_setup(struct metadata_area *mda, void *baton)
@@ -88,7 +88,7 @@ static int _text_write(struct label *label, void *buf)
struct lvmcache_info *info;
struct _dl_setup_baton baton;
char buffer[64] __attribute__((aligned(8)));
- int ea1, da1, mda1, mda2;
+ int ba1, da1, mda1, mda2;
/*
* PV header base
@@ -126,14 +126,14 @@ static int _text_write(struct label *label, void *buf)
pvhdr_ext->version = xlate32(PV_HEADER_EXTENSION_VSN);
pvhdr_ext->flags = 0; /* no flags yet */
- /* List of embedding area locations */
- baton.pvh_dlocn_xl = &pvhdr_ext->embedding_areas_xl[0];
- lvmcache_foreach_ea(info, _ea_setup, &baton);
+ /* List of bootloader area locations */
+ baton.pvh_dlocn_xl = &pvhdr_ext->bootloader_areas_xl[0];
+ lvmcache_foreach_ba(info, _ba_setup, &baton);
_dl_null_termination(&baton);
- /* Create debug message with ea, da and mda locations */
- ea1 = (xlate64(pvhdr_ext->embedding_areas_xl[0].offset) ||
- xlate64(pvhdr_ext->embedding_areas_xl[0].size)) ? 0 : -1;
+ /* Create debug message with ba, da and mda locations */
+ ba1 = (xlate64(pvhdr_ext->bootloader_areas_xl[0].offset) ||
+ xlate64(pvhdr_ext->bootloader_areas_xl[0].size)) ? 0 : -1;
da1 = (xlate64(pvhdr->disk_areas_xl[0].offset) ||
xlate64(pvhdr->disk_areas_xl[0].size)) ? 0 : -1;
@@ -154,13 +154,13 @@ static int _text_write(struct label *label, void *buf)
"%s%.*" PRIu64 "%s%.*" PRIu64 "%s"
"%s%.*" PRIu64 "%s%.*" PRIu64 "%s",
dev_name(lvmcache_device(info)), buffer, lvmcache_device_size(info),
- (ea1 > -1) ? " ea1 (" : "",
- (ea1 > -1) ? 1 : 0,
- (ea1 > -1) ? xlate64(pvhdr_ext->embedding_areas_xl[ea1].offset) >> SECTOR_SHIFT : 0,
- (ea1 > -1) ? "s, " : "",
- (ea1 > -1) ? 1 : 0,
- (ea1 > -1) ? xlate64(pvhdr_ext->embedding_areas_xl[ea1].size) >> SECTOR_SHIFT : 0,
- (ea1 > -1) ? "s)" : "",
+ (ba1 > -1) ? " ba1 (" : "",
+ (ba1 > -1) ? 1 : 0,
+ (ba1 > -1) ? xlate64(pvhdr_ext->bootloader_areas_xl[ba1].offset) >> SECTOR_SHIFT : 0,
+ (ba1 > -1) ? "s, " : "",
+ (ba1 > -1) ? 1 : 0,
+ (ba1 > -1) ? xlate64(pvhdr_ext->bootloader_areas_xl[ba1].size) >> SECTOR_SHIFT : 0,
+ (ba1 > -1) ? "s)" : "",
(da1 > -1) ? " da1 (" : "",
(da1 > -1) ? 1 : 0,
(da1 > -1) ? xlate64(pvhdr->disk_areas_xl[da1].offset) >> SECTOR_SHIFT : 0,
@@ -229,15 +229,15 @@ void del_das(struct dm_list *das)
}
}
-int add_ea(struct dm_pool *mem, struct dm_list *eas,
+int add_ba(struct dm_pool *mem, struct dm_list *eas,
uint64_t start, uint64_t size)
{
return add_da(mem, eas, start, size);
}
-void del_eas(struct dm_list *eas)
+void del_bas(struct dm_list *bas)
{
- del_das(eas);
+ del_das(bas);
}
/* FIXME: refactor this function with other mda constructor code */
@@ -392,7 +392,7 @@ static int _text_read(struct labeller *l, struct device *dev, void *buf,
lvmcache_del_das(info);
lvmcache_del_mdas(info);
- lvmcache_del_eas(info);
+ lvmcache_del_bas(info);
/* Data areas holding the PEs */
dlocn_xl = pvhdr->disk_areas_xl;
@@ -420,10 +420,10 @@ static int _text_read(struct labeller *l, struct device *dev, void *buf,
log_debug("%s: PV header extension version %" PRIu32 " found",
dev_name(dev), ext_version);
- /* Embedding areas */
- dlocn_xl = pvhdr_ext->embedding_areas_xl;
+ /* Bootloader areas */
+ dlocn_xl = pvhdr_ext->bootloader_areas_xl;
while ((offset = xlate64(dlocn_xl->offset))) {
- lvmcache_add_ea(info, offset, xlate64(dlocn_xl->size));
+ lvmcache_add_ba(info, offset, xlate64(dlocn_xl->size));
dlocn_xl++;
}
out:
@@ -443,7 +443,7 @@ static void _text_destroy_label(struct labeller *l __attribute__((unused)),
lvmcache_del_mdas(info);
lvmcache_del_das(info);
- lvmcache_del_eas(info);
+ lvmcache_del_bas(info);
}
static void _fmt_text_destroy(struct labeller *l)
diff --git a/lib/metadata/metadata-exported.h b/lib/metadata/metadata-exported.h
index cd82368..f698b33 100644
--- a/lib/metadata/metadata-exported.h
+++ b/lib/metadata/metadata-exported.h
@@ -109,7 +109,7 @@
#define FMT_RESIZE_PV 0x00000080U /* Supports pvresize? */
#define FMT_UNLIMITED_STRIPESIZE 0x00000100U /* Unlimited stripe size? */
#define FMT_RESTRICTED_READAHEAD 0x00000200U /* Readahead restricted to 2-120? */
-#define FMT_EAS 0x000000400U /* Supports embedding areas? */
+#define FMT_BAS 0x000000400U /* Supports bootloader areas? */
/* Mirror conversion type flags */
#define MIRROR_BY_SEG 0x00000001U /* segment-by-segment mirror */
@@ -401,8 +401,8 @@ struct pvcreate_restorable_params {
const char *restorefile; /* 0 if no --restorefile option */
struct id id; /* FIXME: redundant */
struct id *idp; /* 0 if no --uuid option */
- uint64_t ea_start;
- uint64_t ea_size;
+ uint64_t ba_start;
+ uint64_t ba_size;
uint64_t pe_start;
uint32_t extent_count;
uint32_t extent_size;
diff --git a/lib/metadata/metadata.c b/lib/metadata/metadata.c
index 78841c3..351d157 100644
--- a/lib/metadata/metadata.c
+++ b/lib/metadata/metadata.c
@@ -1414,8 +1414,8 @@ void pvcreate_params_set_defaults(struct pvcreate_params *pp)
pp->metadataignore = DEFAULT_PVMETADATAIGNORE;
pp->rp.restorefile = 0;
pp->rp.idp = 0;
- pp->rp.ea_start = 0;
- pp->rp.ea_size = 0;
+ pp->rp.ba_start = 0;
+ pp->rp.ba_size = 0;
pp->rp.pe_start = PV_PE_START_CALC;
pp->rp.extent_count = 0;
pp->rp.extent_size = 0;
diff --git a/lib/metadata/pv.c b/lib/metadata/pv.c
index 6c165a8..dad747c 100644
--- a/lib/metadata/pv.c
+++ b/lib/metadata/pv.c
@@ -124,14 +124,14 @@ uint32_t pv_pe_size(const struct physical_volume *pv)
return pv_field(pv, pe_size);
}
-uint64_t pv_ea_start(const struct physical_volume *pv)
+uint64_t pv_ba_start(const struct physical_volume *pv)
{
- return pv_field(pv, ea_start);
+ return pv_field(pv, ba_start);
}
-uint64_t pv_ea_size(const struct physical_volume *pv)
+uint64_t pv_ba_size(const struct physical_volume *pv)
{
- return pv_field(pv, ea_size);
+ return pv_field(pv, ba_size);
}
uint64_t pv_pe_start(const struct physical_volume *pv)
diff --git a/lib/metadata/pv.h b/lib/metadata/pv.h
index 6db9d87..c018f38 100644
--- a/lib/metadata/pv.h
+++ b/lib/metadata/pv.h
@@ -43,9 +43,9 @@ struct physical_volume {
uint64_t status;
uint64_t size;
- /* embedding area */
- uint64_t ea_start;
- uint64_t ea_size;
+ /* bootloader area */
+ uint64_t ba_start;
+ uint64_t ba_size;
/* physical extents */
uint32_t pe_size;
@@ -80,8 +80,8 @@ uint64_t pv_free(const struct physical_volume *pv);
uint64_t pv_status(const struct physical_volume *pv);
uint32_t pv_pe_size(const struct physical_volume *pv);
uint64_t pv_pe_start(const struct physical_volume *pv);
-uint64_t pv_ea_start(const struct physical_volume *pv);
-uint64_t pv_ea_size(const struct physical_volume *pv);
+uint64_t pv_ba_start(const struct physical_volume *pv);
+uint64_t pv_ba_size(const struct physical_volume *pv);
uint32_t pv_pe_count(const struct physical_volume *pv);
uint32_t pv_pe_alloc_count(const struct physical_volume *pv);
uint64_t pv_mda_size(const struct physical_volume *pv);
diff --git a/lib/report/columns.h b/lib/report/columns.h
index 201b3c4..6754e6e 100644
--- a/lib/report/columns.h
+++ b/lib/report/columns.h
@@ -112,8 +112,8 @@ FIELD(PVS, pv, NUM, "Alloc", pe_alloc_count, 5, uint32, pv_pe_alloc_count, "Tota
FIELD(PVS, pv, STR, "PV Tags", tags, 7, tags, pv_tags, "Tags, if any.", 0)
FIELD(PVS, pv, NUM, "#PMda", id, 5, pvmdas, pv_mda_count, "Number of metadata areas on this device.", 0)
FIELD(PVS, pv, NUM, "#PMdaUse", id, 8, pvmdasused, pv_mda_used_count, "Number of metadata areas in use on this device.", 0)
-FIELD(PVS, pv, NUM, "EA start", ea_start, 8, size64, ea_start, "Offset to the start of Embedding Area on the underlying device.", 0)
-FIELD(PVS, pv, NUM, "EA size", ea_size, 7, size64, ea_size, "Size of Embedding Area in current units.", 0)
+FIELD(PVS, pv, NUM, "BA start", ba_start, 8, size64, ba_start, "Offset to the start of PV Bootloader Area on the underlying device.", 0)
+FIELD(PVS, pv, NUM, "BA size", ba_size, 7, size64, ba_size, "Size of PV Bootloader Area in current units.", 0)
FIELD(VGS, vg, STR, "Fmt", cmd, 3, vgfmt, vg_fmt, "Type of metadata.", 0)
FIELD(VGS, vg, STR, "VG UUID", id, 38, uuid, vg_uuid, "Unique identifier.", 0)
diff --git a/lib/report/properties.c b/lib/report/properties.c
index 03ebc6f..3073d2a 100644
--- a/lib/report/properties.c
+++ b/lib/report/properties.c
@@ -175,10 +175,10 @@ GET_PV_NUM_PROPERTY_FN(pv_mda_count, pv_mda_count(pv))
#define _pv_mda_count_set _not_implemented_set
GET_PV_NUM_PROPERTY_FN(pv_mda_used_count, pv_mda_used_count(pv))
#define _pv_mda_used_count_set _not_implemented_set
-GET_PV_NUM_PROPERTY_FN(ea_start, SECTOR_SIZE * pv->ea_start)
-#define _ea_start_set _not_implemented_set
-GET_PV_NUM_PROPERTY_FN(ea_size, SECTOR_SIZE * pv->ea_size)
-#define _ea_size_set _not_implemented_set
+GET_PV_NUM_PROPERTY_FN(ba_start, SECTOR_SIZE * pv->ba_start)
+#define _ba_start_set _not_implemented_set
+GET_PV_NUM_PROPERTY_FN(ba_size, SECTOR_SIZE * pv->ba_size)
+#define _ba_size_set _not_implemented_set
/* LV */
GET_LV_STR_PROPERTY_FN(lv_uuid, lv_uuid_dup(lv))
diff --git a/man/pvcreate.8.in b/man/pvcreate.8.in
index 1fda0ad..c3a652c 100644
--- a/man/pvcreate.8.in
+++ b/man/pvcreate.8.in
@@ -12,7 +12,7 @@ pvcreate \- initialize a disk or partition for use by LVM
.RB [ \-\-force ]]
.RB [ \-y | \-\-yes ]
.RB [ \-\-labelsector ]
-.RB [ \-\-embeddingareasize
+.RB [ \-\-bootloaderareasize
.IR size ]
.RB [ \-M | \-\-metadatatype
.IR type ]
@@ -165,15 +165,15 @@ sector (sector 1). This lets you use a different sector near the
start of the disk (between 0 and 3 inclusive - see LABEL_SCAN_SECTORS
in the source). Use with care.
.TP
-.B \-\-embeddingareasize \fIsize
-Create a separate embedding area of specified size besides PV's data
-area. The embedding area is an area of reserved space on the PV from
-which LVM2 will not allocate any extents and it's kept untouched for
-use with external tools to embed their own data or metadata. The start
-of the embedding area is always aligned, see also \fB--dataalignment\fP
-and \fB--dataalignmentoffset\fP. The embedding area size may eventually
+.B \-\-bootloaderareasize \fIsize
+Create a separate bootloader area of specified size besides PV's data
+area. The bootloader area is an area of reserved space on the PV from
+which LVM2 will not allocate any extents and it's kept untouched. This is
+primarily aimed for use with bootloaders to embed their own data or metadata.
+The start of the bootloader area is always aligned, see also \fB--dataalignment\fP
+and \fB--dataalignmentoffset\fP. The bootloader area size may eventually
end up increased due to the alignment, but it's never less than the
-size that is requested. To see the embedding area start and size of
+size that is requested. To see the bootloader area start and size of
an existing Physical Volume use \fBpvs -o +ea_start,ea_size\fP.
.TP
.B \-\-setphysicalvolumesize \fIsize
diff --git a/man/vgconvert.8.in b/man/vgconvert.8.in
index 6567a9e..1e182b6 100644
--- a/man/vgconvert.8.in
+++ b/man/vgconvert.8.in
@@ -8,7 +8,7 @@ vgconvert \- convert volume group metadata format
.RB [ \-t | \-\-test ]
.RB [ \-v | \-\-verbose ]
.RB [ \-\-labelsector ]
-.RB [ \-\-embeddingareasize
+.RB [ \-\-bootloaderareasize
.IR size ]
.RB [ \-M | \-\-metadatatype
.IR type ]
diff --git a/tools/args.h b/tools/args.h
index bfcc5b9..cdc4b3b 100644
--- a/tools/args.h
+++ b/tools/args.h
@@ -26,7 +26,7 @@ arg(vgmetadatacopies_ARG, '\0', "vgmetadatacopies", metadatacopies_arg, 0)
arg(metadatacopies_ARG, '\0', "metadatacopies", metadatacopies_arg, 0)
arg(metadatasize_ARG, '\0', "metadatasize", size_mb_arg, 0)
arg(metadataignore_ARG, '\0', "metadataignore", yes_no_arg, 0)
-arg(embeddingareasize_ARG, '\0', "embeddingareasize", size_mb_arg, 0)
+arg(bootloaderareasize_ARG, '\0', "bootloaderareasize", size_mb_arg, 0)
arg(norestorefile_ARG, '\0', "norestorefile", NULL, 0)
arg(restorefile_ARG, '\0', "restorefile", string_arg, 0)
arg(labelsector_ARG, '\0', "labelsector", int_arg, 0)
diff --git a/tools/commands.h b/tools/commands.h
index 8950243..24f6512 100644
--- a/tools/commands.h
+++ b/tools/commands.h
@@ -552,7 +552,7 @@ xx(pvcreate,
"\t[-M|--metadatatype 1|2]" "\n"
"\t[--pvmetadatacopies #copies]" "\n"
"\t[--metadatasize MetadataSize[bBsSkKmMgGtTpPeE]]" "\n"
- "\t[--embeddingareasize EmbeddingAreaSize[bBsSkKmMgGtTpPeE]]" "\n"
+ "\t[--bootloaderareasize BootLoaderAreaSize[bBsSkKmMgGtTpPeE]]" "\n"
"\t[--dataalignment Alignment[bBsSkKmMgGtTpPeE]]" "\n"
"\t[--dataalignmentoffset AlignmentOffset[bBsSkKmMgGtTpPeE]]" "\n"
"\t[--setphysicalvolumesize PhysicalVolumeSize[bBsSkKmMgGtTpPeE]" "\n"
@@ -564,7 +564,7 @@ xx(pvcreate,
"\t[--version] " "\n"
"\tPhysicalVolume [PhysicalVolume...]\n",
- dataalignment_ARG, dataalignmentoffset_ARG, embeddingareasize_ARG,
+ dataalignment_ARG, dataalignmentoffset_ARG, bootloaderareasize_ARG,
force_ARG, test_ARG, labelsector_ARG, metadatatype_ARG,
metadatacopies_ARG, metadatasize_ARG, metadataignore_ARG,
norestorefile_ARG, physicalvolumesize_ARG, pvmetadatacopies_ARG,
@@ -810,13 +810,13 @@ xx(vgconvert,
"\t[-M|--metadatatype 1|2]" "\n"
"\t[--pvmetadatacopies #copies]" "\n"
"\t[--metadatasize MetadataSize[bBsSkKmMgGtTpPeE]]" "\n"
- "\t[--embeddingareasize EmbeddingAreaSize[bBsSkKmMgGtTpPeE]]" "\n"
+ "\t[--bootloaderareasize BootLoaderAreaSize[bBsSkKmMgGtTpPeE]]" "\n"
"\t[-t|--test] " "\n"
"\t[-v|--verbose] " "\n"
"\t[--version] " "\n"
"\tVolumeGroupName [VolumeGroupName...]\n",
- force_ARG, test_ARG, labelsector_ARG, embeddingareasize_ARG,
+ force_ARG, test_ARG, labelsector_ARG, bootloaderareasize_ARG,
metadatatype_ARG, metadatacopies_ARG, pvmetadatacopies_ARG,
metadatasize_ARG )
diff --git a/tools/pvcreate.c b/tools/pvcreate.c
index da51eec..91562d2 100644
--- a/tools/pvcreate.c
+++ b/tools/pvcreate.c
@@ -71,8 +71,8 @@ static int pvcreate_restore_params_validate(struct cmd_context *cmd,
uuid, pp->rp.restorefile);
return 0;
}
- pp->rp.ea_start = pv_ea_start(existing_pvl->pv);
- pp->rp.ea_size = pv_ea_size(existing_pvl->pv);
+ pp->rp.ba_start = pv_ba_start(existing_pvl->pv);
+ pp->rp.ba_size = pv_ba_size(existing_pvl->pv);
pp->rp.pe_start = pv_pe_start(existing_pvl->pv);
pp->rp.extent_size = pv_pe_size(existing_pvl->pv);
pp->rp.extent_count = pv_pe_count(existing_pvl->pv);
diff --git a/tools/toollib.c b/tools/toollib.c
index e9be968..6e004f3 100644
--- a/tools/toollib.c
+++ b/tools/toollib.c
@@ -1427,9 +1427,9 @@ int pvcreate_params_validate(struct cmd_context *cmd,
return 0;
}
- if (!(cmd->fmt->features & FMT_EAS) &&
- arg_count(cmd, embeddingareasize_ARG)) {
- log_error("Embedding area parameters only "
+ if (!(cmd->fmt->features & FMT_BAS) &&
+ arg_count(cmd, bootloaderareasize_ARG)) {
+ log_error("Bootloader area parameters only "
"apply to text format.");
return 0;
}
@@ -1498,8 +1498,8 @@ int pvcreate_params_validate(struct cmd_context *cmd,
return 0;
}
- if (arg_sign_value(cmd, embeddingareasize_ARG, SIGN_NONE) == SIGN_MINUS) {
- log_error("Embedding area size may not be negative");
+ if (arg_sign_value(cmd, bootloaderareasize_ARG, SIGN_NONE) == SIGN_MINUS) {
+ log_error("Bootloader area size may not be negative");
return 0;
}
@@ -1511,7 +1511,7 @@ int pvcreate_params_validate(struct cmd_context *cmd,
if (pp->pvmetadatacopies < 0)
pp->pvmetadatacopies = find_config_tree_int(cmd, metadata_pvmetadatacopies_CFG);
- pp->rp.ea_size = arg_uint64_value(cmd, embeddingareasize_ARG, pp->rp.ea_size);
+ pp->rp.ba_size = arg_uint64_value(cmd, bootloaderareasize_ARG, pp->rp.ba_size);
return 1;
}
diff --git a/tools/vgconvert.c b/tools/vgconvert.c
index cdadd9a..b06fe34 100644
--- a/tools/vgconvert.c
+++ b/tools/vgconvert.c
@@ -59,13 +59,13 @@ static int vgconvert_single(struct cmd_context *cmd, const char *vg_name,
find_config_tree_int(cmd, metadata_pvmetadatacopies_CFG);
}
- if (cmd->fmt->features & FMT_EAS) {
- if (arg_sign_value(cmd, embeddingareasize_ARG, SIGN_NONE) == SIGN_MINUS) {
- log_error("Embedding area size may not be negative");
+ if (cmd->fmt->features & FMT_BAS) {
+ if (arg_sign_value(cmd, bootloaderareasize_ARG, SIGN_NONE) == SIGN_MINUS) {
+ log_error("Bootloader area size may not be negative");
return EINVALID_CMD_LINE;
}
- rp.ea_size = arg_uint64_value(cmd, embeddingareasize_ARG, UINT64_C(0));
+ rp.ba_size = arg_uint64_value(cmd, bootloaderareasize_ARG, UINT64_C(0));
}
if (!archive(vg)) {
@@ -232,9 +232,9 @@ int vgconvert(struct cmd_context *cmd, int argc, char **argv)
return EINVALID_CMD_LINE;
}
- if (!(cmd->fmt->features & FMT_EAS) &&
- arg_count(cmd, embeddingareasize_ARG)) {
- log_error("Embedding area parameters only apply to text format");
+ if (!(cmd->fmt->features & FMT_BAS) &&
+ arg_count(cmd, bootloaderareasize_ARG)) {
+ log_error("Bootloader area parameters only apply to text format");
return EINVALID_CMD_LINE;
}
10 years, 10 months
master - snapshot: skip monitor for large cows
by Zdenek Kabelac
Gitweb: http://git.fedorahosted.org/git/?p=lvm2.git;a=commitdiff;h=9966842810b904...
Commit: 9966842810b9044d0a59eebbf05856a3a10102b4
Parent: 77952151af683eda4210cbfe4f9928f736ee92a9
Author: Zdenek Kabelac <zkabelac(a)redhat.com>
AuthorDate: Mon May 27 10:20:06 2013 +0200
Committer: Zdenek Kabelac <zkabelac(a)redhat.com>
CommitterDate: Mon May 27 10:35:43 2013 +0200
snapshot: skip monitor for large cows
If snapshot cow device is already big enough to
cover whole origin, do not monitor it.
---
WHATS_NEW | 1 +
lib/activate/activate.c | 7 +++++++
lib/metadata/lv.c | 2 ++
3 files changed, 10 insertions(+), 0 deletions(-)
diff --git a/WHATS_NEW b/WHATS_NEW
index 7f6c134..3b88732 100644
--- a/WHATS_NEW
+++ b/WHATS_NEW
@@ -1,5 +1,6 @@
Version 2.02.99 -
===================================
+ Skip monitoring of snapshots that are already bigger then origin.
Add lv_is_cow_covering_origin() to check if cow covers origin size.
Use libdm dm_get_status_snapshot() to parse snapshot status.
Add detection of mounted fs also for vgchange deactivation.
diff --git a/lib/activate/activate.c b/lib/activate/activate.c
index bb8f6f9..7f3d7c6 100644
--- a/lib/activate/activate.c
+++ b/lib/activate/activate.c
@@ -1456,6 +1456,13 @@ int monitor_dev_for_events(struct cmd_context *cmd, struct logical_volume *lv,
return 1;
}
+ /* Do not monitor snapshot that already covers origin */
+ if (monitor && lv_is_cow_covering_origin(lv)) {
+ log_debug_activation("Skipping monitor of snapshot larger "
+ "then origin %s.", lv->name);
+ return 1;
+ }
+
/*
* In case of a snapshot device, we monitor lv->snapshot->lv,
* not the actual LV itself.
diff --git a/lib/metadata/lv.c b/lib/metadata/lv.c
index 4795032..b47b096 100644
--- a/lib/metadata/lv.c
+++ b/lib/metadata/lv.c
@@ -148,6 +148,8 @@ char *lvseg_monitor_dup(struct dm_pool *mem, const struct lv_segment *seg)
// log_debug("Query LV:%s mon:%s segm:%s tgtm:%p segmon:%d statusm:%d", seg->lv->name, segm->lv->name, segm->segtype->name, segm->segtype->ops->target_monitored, seg_monitored(segm), (int)(segm->status & PVMOVE));
if (!segm->segtype->ops->target_monitored)
/* Nothing to do, monitoring not supported */;
+ else if (lv_is_cow_covering_origin(seg->lv))
+ /* Nothing to do, snapshot already covers origin */;
else if (!seg_monitored(segm) || (segm->status & PVMOVE))
s = "not monitored";
else if (lv_info(seg->lv->vg->cmd, seg->lv, 1, &info, 0, 0) && info.exists) {
10 years, 11 months
master - snapshot: add lv_is_cow_covering_origin
by Zdenek Kabelac
Gitweb: http://git.fedorahosted.org/git/?p=lvm2.git;a=commitdiff;h=77952151af683e...
Commit: 77952151af683eda4210cbfe4f9928f736ee92a9
Parent: e992cb253cb4c9bf027dd7852d4399d2b439621c
Author: Zdenek Kabelac <zkabelac(a)redhat.com>
AuthorDate: Mon May 27 10:18:20 2013 +0200
Committer: Zdenek Kabelac <zkabelac(a)redhat.com>
CommitterDate: Mon May 27 10:34:53 2013 +0200
snapshot: add lv_is_cow_covering_origin
Add function to check is size of cow is already big enough
to cover whole origin.
---
WHATS_NEW | 1 +
lib/metadata/metadata-exported.h | 1 +
lib/metadata/snapshot_manip.c | 7 +++++++
3 files changed, 9 insertions(+), 0 deletions(-)
diff --git a/WHATS_NEW b/WHATS_NEW
index 734e86c..7f6c134 100644
--- a/WHATS_NEW
+++ b/WHATS_NEW
@@ -1,5 +1,6 @@
Version 2.02.99 -
===================================
+ Add lv_is_cow_covering_origin() to check if cow covers origin size.
Use libdm dm_get_status_snapshot() to parse snapshot status.
Add detection of mounted fs also for vgchange deactivation.
Replace 'lv_is_active' with more correct/specific variants (e.g. *_locally).
diff --git a/lib/metadata/metadata-exported.h b/lib/metadata/metadata-exported.h
index c3cb116..cd82368 100644
--- a/lib/metadata/metadata-exported.h
+++ b/lib/metadata/metadata-exported.h
@@ -717,6 +717,7 @@ int lv_is_virtual_origin(const struct logical_volume *lv);
int lv_is_cow(const struct logical_volume *lv);
int lv_is_merging_origin(const struct logical_volume *origin);
int lv_is_merging_cow(const struct logical_volume *snapshot);
+int lv_is_cow_covering_origin(const struct logical_volume *lv);
/* Test if given LV is visible from user's perspective */
int lv_is_visible(const struct logical_volume *lv);
diff --git a/lib/metadata/snapshot_manip.c b/lib/metadata/snapshot_manip.c
index 11f60d8..a7f57a6 100644
--- a/lib/metadata/snapshot_manip.c
+++ b/lib/metadata/snapshot_manip.c
@@ -31,6 +31,13 @@ int lv_is_cow(const struct logical_volume *lv)
return (!lv_is_origin(lv) && lv->snapshot) ? 1 : 0;
}
+int lv_is_cow_covering_origin(const struct logical_volume *lv)
+{
+ /* TODO: we need less then 1% of origin size, depends on chunk size */
+ return lv_is_cow(lv) ?
+ (origin_from_cow(lv)->size * UINT64_C(101) <= lv->size * UINT64_C(100)) : 0;
+}
+
int lv_is_visible(const struct logical_volume *lv)
{
if (lv->status & SNAPSHOT)
10 years, 11 months
master - dmeventd: use dm_get_status_snapshot()
by Zdenek Kabelac
Gitweb: http://git.fedorahosted.org/git/?p=lvm2.git;a=commitdiff;h=e992cb253cb4c9...
Commit: e992cb253cb4c9bf027dd7852d4399d2b439621c
Parent: 06e8ff29ff59a1893312f5b2d5e818c8c62ee7b1
Author: Zdenek Kabelac <zkabelac(a)redhat.com>
AuthorDate: Sun May 26 17:07:08 2013 +0200
Committer: Zdenek Kabelac <zkabelac(a)redhat.com>
CommitterDate: Mon May 27 10:33:06 2013 +0200
dmeventd: use dm_get_status_snapshot()
Switch to use libdm dm_get_status_snapshot() function for
reading status info.
This fixes bug, where the code was using 32bit integers,
while the snapshot target is able to return 64bit sizes.
However this also means, someone is using >1TB snapshot
cow devices, which is actually very bad idea anyway, since the
perfomance and memory usage in this case is very bad.
---
WHATS_NEW_DM | 1 +
.../dmeventd/plugins/snapshot/dmeventd_snapshot.c | 79 ++++++--------------
2 files changed, 24 insertions(+), 56 deletions(-)
diff --git a/WHATS_NEW_DM b/WHATS_NEW_DM
index 99e8269..6dcf9f8 100644
--- a/WHATS_NEW_DM
+++ b/WHATS_NEW_DM
@@ -1,5 +1,6 @@
Version 1.02.78 -
===================================
+ Fix parsing of 64bit snapshot status in dmeventd snapshot plugin.
Add dm_get_status_snapshot() for parsing snapshot status.
Detecte mounted fs also via reading /proc/self/mountinfo.
Add dm_mountinfo_read() for parsing /proc/self/mountinfo.
diff --git a/daemons/dmeventd/plugins/snapshot/dmeventd_snapshot.c b/daemons/dmeventd/plugins/snapshot/dmeventd_snapshot.c
index 205218a..ac33ef3 100644
--- a/daemons/dmeventd/plugins/snapshot/dmeventd_snapshot.c
+++ b/daemons/dmeventd/plugins/snapshot/dmeventd_snapshot.c
@@ -32,52 +32,13 @@
#define UMOUNT_COMMAND "/bin/umount"
-struct snap_status {
- int invalid;
- int used;
- int max;
-};
-
struct dso_state {
+ struct dm_pool *mem;
int percent_check;
- int known_size;
+ uint64_t known_size;
char cmd_str[1024];
};
-/* FIXME possibly reconcile this with target_percent when we gain
- access to regular LVM library here. */
-static void _parse_snapshot_params(char *params, struct snap_status *status)
-{
- char *p;
- /*
- * xx/xx -- fractions used/max
- * Invalid -- snapshot invalidated
- * Unknown -- status unknown
- */
- status->used = status->max = 0;
-
- if (!strncmp(params, "Invalid", 7)) {
- status->invalid = 1;
- return;
- }
-
- /*
- * When we return without setting non-zero max, the parent is
- * responsible for reporting errors.
- */
- if (!strncmp(params, "Unknown", 7))
- return;
-
- if (!(p = strstr(params, "/")))
- return;
-
- *p = '\0';
- p++;
-
- status->used = atoi(params);
- status->max = atoi(p);
-}
-
static int _run(const char *cmd, ...)
{
va_list ap;
@@ -171,9 +132,9 @@ void process_event(struct dm_task *dmt,
uint64_t start, length;
char *target_type = NULL;
char *params;
- struct snap_status status = { 0 };
+ struct dm_status_snapshot *status = NULL;
const char *device = dm_task_get_name(dmt);
- int percent;
+ uint64_t percent;
struct dso_state *state = *private;
/* No longer monitoring, waiting for remove */
@@ -186,34 +147,35 @@ void process_event(struct dm_task *dmt,
if (!target_type)
goto out;
- _parse_snapshot_params(params, &status);
+ if (!dm_get_status_snapshot(state->mem, params, &status))
+ goto out;
- if (status.invalid) {
+ if (status->invalid) {
struct dm_info info;
if (dm_task_get_info(dmt, &info)) {
dmeventd_lvm2_unlock();
_umount(device, info.major, info.minor);
- return;
+ return;
} /* else; too bad, but this is best-effort thing... */
}
/* Snapshot size had changed. Clear the threshold. */
- if (state->known_size != status.max) {
+ if (state->known_size != status->total_sectors) {
state->percent_check = CHECK_MINIMUM;
- state->known_size = status.max;
+ state->known_size = status->total_sectors;
}
/*
* If the snapshot has been invalidated or we failed to parse
* the status string. Report the full status string to syslog.
*/
- if (status.invalid || !status.max) {
+ if (status->invalid || !status->total_sectors) {
syslog(LOG_ERR, "Snapshot %s changed state to: %s\n", device, params);
state->percent_check = 0;
goto out;
}
- percent = 100 * status.used / status.max;
+ percent = 100 * status->used_sectors / status->total_sectors;
if (percent >= state->percent_check) {
/* Usage has raised more than CHECK_STEP since the last
time. Run actions. */
@@ -227,6 +189,8 @@ void process_event(struct dm_task *dmt,
}
out:
+ if (status)
+ dm_pool_free(state->mem, status);
dmeventd_lvm2_unlock();
}
@@ -236,28 +200,31 @@ int register_device(const char *device,
int minor __attribute__((unused)),
void **private)
{
+ struct dm_pool *statemem = NULL;
struct dso_state *state;
if (!dmeventd_lvm2_init())
goto out;
- if (!(state = dm_zalloc(sizeof(*state))))
+ if (!(statemem = dm_pool_create("snapshot_state", 512)) ||
+ !(state = dm_pool_zalloc(statemem, sizeof(*state))))
goto bad;
- if (!dmeventd_lvm2_command(dmeventd_lvm2_pool(),
- state->cmd_str, sizeof(state->cmd_str),
+ if (!dmeventd_lvm2_command(statemem, state->cmd_str,
+ sizeof(state->cmd_str),
"lvextend --use-policies", device))
goto bad;
+ state->mem = statemem;
state->percent_check = CHECK_MINIMUM;
- state->known_size = 0;
*private = state;
syslog(LOG_INFO, "Monitoring snapshot %s\n", device);
return 1;
bad:
- dm_free(state);
+ if (statemem)
+ dm_pool_destroy(statemem);
dmeventd_lvm2_exit();
out:
syslog(LOG_ERR, "Failed to monitor snapshot %s.\n", device);
@@ -274,7 +241,7 @@ int unregister_device(const char *device,
struct dso_state *state = *private;
syslog(LOG_INFO, "No longer monitoring snapshot %s\n", device);
- dm_free(state);
+ dm_pool_destroy(state->mem);
dmeventd_lvm2_exit();
return 1;
10 years, 11 months
master - snapshot: use dm_get_status_snapshot()
by Zdenek Kabelac
Gitweb: http://git.fedorahosted.org/git/?p=lvm2.git;a=commitdiff;h=06e8ff29ff59a1...
Commit: 06e8ff29ff59a1893312f5b2d5e818c8c62ee7b1
Parent: cb587fd10034fa65ebba177022aba10e7a64aacd
Author: Zdenek Kabelac <zkabelac(a)redhat.com>
AuthorDate: Sun May 26 17:04:14 2013 +0200
Committer: Zdenek Kabelac <zkabelac(a)redhat.com>
CommitterDate: Mon May 27 10:32:02 2013 +0200
snapshot: use dm_get_status_snapshot()
Replace code with libdm call to dm_get_status_snapshot().
---
WHATS_NEW | 1 +
lib/snapshot/snapshot.c | 36 +++++++++++++++---------------------
2 files changed, 16 insertions(+), 21 deletions(-)
diff --git a/WHATS_NEW b/WHATS_NEW
index e63e000..734e86c 100644
--- a/WHATS_NEW
+++ b/WHATS_NEW
@@ -1,5 +1,6 @@
Version 2.02.99 -
===================================
+ Use libdm dm_get_status_snapshot() to parse snapshot status.
Add detection of mounted fs also for vgchange deactivation.
Replace 'lv_is_active' with more correct/specific variants (e.g. *_locally).
Refuse to init a snapshot merge in lvconvert if there's no kernel support.
diff --git a/lib/snapshot/snapshot.c b/lib/snapshot/snapshot.c
index 2bab9d2..453d96a 100644
--- a/lib/snapshot/snapshot.c
+++ b/lib/snapshot/snapshot.c
@@ -117,32 +117,26 @@ static int _snap_target_percent(void **target_state __attribute__((unused)),
char *params, uint64_t *total_numerator,
uint64_t *total_denominator)
{
- uint64_t total_sectors, sectors_allocated, metadata_sectors;
- int r;
-
- /*
- * snapshot target's percent format:
- * <= 1.7.0: <sectors_allocated>/<total_sectors>
- * >= 1.8.0: <sectors_allocated>/<total_sectors> <metadata_sectors>
- */
- r = sscanf(params, "%" PRIu64 "/%" PRIu64 " %" PRIu64,
- §ors_allocated, &total_sectors, &metadata_sectors);
- if (r == 2 || r == 3) {
- *total_numerator += sectors_allocated;
- *total_denominator += total_sectors;
- if (r == 3 && sectors_allocated == metadata_sectors)
+ struct dm_status_snapshot *s;
+
+ if (!dm_get_status_snapshot(mem, params, &s))
+ return_0;
+
+ if (s->invalid)
+ *percent = PERCENT_INVALID;
+ else if (s->merge_failed)
+ *percent = PERCENT_MERGE_FAILED;
+ else {
+ *total_numerator += s->used_sectors;
+ *total_denominator += s->total_sectors;
+ if (s->has_metadata_sectors &&
+ s->used_sectors == s->metadata_sectors)
*percent = PERCENT_0;
- else if (sectors_allocated == total_sectors)
+ else if (s->used_sectors == s->total_sectors)
*percent = PERCENT_100;
else
*percent = make_percent(*total_numerator, *total_denominator);
}
- else if (!strcmp(params, "Invalid"))
- *percent = PERCENT_INVALID;
- else if (!strcmp(params, "Merge failed"))
- *percent = PERCENT_MERGE_FAILED;
- else
- return 0;
return 1;
}
10 years, 11 months
master - libdm: free mem pool on err path
by Zdenek Kabelac
Gitweb: http://git.fedorahosted.org/git/?p=lvm2.git;a=commitdiff;h=cb587fd10034fa...
Commit: cb587fd10034fa65ebba177022aba10e7a64aacd
Parent: 4707ac7200ba559ad080e4349f660c0a7559610c
Author: Zdenek Kabelac <zkabelac(a)redhat.com>
AuthorDate: Sun May 26 17:00:14 2013 +0200
Committer: Zdenek Kabelac <zkabelac(a)redhat.com>
CommitterDate: Mon May 27 10:30:55 2013 +0200
libdm: free mem pool on err path
Since we use get_status also in dmeventd, which may use one pool
for a single device, in case it would be repeatedly returning error,
it may not be freeing the pool and would cause slow but steady growth.
To stay safe in the error path release any allocated memory.
---
libdm/libdm-deptree.c | 18 ++++++++++++------
1 files changed, 12 insertions(+), 6 deletions(-)
diff --git a/libdm/libdm-deptree.c b/libdm/libdm-deptree.c
index 56522f1..2201b30 100644
--- a/libdm/libdm-deptree.c
+++ b/libdm/libdm-deptree.c
@@ -2955,10 +2955,10 @@ int dm_get_status_raid(struct dm_pool *mem, const char *params,
return_0;
if (!(s->raid_type = dm_pool_zalloc(mem, p - params)))
- return_0; /* memory is freed went pool is destroyed */
+ goto_bad; /* memory is freed went pool is destroyed */
if (!(s->dev_health = dm_pool_zalloc(mem, i + 1)))
- return_0;
+ goto_bad;
if (sscanf(params, "%s %d %s %" PRIu64 "/%" PRIu64,
s->raid_type,
@@ -2967,7 +2967,7 @@ int dm_get_status_raid(struct dm_pool *mem, const char *params,
&s->insync_regions,
&s->total_regions) != 5) {
log_error("Failed to parse raid params: %s", params);
- return 0;
+ goto bad;
}
*status = s;
@@ -2986,19 +2986,23 @@ int dm_get_status_raid(struct dm_pool *mem, const char *params,
pp = p;
if (!(p = strchr(p, ' '))) {
log_error(INTERNAL_ERROR "Bad RAID status received.");
- return 0;
+ goto bad;
}
p++;
if (!(s->sync_action = dm_pool_zalloc(mem, p - pp)))
- return_0;
+ goto_bad;
if (sscanf(pp, "%s %" PRIu64, s->sync_action, &s->mismatch_count) != 2) {
log_error("Failed to parse raid params: %s", params);
- return 0;
+ goto bad;
}
return 1;
+bad:
+ dm_pool_free(mem, s);
+
+ return 0;
}
int dm_tree_node_add_replicator_target(struct dm_tree_node *node,
@@ -3428,6 +3432,7 @@ int dm_get_status_thin_pool(struct dm_pool *mem, const char *params,
&s->total_metadata_blocks,
&s->used_data_blocks,
&s->total_data_blocks, &pos) < 5) {
+ dm_pool_free(mem, s);
log_error("Failed to parse thin pool params: %s.", params);
return 0;
}
@@ -3468,6 +3473,7 @@ int dm_get_status_thin(struct dm_pool *mem, const char *params,
} else if (sscanf(params, "%" PRIu64 " %" PRIu64,
&s->mapped_sectors,
&s->highest_mapped_sector) != 2) {
+ dm_pool_free(mem, s);
log_error("Failed to parse thin params: %s.", params);
return 0;
}
10 years, 11 months
master - libdm: add dm_get_status_snapshot
by Zdenek Kabelac
Gitweb: http://git.fedorahosted.org/git/?p=lvm2.git;a=commitdiff;h=4707ac7200ba55...
Commit: 4707ac7200ba559ad080e4349f660c0a7559610c
Parent: 3ba3bc0d6641db5b02e63759949388a840f58d48
Author: Zdenek Kabelac <zkabelac(a)redhat.com>
AuthorDate: Sun May 26 16:57:50 2013 +0200
Committer: Zdenek Kabelac <zkabelac(a)redhat.com>
CommitterDate: Mon May 27 10:30:51 2013 +0200
libdm: add dm_get_status_snapshot
Add dm_get_status_snapshot() for parsing snapshot status.
---
WHATS_NEW_DM | 1 +
libdm/libdevmapper.h | 20 +++++++++++++++++++-
libdm/libdm-deptree.c | 39 ++++++++++++++++++++++++++++++++++++++-
3 files changed, 58 insertions(+), 2 deletions(-)
diff --git a/WHATS_NEW_DM b/WHATS_NEW_DM
index 9132e01..99e8269 100644
--- a/WHATS_NEW_DM
+++ b/WHATS_NEW_DM
@@ -1,5 +1,6 @@
Version 1.02.78 -
===================================
+ Add dm_get_status_snapshot() for parsing snapshot status.
Detecte mounted fs also via reading /proc/self/mountinfo.
Add dm_mountinfo_read() for parsing /proc/self/mountinfo.
Report error for nonexisting devices in dmeventd communication.
diff --git a/libdm/libdevmapper.h b/libdm/libdevmapper.h
index d9cd280..1bf5807 100644
--- a/libdm/libdevmapper.h
+++ b/libdm/libdevmapper.h
@@ -1,6 +1,6 @@
/*
* Copyright (C) 2001-2004 Sistina Software, Inc. All rights reserved.
- * Copyright (C) 2004-2011 Red Hat, Inc. All rights reserved.
+ * Copyright (C) 2004-2013 Red Hat, Inc. All rights reserved.
*
* This file is part of the device-mapper userspace tools.
*
@@ -286,6 +286,24 @@ struct dm_status_raid {
int dm_get_status_raid(struct dm_pool *mem, const char *params,
struct dm_status_raid **status);
+
+/*
+ * Snapshot target's format:
+ * <= 1.7.0: <used_sectors>/<total_sectors>
+ * >= 1.8.0: <used_sectors>/<total_sectors> <metadata_sectors>
+ */
+struct dm_status_snapshot {
+ uint64_t used_sectors; /* in 512b units */
+ uint64_t total_sectors;
+ uint64_t metadata_sectors;
+ unsigned has_metadata_sectors : 1; /* set when metadata_sectors is present */
+ unsigned invalid : 1; /* set when snapshot is invalidated */
+ unsigned merge_failed : 1; /* set when snapshot merge failed */
+};
+
+int dm_get_status_snapshot(struct dm_pool *mem, const char *params,
+ struct dm_status_snapshot **status);
+
/*
* Parse params from STATUS call for thin_pool target
*/
diff --git a/libdm/libdm-deptree.c b/libdm/libdm-deptree.c
index 115754b..56522f1 100644
--- a/libdm/libdm-deptree.c
+++ b/libdm/libdm-deptree.c
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2005-2012 Red Hat, Inc. All rights reserved.
+ * Copyright (C) 2005-2013 Red Hat, Inc. All rights reserved.
*
* This file is part of the device-mapper userspace tools.
*
@@ -2718,6 +2718,43 @@ int dm_tree_node_add_snapshot_merge_target(struct dm_tree_node *node,
merge_uuid, 1, chunk_size);
}
+int dm_get_status_snapshot(struct dm_pool *mem, const char *params,
+ struct dm_status_snapshot **status)
+{
+ struct dm_status_snapshot *s;
+ int r;
+
+ if (!params) {
+ log_error("Failed to parse invalid snapshot params.");
+ return 0;
+ }
+
+ if (!(s = dm_pool_zalloc(mem, sizeof(*s)))) {
+ log_error("Failed to allocate snapshot status structure.");
+ return 0;
+ }
+
+ r = sscanf(params, "%" PRIu64 "/%" PRIu64 " %" PRIu64,
+ &s->used_sectors, &s->total_sectors,
+ &s->metadata_sectors);
+
+ if (r == 3 || r == 2)
+ s->has_metadata_sectors = (r == 3);
+ else if (!strcmp(params, "Invalid"))
+ s->invalid = 1;
+ else if (!strcmp(params, "Merge failed"))
+ s->merge_failed = 1;
+ else {
+ dm_pool_free(mem, s);
+ log_error("Failed to parse snapshot params: %s.", params);
+ return 0;
+ }
+
+ *status = s;
+
+ return 1;
+}
+
int dm_tree_node_add_error_target(struct dm_tree_node *node,
uint64_t size)
{
10 years, 11 months
master - cleanup: drop backtrace
by Zdenek Kabelac
Gitweb: http://git.fedorahosted.org/git/?p=lvm2.git;a=commitdiff;h=3ba3bc0d6641db...
Commit: 3ba3bc0d6641db5b02e63759949388a840f58d48
Parent: 58a2e5e2df4049108b1ba0fe970fd88eba9a3290
Author: Zdenek Kabelac <zkabelac(a)redhat.com>
AuthorDate: Thu May 23 16:17:08 2013 +0200
Committer: Zdenek Kabelac <zkabelac(a)redhat.com>
CommitterDate: Mon May 27 10:28:32 2013 +0200
cleanup: drop backtrace
After log_error/log_warn there is no point to show <backtrace>
in debug log trace from the next code line.
---
lib/activate/activate.c | 4 ++--
lib/metadata/metadata.c | 8 ++++----
libdm/libdm-deptree.c | 8 ++++----
tools/pvmove.c | 2 +-
tools/vgextend.c | 4 ++--
5 files changed, 13 insertions(+), 13 deletions(-)
diff --git a/lib/activate/activate.c b/lib/activate/activate.c
index 6c368b9..bb8f6f9 100644
--- a/lib/activate/activate.c
+++ b/lib/activate/activate.c
@@ -2019,13 +2019,13 @@ static int _lv_activate(struct cmd_context *cmd, const char *lvid_s,
if ((!lv->vg->cmd->partial_activation) && (lv->status & PARTIAL_LV)) {
log_error("Refusing activation of partial LV %s. Use --partial to override.",
lv->name);
- goto_out;
+ goto out;
}
if (lv_has_unknown_segments(lv)) {
log_error("Refusing activation of LV %s containing "
"an unrecognised segment.", lv->name);
- goto_out;
+ goto out;
}
if (test_mode()) {
diff --git a/lib/metadata/metadata.c b/lib/metadata/metadata.c
index 357e849..78841c3 100644
--- a/lib/metadata/metadata.c
+++ b/lib/metadata/metadata.c
@@ -4009,7 +4009,7 @@ static struct volume_group *_vg_lock_and_read(struct cmd_context *cmd, const cha
if (consistent_in && !consistent) {
log_error("Volume group \"%s\" inconsistent.", vg_name);
failure |= FAILED_INCONSISTENT;
- goto_bad;
+ goto bad;
}
log_error("Volume group \"%s\" not found", vg_name);
@@ -4031,7 +4031,7 @@ static struct volume_group *_vg_lock_and_read(struct cmd_context *cmd, const cha
log_error("Recovery of volume group \"%s\" failed.",
vg_name);
failure |= FAILED_INCONSISTENT;
- goto_bad;
+ goto bad;
}
}
@@ -4045,7 +4045,7 @@ static struct volume_group *_vg_lock_and_read(struct cmd_context *cmd, const cha
log_error("Cannot change VG %s while PVs are missing.", vg->name);
log_error("Consider vgreduce --removemissing.");
failure |= FAILED_INCONSISTENT; /* FIXME new failure code here? */
- goto_bad;
+ goto bad;
}
if (!cmd->handles_unknown_segments && vg_has_unknown_segments(vg) &&
@@ -4053,7 +4053,7 @@ static struct volume_group *_vg_lock_and_read(struct cmd_context *cmd, const cha
log_error("Cannot change VG %s with unknown segments in it!",
vg->name);
failure |= FAILED_INCONSISTENT; /* FIXME new failure code here? */
- goto_bad;
+ goto bad;
}
failure |= _vg_bad_status_bits(vg, status_flags);
diff --git a/libdm/libdm-deptree.c b/libdm/libdm-deptree.c
index b084bc0..115754b 100644
--- a/libdm/libdm-deptree.c
+++ b/libdm/libdm-deptree.c
@@ -851,13 +851,13 @@ static int _info_by_dev(uint32_t major, uint32_t minor, int with_open_count,
if (name && !(*name = dm_pool_strdup(mem, dm_task_get_name(dmt)))) {
log_error("name pool_strdup failed");
r = 0;
- goto_out;
+ goto out;
}
if (uuid && !(*uuid = dm_pool_strdup(mem, dm_task_get_uuid(dmt)))) {
log_error("uuid pool_strdup failed");
r = 0;
- goto_out;
+ goto out;
}
out:
@@ -1016,13 +1016,13 @@ static int _node_clear_table(struct dm_tree_node *dnode, uint16_t udev_flags)
if (!(dmt = dm_task_create(DM_DEVICE_CLEAR))) {
log_error("Table clear dm_task creation failed for %s", name);
- goto_out;
+ goto out;
}
if (!dm_task_set_major(dmt, info->major) ||
!dm_task_set_minor(dmt, info->minor)) {
log_error("Failed to set device number for %s table clear", name);
- goto_out;
+ goto out;
}
r = dm_task_run(dmt);
diff --git a/tools/pvmove.c b/tools/pvmove.c
index 5c51c5f..cbfed3c 100644
--- a/tools/pvmove.c
+++ b/tools/pvmove.c
@@ -464,7 +464,7 @@ static int _update_metadata(struct cmd_context *cmd, struct volume_group *vg,
* FIXME Run --abort internally here.
*/
log_error("ABORTING: Temporary pvmove mirror activation failed. Run pvmove --abort.");
- goto_out;
+ goto out;
}
}
diff --git a/tools/vgextend.c b/tools/vgextend.c
index 2ce7edb..93d55a0 100644
--- a/tools/vgextend.c
+++ b/tools/vgextend.c
@@ -92,7 +92,7 @@ int vgextend(struct cmd_context *cmd, int argc, char **argv)
}
if (!fixed) {
log_error("No PV has been restored.");
- goto_bad;
+ goto bad;
}
} else { /* no --restore, normal vgextend */
if (!lock_vol(cmd, VG_ORPHANS, LCK_VG_WRITE)) {
@@ -108,7 +108,7 @@ int vgextend(struct cmd_context *cmd, int argc, char **argv)
"of VG %s metadata? [y/n]: ",
vg_name) == 'n') {
log_error("Volume group %s not changed", vg_name);
- goto_bad;
+ goto bad;
}
/* extend vg */
10 years, 11 months
master - cleanup: use last_seg
by Zdenek Kabelac
Gitweb: http://git.fedorahosted.org/git/?p=lvm2.git;a=commitdiff;h=58a2e5e2df4049...
Commit: 58a2e5e2df4049108b1ba0fe970fd88eba9a3290
Parent: 8cbacd2474b288a581274dba9b623ec2e9ac9d28
Author: Zdenek Kabelac <zkabelac(a)redhat.com>
AuthorDate: Wed May 22 15:04:51 2013 +0200
Committer: Zdenek Kabelac <zkabelac(a)redhat.com>
CommitterDate: Mon May 27 10:28:32 2013 +0200
cleanup: use last_seg
Use function to obtain last segment type.
---
tools/lvresize.c | 4 +---
1 files changed, 1 insertions(+), 3 deletions(-)
diff --git a/tools/lvresize.c b/tools/lvresize.c
index e44fd82..b679bf9 100644
--- a/tools/lvresize.c
+++ b/tools/lvresize.c
@@ -558,9 +558,7 @@ static int _lvresize(struct cmd_context *cmd, struct volume_group *vg,
seg_size = lp->extents - lv->le_count;
/* Use segment type of last segment */
- dm_list_iterate_items(seg, &lv->segments) {
- lp->segtype = seg->segtype;
- }
+ lp->segtype = last_seg(lv)->segtype;
/* FIXME Support LVs with mixed segment types */
if (lp->segtype != get_segtype_from_string(cmd, arg_str_value(cmd, type_ARG,
10 years, 11 months
master - lv_manip: use lv_is_active
by Zdenek Kabelac
Gitweb: http://git.fedorahosted.org/git/?p=lvm2.git;a=commitdiff;h=8cbacd2474b288...
Commit: 8cbacd2474b288a581274dba9b623ec2e9ac9d28
Parent: 2ada982e73872e45215e68e57b2b6b4168dc26f8
Author: Zdenek Kabelac <zkabelac(a)redhat.com>
AuthorDate: Thu May 16 23:12:39 2013 +0200
Committer: Zdenek Kabelac <zkabelac(a)redhat.com>
CommitterDate: Mon May 20 16:47:33 2013 +0200
lv_manip: use lv_is_active
Updated reverted commit.
The usage of lv_is_active() is needed here, so the
(!lv_is_active_exclusive_locally) gives the correct
report.
---
lib/metadata/lv_manip.c | 12 +-----------
1 files changed, 1 insertions(+), 11 deletions(-)
diff --git a/lib/metadata/lv_manip.c b/lib/metadata/lv_manip.c
index fadef6b..af000af 100644
--- a/lib/metadata/lv_manip.c
+++ b/lib/metadata/lv_manip.c
@@ -4394,8 +4394,6 @@ static struct logical_volume *_lv_create_an_lv(struct volume_group *vg, struct l
struct logical_volume *pool_lv;
struct lv_list *lvl;
const char *thin_name = NULL;
- int origin_active = 0;
- struct lvinfo info;
if (new_lv_name && find_lv_in_vg(vg, new_lv_name)) {
log_error("Logical volume \"%s\" already exists in "
@@ -4525,15 +4523,7 @@ static struct logical_volume *_lv_create_an_lv(struct volume_group *vg, struct l
log_warn("WARNING: See global/mirror_segtype_default in lvm.conf.");
}
- if (!lv_info(cmd, org, 0, &info, 0, 0)) {
- log_error("Check for existence of active snapshot "
- "origin '%s' failed.", org->name);
- return NULL;
- }
-
- origin_active = info.exists;
-
- if (vg_is_clustered(vg) &&
+ if (vg_is_clustered(vg) && lv_is_active(org) &&
!lv_is_active_exclusive_locally(org)) {
log_error("%s must be active exclusively to"
" create snapshot", org->name);
10 years, 11 months