-static int get_next_offset(struct thread_data *td, unsigned long long *offset)
-{
- unsigned long long b, rb;
- long r;
-
- if (!td->sequential) {
- unsigned long max_blocks = td->io_size / td->min_bs;
- int loops = 50;
-
- do {
- lrand48_r(&td->random_state, &r);
- b = ((max_blocks - 1) * r / (RAND_MAX+1.0));
- rb = b + (td->file_offset / td->min_bs);
- loops--;
- } while (!random_map_free(td, rb) && loops);
-
- if (!loops) {
- if (get_next_free_block(td, &b))
- return 1;
- }
- } else
- b = td->last_bytes / td->min_bs;
-
- *offset = (b * td->min_bs) + td->file_offset;
- if (*offset > td->file_size)
- return 1;
-
- return 0;
-}
-
-static unsigned int get_next_buflen(struct thread_data *td)
-{
- unsigned int buflen;
- long r;
-
- if (td->min_bs == td->max_bs)
- buflen = td->min_bs;
- else {
- lrand48_r(&td->bsrange_state, &r);
- buflen = (1 + (double) (td->max_bs - 1) * r / (RAND_MAX + 1.0));
- buflen = (buflen + td->min_bs - 1) & ~(td->min_bs - 1);
- }
-
- if (buflen > td->io_size - td->this_io_bytes[td->ddir])
- buflen = td->io_size - td->this_io_bytes[td->ddir];
-
- return buflen;
-}
-