diff options
author | Alasdair Kergon <agk@redhat.com> | 2009-10-01 00:35:29 +0000 |
---|---|---|
committer | Alasdair Kergon <agk@redhat.com> | 2009-10-01 00:35:29 +0000 |
commit | 78ad1549a53dbaee7679e635c1ba1c6d15506a52 (patch) | |
tree | 8cf30c7f8fb1458dd4e226514957c30758deb7f5 /lib/mirror | |
parent | 4b12fa1377d2d5bccf30ebac96a2c81644d14ed4 (diff) | |
download | lvm2-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.c | 18 |
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; } |