Whamcloud - gitweb
LU-4904 test: write_append_truncate failed with divide error 48/9948/4
authorAndriy Skulysh <Andriy_Skulysh@xyratex.com>
Sun, 4 May 2014 11:46:22 +0000 (14:46 +0300)
committerOleg Drokin <oleg.drokin@intel.com>
Tue, 20 May 2014 04:14:52 +0000 (04:14 +0000)
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 <Andriy_Skulysh@xyratex.com>
Reviewed-on: http://review.whamcloud.com/9948
Tested-by: Jenkins
Tested-by: Maloo <hpdd-maloo@intel.com>
Reviewed-by: Emoly Liu <emoly.liu@intel.com>
Reviewed-by: Bobi Jam <bobijam@gmail.com>
Reviewed-by: Oleg Drokin <oleg.drokin@intel.com>
lustre/tests/mpi/write_append_truncate.c

index 0fdf0fc..3b53aeb 100644 (file)
@@ -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)