1
0
mirror of https://git.FreeBSD.org/src.git synced 2024-12-01 08:27:59 +00:00

Extend some 32-bit fields and variables to 64-bit to prevent overflow

when calculating stats in nvmecontrol perftest.

Sponsored by:	Intel
Reported by:	Joe Golio <joseph.golio@emc.com>
Reviewed by:	carl
Approved by:	re (hrs)
MFC after:	1 week
This commit is contained in:
Jim Harris 2013-10-08 15:47:22 +00:00
parent a40e72a695
commit 992db80f1d
Notes: svn2git 2020-12-20 02:59:44 +00:00
svn path=/head/; revision=256152
3 changed files with 12 additions and 10 deletions

View File

@ -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_test, bool perthread)
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);
}

View File

@ -720,7 +720,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 {

View File

@ -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