From 2474b06db61072bcb027c8f3b309b8df3f74627c Mon Sep 17 00:00:00 2001 From: Jeff Moyer Date: Fri, 28 Sep 2018 17:27:58 -0400 Subject: [PATCH] fix hung fio process with large I/O sizes and verify= option Hi, If you use a very large I/O size (1G in this instance), and also specify the verify option, fio will hang, using up 100% cpu, for ever and ever. The problem is that __fill_random_buf_percentage does math that overflows the size of an unsigned int. Fixing that gets fio to terminate as expected. Here is the job file which showed the problem: [global] ioengine=dev-dax direct=0 filename=/dev/dax0.0 verify=crc32c bs=1G [write] rw=write runtime=5 [read] stonewall rw=read runtime=5 Reported-by: sujith_pandel@dell.com Signed-off-by: Jeff Moyer Signed-off-by: Jens Axboe --- lib/rand.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/rand.c b/lib/rand.c index 46ffe4fb..99846a8d 100644 --- a/lib/rand.c +++ b/lib/rand.c @@ -156,7 +156,7 @@ void __fill_random_buf_percentage(unsigned long seed, void *buf, /* * Fill random chunk */ - this_len = (segment * (100 - percentage)) / 100; + this_len = ((unsigned long long)segment * (100 - percentage)) / 100; if (this_len > len) this_len = len; -- 2.25.1