projects
/
fio.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
convert FIO_OS_PATH_SEPARATOR to a character
[fio.git]
/
filesetup.c
diff --git
a/filesetup.c
b/filesetup.c
index b51ab35ce08b59ccbff3d2d7f2da2692c69a85aa..a7bbcede08d199cb7660a2771f4b715600ca8af3 100644
(file)
--- a/
filesetup.c
+++ b/
filesetup.c
@@
-1342,6
+1342,7
@@
void close_and_free_files(struct thread_data *td)
{
struct fio_file *f;
unsigned int i;
{
struct fio_file *f;
unsigned int i;
+ bool use_free = td_ioengine_flagged(td, FIO_NOFILEHASH);
dprint(FD_FILE, "close files\n");
dprint(FD_FILE, "close files\n");
@@
-1361,13
+1362,19
@@
void close_and_free_files(struct thread_data *td)
td_io_unlink_file(td, f);
}
td_io_unlink_file(td, f);
}
- sfree(f->file_name);
+ if (use_free)
+ free(f->file_name);
+ else
+ sfree(f->file_name);
f->file_name = NULL;
if (fio_file_axmap(f)) {
axmap_free(f->io_axmap);
f->io_axmap = NULL;
}
f->file_name = NULL;
if (fio_file_axmap(f)) {
axmap_free(f->io_axmap);
f->io_axmap = NULL;
}
- sfree(f);
+ if (use_free)
+ free(f);
+ else
+ sfree(f);
}
td->o.filename = NULL;
}
td->o.filename = NULL;
@@
-1481,7
+1488,10
@@
static struct fio_file *alloc_new_file(struct thread_data *td)
{
struct fio_file *f;
{
struct fio_file *f;
- f = smalloc(sizeof(*f));
+ if (td_ioengine_flagged(td, FIO_NOFILEHASH))
+ f = calloc(1, sizeof(*f));
+ else
+ f = smalloc(sizeof(*f));
if (!f) {
assert(0);
return NULL;
if (!f) {
assert(0);
return NULL;
@@
-1564,7
+1574,10
@@
int add_file(struct thread_data *td, const char *fname, int numjob, int inc)
if (td->io_ops && td_ioengine_flagged(td, FIO_DISKLESSIO))
f->real_file_size = -1ULL;
if (td->io_ops && td_ioengine_flagged(td, FIO_DISKLESSIO))
f->real_file_size = -1ULL;
- f->file_name = smalloc_strdup(file_name);
+ if (td_ioengine_flagged(td, FIO_NOFILEHASH))
+ f->file_name = strdup(file_name);
+ else
+ f->file_name = smalloc_strdup(file_name);
if (!f->file_name)
assert(0);
if (!f->file_name)
assert(0);
@@
-1588,7
+1601,8
@@
int add_file(struct thread_data *td, const char *fname, int numjob, int inc)
if (f->filetype == FIO_TYPE_FILE)
td->nr_normal_files++;
if (f->filetype == FIO_TYPE_FILE)
td->nr_normal_files++;
- set_already_allocated(file_name);
+ if (td->o.numjobs > 1)
+ set_already_allocated(file_name);
if (inc)
td->o.nr_files++;
if (inc)
td->o.nr_files++;
@@
-1711,7
+1725,7
@@
static int recurse_dir(struct thread_data *td, const char *dirname)
if (!strcmp(dir->d_name, ".") || !strcmp(dir->d_name, ".."))
continue;
if (!strcmp(dir->d_name, ".") || !strcmp(dir->d_name, ".."))
continue;
- sprintf(full_path, "%s%
s
%s", dirname, FIO_OS_PATH_SEPARATOR, dir->d_name);
+ sprintf(full_path, "%s%
c
%s", dirname, FIO_OS_PATH_SEPARATOR, dir->d_name);
if (lstat(full_path, &sb) == -1) {
if (errno != ENOENT) {
if (lstat(full_path, &sb) == -1) {
if (errno != ENOENT) {
@@
-1768,7
+1782,10
@@
void dup_files(struct thread_data *td, struct thread_data *org)
__f = alloc_new_file(td);
if (f->file_name) {
__f = alloc_new_file(td);
if (f->file_name) {
- __f->file_name = smalloc_strdup(f->file_name);
+ if (td_ioengine_flagged(td, FIO_NOFILEHASH))
+ __f->file_name = strdup(f->file_name);
+ else
+ __f->file_name = smalloc_strdup(f->file_name);
if (!__f->file_name)
assert(0);
if (!__f->file_name)
assert(0);
@@
-1868,6
+1885,7
@@
int fio_set_directio(struct thread_data *td, struct fio_file *f)
return 0;
#else
return 0;
#else
+ log_err("fio: direct IO is not supported on this host operating system\n");
return -1;
#endif
}
return -1;
#endif
}