From 85b037f5da6a022919783ef9a87ed6d2a4d102d2 Mon Sep 17 00:00:00 2001 From: Andriy Skulysh Date: Sun, 4 May 2014 14:46:22 +0300 Subject: [PATCH] LU-4904 test: write_append_truncate failed with divide error fix trunc_size calculation in case of append_size == 1 Don't allow to specify write_max and append_max < 2. Change-Id: I2a9ded4b10ef90a9e02b1b0f1229c87177f046d4 Xyratex-bug-id: MRP-1779 Signed-off-by: Andriy Skulysh Reviewed-on: http://review.whamcloud.com/9948 Tested-by: Jenkins Tested-by: Maloo Reviewed-by: Emoly Liu Reviewed-by: Bobi Jam Reviewed-by: Oleg Drokin --- lustre/tests/mpi/write_append_truncate.c | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/lustre/tests/mpi/write_append_truncate.c b/lustre/tests/mpi/write_append_truncate.c index 0fdf0fc..3b53aeb 100644 --- a/lustre/tests/mpi/write_append_truncate.c +++ b/lustre/tests/mpi/write_append_truncate.c @@ -161,7 +161,7 @@ int main(int argc, char *argv[]) switch(c) { case 'a': append_max = strtoul(optarg, &end, 0); - if (append_max == 0 || *end) { + if (append_max < 2 || *end) { fprintf(stderr, "%s: bad append option '%s'\n", prog, optarg); usage(prog); @@ -202,7 +202,7 @@ int main(int argc, char *argv[]) break; case 'w': write_max = strtoul(optarg, &end, 0); - if (write_max == 0 || *end) { + if (write_max < 2 || *end) { fprintf(stderr, "%s: bad write option '%s'\n", prog, optarg); usage(prog); @@ -303,7 +303,8 @@ int main(int argc, char *argv[]) if (rank == 0) { write_size = (rand() % (write_max - 1)) + 1; append_size = (rand() % (append_max - 1)) + 1; - trunc_size = (rand() % ((trunc_max?: append_size)-1))+1; + trunc_size = (append_size == 1) ? 1 : + (rand() % ((trunc_max?: append_size)-1))+1; trunc_offset = write_size + trunc_size; if (verbose || n % 1000 == 0) -- 1.8.3.1