summary |
shortlog |
log |
commit | commitdiff |
tree
raw |
patch |
inline | side by side (from parent 1:
d090f6f)
Signed-off-by: Jens Axboe <jens.axboe@oracle.com>
* zero, set it to the real file size.
*/
f->io_size = td->o.size / td->o.nr_files;
* zero, set it to the real file size.
*/
f->io_size = td->o.size / td->o.nr_files;
+ if (!f->io_size || f->io_size > f->real_file_size) {
if (f->file_offset > f->real_file_size)
goto err_offset;
f->io_size = f->real_file_size - f->file_offset;
if (f->file_offset > f->real_file_size)
goto err_offset;
f->io_size = f->real_file_size - f->file_offset;
int init_random_map(struct thread_data *td)
{
int init_random_map(struct thread_data *td)
{
+ unsigned long long blocks, num_maps;
struct fio_file *f;
unsigned int i;
struct fio_file *f;
unsigned int i;
return 0;
for_each_file(td, f, i) {
return 0;
for_each_file(td, f, i) {
- blocks = (f->real_file_size + td->o.rw_min_bs - 1) / td->o.rw_min_bs;
- num_maps = (blocks + BLOCKS_PER_MAP-1)/ BLOCKS_PER_MAP;
+ blocks = (f->real_file_size + td->o.rw_min_bs - 1) / (unsigned long long) td->o.rw_min_bs;
+ num_maps = (blocks + BLOCKS_PER_MAP-1)/ (unsigned long long) BLOCKS_PER_MAP;
f->file_map = malloc(num_maps * sizeof(long));
if (!f->file_map) {
log_err("fio: failed allocating random map. If running a large number of jobs, try the 'norandommap' option\n");
f->file_map = malloc(num_maps * sizeof(long));
if (!f->file_map) {
log_err("fio: failed allocating random map. If running a large number of jobs, try the 'norandommap' option\n");
}
#define BLOCKS_PER_MAP (8 * sizeof(long))
}
#define BLOCKS_PER_MAP (8 * sizeof(long))
-#define TO_MAP_BLOCK(td, f, b) ((b) - ((f)->file_offset / (td)->o.rw_min_bs))
+#define TO_MAP_BLOCK(td, f, b) ((b) - ((f)->file_offset / (unsigned long long) (td)->o.rw_min_bs))
#define RAND_MAP_IDX(td, f, b) (TO_MAP_BLOCK(td, f, b) / BLOCKS_PER_MAP)
#define RAND_MAP_BIT(td, f, b) (TO_MAP_BLOCK(td, f, b) & (BLOCKS_PER_MAP - 1))
#define RAND_MAP_IDX(td, f, b) (TO_MAP_BLOCK(td, f, b) / BLOCKS_PER_MAP)
#define RAND_MAP_BIT(td, f, b) (TO_MAP_BLOCK(td, f, b) & (BLOCKS_PER_MAP - 1))