diff --git a/WHATS_NEW b/WHATS_NEW index 1171eb2a9..ebbeb2718 100644 --- a/WHATS_NEW +++ b/WHATS_NEW @@ -1,5 +1,6 @@ Version 2.03.11 - ================================== + Enhance --use-policy percentage rounding. Configure --with-vdo and --with-writecache as internal segments. Improving VDO man page examples. Switch code base to use flexible array syntax. diff --git a/lib/metadata/lv_manip.c b/lib/metadata/lv_manip.c index d72c49bea..ba143075d 100644 --- a/lib/metadata/lv_manip.c +++ b/lib/metadata/lv_manip.c @@ -4932,7 +4932,7 @@ static int _fsadm_cmd(enum fsadm_cmd_e fcmd, static uint32_t _adjust_amount(dm_percent_t percent, int policy_threshold, int policy_amount) { - if (!(DM_PERCENT_0 < percent && percent <= DM_PERCENT_100) || + if (!((50 * DM_PERCENT_1) < percent && percent <= DM_PERCENT_100) || percent <= (policy_threshold * DM_PERCENT_1)) return 0; /* nothing to do */ /* @@ -4940,7 +4940,7 @@ static uint32_t _adjust_amount(dm_percent_t percent, int policy_threshold, int p * Keep using DM_PERCENT_1 units for better precision. * Round-up to needed percentage value */ - percent = (percent / policy_threshold + (DM_PERCENT_1 - 1) / 100) / (DM_PERCENT_1 / 100) - 100; + percent = ((percent + policy_threshold - 1) / policy_threshold) / (DM_PERCENT_1 / 100) - 100; /* Use it if current policy amount is smaller */ return (policy_amount < percent) ? (uint32_t) percent : (uint32_t) policy_amount;