Recent changes (master)
The following changes since commit 3c1f3ca75b447a2bd0a93deb0a2a1210529d2ccb:
Merge branch 'filelock_assert_fix' of https://github.com/bardavid/fio into master (2020-08-18 08:33:49 -0700)
are available in the Git repository at:
git://git.kernel.dk/fio.git master
for you to fetch changes up to e711df54082b5d2d739e9ee3e46a2bc23b1b3c7c:
file: provider fio_file_free() helper (2020-08-19 13:02:42 -0600)
----------------------------------------------------------------
Dmitry Fomichev (1):
configure: fix syntax error with NetBSD
Jens Axboe (5):
engines/windowsaio: fix silly thinky on IO thread creation
Merge branch 'force-windows-artifact' of https://github.com/sitsofe/fio into master
file: track allocation origin
init: add_job() needs to use right file freeing functions
file: provider fio_file_free() helper
Sitsofe Wheeler (1):
ci: always upload Windows MSI if smoke test passes
.appveyor.yml | 10 ++++------ configure | 14 +++++++------- engines/windowsaio.c | 8 +++----- file.h | 3 +++ filesetup.c | 31 ++++++++++++++++--------------- init.c | 7 ++----- 6 files changed, 35 insertions(+), 38 deletions(-)
---
Diff of recent changes:
.appveyor.yml +4 -6
@@ -25,15 +25,13 @@ build_script: - 'bash.exe -lc "cd \"${APPVEYOR_BUILD_FOLDER}\" && ./configure --disable-native --extra-cflags=\"-Werror\" ${CONFIGURE_OPTIONS} && make.exe' after_build: - - cd os\windows && dobuild.cmd %PLATFORM% + - file.exe fio.exe + - make.exe test + - 'cd os\windows && dobuild.cmd %PLATFORM% && cd ..' + - ps: Get-ChildItem .\os\windows\*.msi | % { Push-AppveyorArtifact $_.FullName -FileName $_.Name -DeploymentName fio.msi } test_script: - - 'bash.exe -lc "cd \"${APPVEYOR_BUILD_FOLDER}\" && file.exe fio.exe && make.exe test' - 'bash.exe -lc "cd \"${APPVEYOR_BUILD_FOLDER}\" && [ -f fio.exe ] && python.exe t/run-fio-tests.py --artifact-root test-artifacts --debug' -artifacts: - - path: os\windows\*.msi - name: msi - on_finish: - 'bash.exe -lc "cd \"${APPVEYOR_BUILD_FOLDER}\" && [ -d test-artifacts ] && 7z a -t7z test-artifacts.7z test-artifacts -xr!foo.0.0 -xr!latency.?.0 -xr!fio_jsonplus_clat2csv.test && appveyor PushArtifact test-artifacts.7z'
configure +7 -7
@@ -134,18 +134,18 @@ output_sym() { } check_min_lib_version() { - local feature=$3 + _feature=$3 - if ${cross_prefix}pkg-config --atleast-version=$2 $1 > /dev/null 2>&1; then + if "${cross_prefix}"pkg-config --atleast-version="$2" "$1" > /dev/null 2>&1; then return 0 fi - : ${feature:=${1}} - if ${cross_prefix}pkg-config --version > /dev/null 2>&1; then - if test ${!feature} = "yes" ; then - feature_not_found "$feature" "$1 >= $2" + : "${_feature:=${1}}" + if "${cross_prefix}"pkg-config --version > /dev/null 2>&1; then + if eval "echo \$$_feature" = "yes" ; then + feature_not_found "$_feature" "$1 >= $2" fi else - print_config "$1" "missing pkg-config, can't check $feature version" + print_config "$1" "missing pkg-config, can't check $_feature version" fi return 1 }
engines/windowsaio.c +3 -5
@@ -106,12 +106,10 @@ static int fio_windowsaio_init(struct thread_data *td) ctx->iocp = hFile; ctx->wd = wd; wd->iothread =CreateThread (NULL ,0 , IoCompletionRoutine, ctx,0 , &threadid); - -if (wd->iothread !=NULL && -fio_option_is_set (&td->o, cpumask)) -fio_setaffinity (threadid, td->o.cpumask); -else +if (!wd->iothread)log_err ("windowsaio: failed to create io completion thread\n" ); +else if (fio_option_is_set (&td->o, cpumask)) +fio_setaffinity (threadid, td->o.cpumask); }if (rc || wd->iothread ==NULL )
file.h +3 -0
@@ -33,6 +33,7 @@ enum fio_file_flags { FIO_FILE_partial_mmap =1 <<6 ,/* can't do full mmap */ FIO_FILE_axmap =1 <<7 ,/* uses axmap */ FIO_FILE_lfsr =1 <<8 ,/* lfsr is used */ + FIO_FILE_smalloc = 1 << 9, /* smalloc file/file_name */ }; enum file_lock_mode {
@@ -188,6 +189,7 @@ FILE_FLAG_FNS(hashed);FILE_FLAG_FNS (partial_mmap);FILE_FLAG_FNS (axmap);FILE_FLAG_FNS (lfsr); +FILE_FLAG_FNS (smalloc);#undef FILE_FLAG_FNS/*
@@ -229,5 +231,6 @@ extern void fio_file_reset(struct thread_data *, struct fio_file *);extern bool fio_files_done (struct thread_data *);extern bool exists_and_not_regfile (const char *);extern int fio_set_directio (struct thread_data *,struct fio_file *); +extern void fio_file_free (struct fio_file *);#endif
filesetup.c +16 -15
@@ -1445,11 +1445,23 @@ void close_files(struct thread_data *td) } } +void fio_file_free (struct fio_file *f) +{ +if (fio_file_axmap (f)) +axmap_free (f->io_axmap); +if (!fio_file_smalloc (f)) { +free (f->file_name); +free (f); + }else { +sfree (f->file_name); +sfree (f); + } +} +void close_and_free_files (struct thread_data *td) {struct fio_file *f;unsigned int i; -bool use_free =td_ioengine_flagged (td,FIO_NOFILEHASH );dprint (FD_FILE ,"close files\n" );
@@ -1470,20 +1482,7 @@ void close_and_free_files(struct thread_data *td) }zbd_close_file (f); - -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 ; - } -if (use_free) -free (f); -else -sfree (f); +fio_file_free (f); } td->o.filename =NULL ;
@@ -1609,6 +1608,8 @@ static struct fio_file *alloc_new_file(struct thread_data *td) f->fd =-1 ; f->shadow_fd =-1 ;fio_file_reset (td, f); +if (!td_ioengine_flagged (td,FIO_NOFILEHASH )) +fio_file_set_smalloc (f);return f; }
init.c +2 -5
@@ -1735,11 +1735,8 @@ static int add_job(struct thread_data *td, const char *jobname, int job_add_num,if (file_alloced) {if (td_new->files) {struct fio_file *f; -for_each_file (td_new, f, i) { -if (f->file_name) -sfree (f->file_name); -sfree (f); - } +for_each_file (td_new, f, i) +fio_file_free (f);free (td_new->files); td_new->files =NULL ; }