Version 2.02.89 -
==================================
- Lookup snapshot usage percent of origin when a snapshot is merging.
+ Differentiate between snapshot status of "Invalid" and "Merge failed".
+ Lookup snapshot usage percent of origin volume when a snapshot is merging.
Update lvdisplay with backward compat. config opt. lvm1_compatible_display.
Do not report linear segtype for non-striped targets.
Keep info about creation host and time for each logical volume.
static percent_range_t _combine_percent(percent_t a, percent_t b,
uint32_t numerator, uint32_t denominator)
{
+ if (a == PERCENT_MERGE_FAILED || b == PERCENT_MERGE_FAILED)
+ return PERCENT_MERGE_FAILED;
+
if (a == PERCENT_INVALID || b == PERCENT_INVALID)
return PERCENT_INVALID;
PERCENT_0 = 0,
PERCENT_1 = 1000000,
PERCENT_100 = 100 * PERCENT_1,
- PERCENT_INVALID = -1
+ PERCENT_INVALID = -1,
+ PERCENT_MERGE_FAILED = -2
} percent_range_t;
float percent_to_float(percent_t v);
}
if (!lv_snapshot_percent(lv, &snap_percent) ||
- (snap_percent == PERCENT_INVALID)) {
+ (snap_percent == PERCENT_INVALID) || (snap_percent == PERCENT_MERGE_FAILED)) {
if (!lv_is_merging_origin(lv)) {
*sortval = UINT64_C(100);
dm_report_field_set_value(field, "100.00", sortval);
*percent = PERCENT_100;
else
*percent = make_percent(*total_numerator, *total_denominator);
- } else if (!strcmp(params, "Invalid") ||
- !strcmp(params, "Merge failed"))
+ }
+ else if (!strcmp(params, "Invalid"))
*percent = PERCENT_INVALID;
+ else if (!strcmp(params, "Merge failed"))
+ *percent = PERCENT_MERGE_FAILED;
else
return 0;
PERCENT_0 = 0,
PERCENT_1 = 1000000,
PERCENT_100 = 100 * PERCENT_1,
- PERCENT_INVALID = -1
+ PERCENT_INVALID = -1,
+ PERCENT_MERGE_FAILED = -2
} percent_range_t;
typedef int32_t percent_t;
} else if (percent == PERCENT_INVALID) {
log_error("%s: Merging snapshot invalidated. Aborting merge.", lv->name);
return PROGRESS_CHECK_FAILED;
+ } else if (percent == PERCENT_MERGE_FAILED) {
+ log_error("%s: Merge failed. Retry merge or inspect manually.", lv->name);
+ return PROGRESS_CHECK_FAILED;
}
if (parms->progress_display)