Author: jimharris
Date: Sun Nov  3 20:52:13 2013
New Revision: 257588
URL: http://svnweb.freebsd.org/changeset/base/257588

Log:
  MFC r256152:
  
  Extend some 32-bit fields and variables to 64-bit to prevent overflow
  when calculating data in nvmecontrol perftest.
  
  Sponsored by: Intel

Modified:
  stable/9/sbin/nvmecontrol/perftest.c
  stable/9/sys/dev/nvme/nvme.h
  stable/9/sys/dev/nvme/nvme_test.c
Directory Properties:
  stable/9/sbin/nvmecontrol/   (props changed)
  stable/9/sys/   (props changed)
  stable/9/sys/dev/   (props changed)

Modified: stable/9/sbin/nvmecontrol/perftest.c
==============================================================================
--- stable/9/sbin/nvmecontrol/perftest.c        Sun Nov  3 20:50:48 2013        
(r257587)
+++ stable/9/sbin/nvmecontrol/perftest.c        Sun Nov  3 20:52:13 2013        
(r257588)
@@ -33,6 +33,7 @@ __FBSDID("$FreeBSD$");
 #include <ctype.h>
 #include <err.h>
 #include <fcntl.h>
+#include <inttypes.h>
 #include <stdbool.h>
 #include <stddef.h>
 #include <stdio.h>
@@ -45,7 +46,8 @@ __FBSDID("$FreeBSD$");
 static void
 print_perftest(struct nvme_io_test *io_test, bool perthread)
 {
-       uint32_t i, io_completed = 0, iops, mbps;
+       uint64_t        io_completed = 0, iops, mbps;
+       uint32_t        i;
 
        for (i = 0; i < io_test->num_threads; i++)
                io_completed += io_test->io_completed[i];
@@ -53,15 +55,15 @@ print_perftest(struct nvme_io_test *io_t
        iops = io_completed/io_test->time;
        mbps = iops * io_test->size / (1024*1024);
 
-       printf("Threads: %2d Size: %6d %5s Time: %3d IO/s: %7d MB/s: %4d\n",
+       printf("Threads: %2d Size: %6d %5s Time: %3d IO/s: %7ju MB/s: %4ju\n",
            io_test->num_threads, io_test->size,
            io_test->opc == NVME_OPC_READ ? "READ" : "WRITE",
-           io_test->time, iops, mbps);
+           io_test->time, (uintmax_t)iops, (uintmax_t)mbps);
 
        if (perthread)
                for (i = 0; i < io_test->num_threads; i++)
-                       printf("\t%3d: %8d IO/s\n", i,
-                           io_test->io_completed[i]/io_test->time);
+                       printf("\t%3d: %8ju IO/s\n", i,
+                           (uintmax_t)io_test->io_completed[i]/io_test->time);
 
        exit(1);
 }

Modified: stable/9/sys/dev/nvme/nvme.h
==============================================================================
--- stable/9/sys/dev/nvme/nvme.h        Sun Nov  3 20:50:48 2013        
(r257587)
+++ stable/9/sys/dev/nvme/nvme.h        Sun Nov  3 20:52:13 2013        
(r257588)
@@ -717,7 +717,7 @@ struct nvme_io_test {
        uint32_t                time;   /* in seconds */
        uint32_t                num_threads;
        uint32_t                flags;
-       uint32_t                io_completed[NVME_TEST_MAX_THREADS];
+       uint64_t                io_completed[NVME_TEST_MAX_THREADS];
 };
 
 enum nvme_io_test_flags {

Modified: stable/9/sys/dev/nvme/nvme_test.c
==============================================================================
--- stable/9/sys/dev/nvme/nvme_test.c   Sun Nov  3 20:50:48 2013        
(r257587)
+++ stable/9/sys/dev/nvme/nvme_test.c   Sun Nov  3 20:52:13 2013        
(r257588)
@@ -53,7 +53,7 @@ struct nvme_io_test_thread {
        void                    *buf;
        uint32_t                size;
        uint32_t                time;
-       uint32_t                io_completed;
+       uint64_t                io_completed;
 };
 
 struct nvme_io_test_internal {
@@ -66,7 +66,7 @@ struct nvme_io_test_internal {
        uint32_t                td_active;
        uint32_t                td_idx;
        uint32_t                flags;
-       uint32_t                io_completed[NVME_TEST_MAX_THREADS];
+       uint64_t                io_completed[NVME_TEST_MAX_THREADS];
 };
 
 static void
@@ -90,8 +90,8 @@ nvme_ns_bio_test(void *arg)
        struct cdev                     *dev;
        void                            *buf;
        struct timeval                  t;
-       uint64_t                        offset;
-       uint32_t                        idx, io_completed = 0;
+       uint64_t                        io_completed = 0, offset;
+       uint32_t                        idx;
 #if __FreeBSD_version >= 900017
        int                             ref;
 #endif
_______________________________________________
[email protected] mailing list
http://lists.freebsd.org/mailman/listinfo/svn-src-stable-9
To unsubscribe, send any mail to "[email protected]"

Reply via email to