[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