[sheepdog] [PATCH] sheep/recovery: fix floating point error

Ruoyu liangry at ucweb.com
Tue Jun 10 06:18:24 CEST 2014


Once the recovery count is less than 100, sheep process will crash
because of devided by zero.

The solution is do not print log message if recover object count
is less than 100.

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..8524c86 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->count >= 100 && !(rinfo->done % (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





More information about the sheepdog mailing list