[sheepdog] [PATCH v2] sheep/recovery: fix floating point error
Liu Yuan
namei.unix at gmail.com
Tue Jun 10 07:28:51 CEST 2014
On Tue, Jun 10, 2014 at 01:05:51PM +0800, Ruoyu wrote:
> Once the recovery count is less than 100, sheep process will crash
> because of devided by zero.
>
> The solution is round up the recovery count first to make sure
> the result is not zero.
>
> Cc: Saeki Masaki <saeki.masaki at po.ntts.co.jp>
> Signed-off-by: Ruoyu <liangry at ucweb.com>
> ---
> sheep/recovery.c | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/sheep/recovery.c b/sheep/recovery.c
> index 8d87f4c..4648966 100644
> --- a/sheep/recovery.c
> +++ b/sheep/recovery.c
> @@ -901,7 +901,7 @@ static void recover_object_main(struct work *work)
>
> wakeup_requests_on_oid(row->oid);
>
> - if (!(rinfo->done % (rinfo->count/100)))
> + if (!(rinfo->done % DIV_ROUND_UP(rinfo->count, 100)))
> sd_info("object recovery progress %3.0lf%% ",
> (double)rinfo->done / rinfo->count * 100);
> sd_debug("object %"PRIx64" is recovered (%"PRIu64"/%"PRIu64")",
> --
> 1.8.3.2
>
>
> --
> sheepdog mailing list
> sheepdog at lists.wpkg.org
> http://lists.wpkg.org/mailman/listinfo/sheepdog
Applied thanks
Yuan
More information about the sheepdog
mailing list