From 1294c3ec7a02d20a98b105c1c41b23358afc67e4 Mon Sep 17 00:00:00 2001 From: Jens Axboe Date: Wed, 11 May 2011 08:15:18 +0200 Subject: [PATCH] Fix signed int/long truncation on 32-bit architectures With using our internal random generator, we generate unsigned ints. But by mistake this was assigned to a signed long, that doesn't work so well on 32-bit machines. Signed-off-by: Jens Axboe --- filesetup.c | 2 +- io_u.c | 6 +++--- trim.c | 2 +- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/filesetup.c b/filesetup.c index 2b690c89..1350857f 100644 --- a/filesetup.c +++ b/filesetup.c @@ -208,7 +208,7 @@ static int pre_read_file(struct thread_data *td, struct fio_file *f) static unsigned long long get_rand_file_size(struct thread_data *td) { unsigned long long ret, sized; - long r; + unsigned long r; if (td->o.use_os_rand) { r = os_random_long(&td->file_size_state); diff --git a/io_u.c b/io_u.c index 787f382e..d35b8441 100644 --- a/io_u.c +++ b/io_u.c @@ -346,7 +346,7 @@ static unsigned int __get_next_buflen(struct thread_data *td, struct io_u *io_u) const int ddir = io_u->ddir; unsigned int uninitialized_var(buflen); unsigned int minbs, maxbs; - long r, rand_max; + unsigned long r, rand_max; assert(ddir_rw(ddir)); @@ -423,7 +423,7 @@ static void set_rwmix_bytes(struct thread_data *td) static inline enum fio_ddir get_rand_ddir(struct thread_data *td) { unsigned int v; - long r; + unsigned long r; if (td->o.use_os_rand) { r = os_random_long(&td->rwmix_state); @@ -849,7 +849,7 @@ static struct fio_file *get_next_file_rand(struct thread_data *td, do { int opened = 0; - long r; + unsigned long r; if (td->o.use_os_rand) { r = os_random_long(&td->next_file_state); diff --git a/trim.c b/trim.c index a9b15d68..de792dc4 100644 --- a/trim.c +++ b/trim.c @@ -70,7 +70,7 @@ int get_next_trim(struct thread_data *td, struct io_u *io_u) int io_u_should_trim(struct thread_data *td, struct io_u *io_u) { unsigned long long val; - long r; + unsigned long r; if (!td->o.trim_percentage) return 0; -- 2.25.1