X-Git-Url: https://git.kernel.dk/?a=blobdiff_plain;f=filesetup.c;h=446eeaf0801a2772470bb2a47cde0c5368a67d70;hb=c9c63318734feb94eae3013fa1b606d6da744655;hp=2a79e7452d083f36b9cb0e4777ea8bfe94de01d5;hpb=5c909c91a2f58848b485523920e2278f8d63ecd4;p=fio.git diff --git a/filesetup.c b/filesetup.c index 2a79e745..446eeaf0 100644 --- a/filesetup.c +++ b/filesetup.c @@ -759,6 +759,9 @@ int setup_files(struct thread_data *td) } } + if (td->o.size_percent) + total_size = (total_size * td->o.size_percent) / 100; + if (!td->o.size || td->o.size > total_size) td->o.size = total_size; @@ -846,11 +849,15 @@ int init_random_map(struct thread_data *td) (unsigned long long) td->o.rw_min_bs; num_maps = (blocks + BLOCKS_PER_MAP - 1) / (unsigned long long) BLOCKS_PER_MAP; - f->file_map = smalloc(num_maps * sizeof(unsigned long)); - if (f->file_map) { - f->num_maps = num_maps; - continue; - } + if (num_maps == (unsigned long) num_maps) { + f->file_map = smalloc(num_maps * sizeof(unsigned long)); + if (f->file_map) { + f->num_maps = num_maps; + continue; + } + } else + f->file_map = NULL; + if (!td->o.softrandommap) { log_err("fio: failed allocating random map. If running" " a large number of jobs, try the 'norandommap'" @@ -919,10 +926,13 @@ static void get_file_type(struct fio_file *f) else f->filetype = FIO_TYPE_FILE; + /* \\.\ is the device namespace in Windows, where every file is + * a block device */ + if (strncmp(f->file_name, "\\\\.\\", 4) == 0) + f->filetype = FIO_TYPE_BD; + if (!stat(f->file_name, &sb)) { - /* \\.\ is the device namespace in Windows, where every file is - * a block device */ - if (S_ISBLK(sb.st_mode) || strncmp(f->file_name, "\\\\.\\", 4) == 0) + if (S_ISBLK(sb.st_mode)) f->filetype = FIO_TYPE_BD; else if (S_ISCHR(sb.st_mode)) f->filetype = FIO_TYPE_CHAR; @@ -1131,7 +1141,7 @@ static int recurse_dir(struct thread_data *td, const char *dirname) if (!strcmp(dir->d_name, ".") || !strcmp(dir->d_name, "..")) continue; - sprintf(full_path, "%s/%s", dirname, dir->d_name); + sprintf(full_path, "%s%s%s", dirname, FIO_OS_PATH_SEPARATOR, dir->d_name); if (lstat(full_path, &sb) == -1) { if (errno != ENOENT) {