From: Jens Axboe Date: Wed, 11 May 2011 06:15:18 +0000 (+0200) Subject: Fix signed int/long truncation on 32-bit architectures X-Git-Tag: fio-1.54~7 X-Git-Url: https://git.kernel.dk/?p=fio.git;a=commitdiff_plain;h=1294c3ec7a02d20a98b105c1c41b23358afc67e4;hp=f2e714707b27f5918a4020e3090d2b346094379c;ds=sidebyside 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 --- 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;