summaryrefslogtreecommitdiff
path: root/lib/mirror
diff options
context:
space:
mode:
authorAlasdair Kergon <agk@redhat.com>2009-10-01 00:35:29 +0000
committerAlasdair Kergon <agk@redhat.com>2009-10-01 00:35:29 +0000
commit78ad1549a53dbaee7679e635c1ba1c6d15506a52 (patch)
tree8cf30c7f8fb1458dd4e226514957c30758deb7f5 /lib/mirror
parent4b12fa1377d2d5bccf30ebac96a2c81644d14ed4 (diff)
downloadlvm2-78ad1549a53dbaee7679e635c1ba1c6d15506a52.tar.gz
Introduce percent_range_t and centralise snapshot full/mirror in-sync checks.
Diffstat (limited to 'lib/mirror')
-rw-r--r--lib/mirror/mirrored.c18
1 files changed, 14 insertions, 4 deletions
diff --git a/lib/mirror/mirrored.c b/lib/mirror/mirrored.c
index 3faa4635a..e93ed0b12 100644
--- a/lib/mirror/mirrored.c
+++ b/lib/mirror/mirrored.c
@@ -178,10 +178,13 @@ static struct mirror_state *_mirrored_init_target(struct dm_pool *mem,
return mirr_state;
}
-static int _mirrored_target_percent(void **target_state, struct dm_pool *mem,
- struct cmd_context *cmd, struct lv_segment *seg,
- char *params, uint64_t *total_numerator,
- uint64_t *total_denominator)
+static int _mirrored_target_percent(void **target_state,
+ percent_range_t *percent_range,
+ struct dm_pool *mem,
+ struct cmd_context *cmd,
+ struct lv_segment *seg, char *params,
+ uint64_t *total_numerator,
+ uint64_t *total_denominator)
{
struct mirror_state *mirr_state;
uint64_t numerator, denominator;
@@ -226,6 +229,13 @@ static int _mirrored_target_percent(void **target_state, struct dm_pool *mem,
if (seg)
seg->extents_copied = seg->area_len * numerator / denominator;
+ if (numerator == denominator)
+ *percent_range = PERCENT_100;
+ else if (numerator == 0)
+ *percent_range = PERCENT_0;
+ else
+ *percent_range = PERCENT_0_TO_100;
+
return 1;
}