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/snapshot/snapshot.c | |
parent | 4b12fa1377d2d5bccf30ebac96a2c81644d14ed4 (diff) | |
download | lvm2-78ad1549a53dbaee7679e635c1ba1c6d15506a52.tar.gz lvm2-78ad1549a53dbaee7679e635c1ba1c6d15506a52.tar.xz lvm2-78ad1549a53dbaee7679e635c1ba1c6d15506a52.zip |
Introduce percent_range_t and centralise snapshot full/mirror in-sync checks.
Diffstat (limited to 'lib/snapshot/snapshot.c')
-rw-r--r-- | lib/snapshot/snapshot.c | 22 |
1 files changed, 16 insertions, 6 deletions
diff --git a/lib/snapshot/snapshot.c b/lib/snapshot/snapshot.c index d704ff9b..d5bac31b 100644 --- a/lib/snapshot/snapshot.c +++ b/lib/snapshot/snapshot.c @@ -88,11 +88,12 @@ static int _snap_text_export(const struct lv_segment *seg, struct formatter *f) #ifdef DEVMAPPER_SUPPORT static int _snap_target_percent(void **target_state __attribute((unused)), - struct dm_pool *mem __attribute((unused)), - struct cmd_context *cmd __attribute((unused)), - struct lv_segment *seg __attribute((unused)), - char *params, uint64_t *total_numerator, - uint64_t *total_denominator) + percent_range_t *percent_range, + struct dm_pool *mem __attribute((unused)), + struct cmd_context *cmd __attribute((unused)), + struct lv_segment *seg __attribute((unused)), + char *params, uint64_t *total_numerator, + uint64_t *total_denominator) { uint64_t numerator, denominator; @@ -100,7 +101,16 @@ static int _snap_target_percent(void **target_state __attribute((unused)), &numerator, &denominator) == 2) { *total_numerator += numerator; *total_denominator += denominator; - } + if (!numerator) + *percent_range = PERCENT_0; + else if (numerator == denominator) + *percent_range = PERCENT_100; + else + *percent_range = PERCENT_0_TO_100; + } else if (!strcmp(params, "Invalid")) + *percent_range = PERCENT_INVALID; + else + return 0; return 1; } |