Merge branch 'master' into client-server
authorJens Axboe <axboe@kernel.dk>
Wed, 12 Oct 2011 07:47:25 +0000 (09:47 +0200)
committerJens Axboe <axboe@kernel.dk>
Wed, 12 Oct 2011 07:47:25 +0000 (09:47 +0200)
Conflicts:
init.c
io_u.c
os/windows/install.wxs
os/windows/version.h

Signed-off-by: Jens Axboe <axboe@kernel.dk>
1  2 
io_u.c

diff --combined io_u.c
index 9488adeeffe43983a03a0b8089eb400afe7db96c,4dcb1fce44dbbeb4478de8154e502af4eb9f7d32..d1f66a949293310f166690089438e2a883f9feec
--- 1/io_u.c
--- 2/io_u.c
+++ b/io_u.c
@@@ -158,7 -158,7 +158,7 @@@ static int get_next_free_block(struct t
  static int get_next_rand_offset(struct thread_data *td, struct fio_file *f,
                                enum fio_ddir ddir, unsigned long long *b)
  {
-       unsigned long long r, lastb;
+       unsigned long long rmax, r, lastb;
        int loops = 5;
  
        lastb = last_block(td, f, ddir);
        if (f->failed_rands >= 200)
                goto ffz;
  
+       rmax = td->o.use_os_rand ? OS_RAND_MAX : FRAND_MAX;
        do {
-               if (td->o.use_os_rand) {
+               if (td->o.use_os_rand)
                        r = os_random_long(&td->random_state);
-                       *b = (lastb - 1) * (r / ((unsigned long long) OS_RAND_MAX + 1.0));
-               } else {
+               else
                        r = __rand(&td->__random_state);
-                       *b = (lastb - 1) * (r / ((unsigned long long) FRAND_MAX + 1.0));
-               }
+               *b = (lastb - 1) * (r / ((unsigned long long) rmax + 1.0));
  
                dprint(FD_RANDOM, "off rand %llu\n", r);
  
        loops = 10;
        do {
                f->last_free_lookup = (f->num_maps - 1) *
-                                       (r / (OS_RAND_MAX + 1.0));
+                                       (r / ((unsigned long long) rmax + 1.0));
                if (!get_next_free_block(td, f, ddir, b))
                        goto ret;
  
@@@ -1293,8 -1293,6 +1293,8 @@@ static void account_io_completion(struc
  
        if (!td->o.disable_bw)
                add_bw_sample(td, idx, bytes, &icd->time);
 +
 +      add_iops_sample(td, idx, &icd->time);
  }
  
  static void io_completed(struct thread_data *td, struct io_u *io_u,
                int ret;
  
                td->io_blocks[idx]++;
 +              td->this_io_blocks[idx]++;
                td->io_bytes[idx] += bytes;
                td->this_io_bytes[idx] += bytes;
  
                        }
                }
  
 -              if (ramp_time_over(td)) {
 +              if (ramp_time_over(td) && td->runstate == TD_RUNNING) {
                        account_io_completion(td, io_u, icd, idx, bytes);
  
                        if (__should_check_rate(td, idx)) {