Recent changes (master)
The following changes since commit 28c43a89ae13b648dd37269d288fbbea2550faa8:
Fix comment on SCSI commands (2017-01-06 11:26:04 -0700)
are available in the git repository at:
git://git.kernel.dk/fio.git master
for you to fetch changes up to 9bae252254d0ce37a144cb4c8d2cb4222d539a9e:
Python style/portability fix (2017-01-10 13:20:30 -0700)
----------------------------------------------------------------
Tomohiro Kusumi (10):
Bring in additional sg error cases from Linux kernel (and sg3) header Staticize pmemblk ioengine_ops
Fix conditional/message for max lba for sg ioengine
Non functional fixup for 16 bytes read capacity for sg ioengine Mention sg ioengine requires filename option
Fix compile time errors for skeleton_external ioengine Partly revert 8172fe97 in 2008 (A few debug debug log fixes) Add missing trailing \n in dprint()
Fix README regarding fio snapshots
Python style/portability fix
HOWTO | 3 ++- README | 5 +++-- engines/pmemblk.c | 2 +- engines/sg.c | 48 ++++++++++++++++++++++++++++++++------------- engines/skeleton_external.c | 8 ++++---- ioengine.h | 9 +++------ iolog.c | 2 +- tools/fiologparser.py | 14 ++++++------- 8 files changed, 55 insertions(+), 36 deletions(-)
---
Diff of recent changes:
HOWTO +2 -1
@@ -819,7 +819,8 @@ ioengine=str Defines how the job issues io to the file. The following synchronous using the SG_IO ioctl, or if the target is an sg character device we use read(2) and write(2) for asynchronous - io. + io. Requires filename option to specify either + block or character devices. null Doesn't transfer any data, just pretends to. This is mainly used to exercise fio
README +3 -2
@@ -21,7 +21,8 @@ If git:// does not work, use the http protocol instead: http://git.kernel.dk/fio.git -Snapshots are frequently generated and include the git meta data as well. +Snapshots are frequently generated and fio-git-*.tar.gz include the git +meta data as well. Other tarballs are archives of official fio releases. Snapshots can download from: http://brick.kernel.dk/snaps/
@@ -262,7 +263,7 @@ the copyright and license requirements currently apply to examples/ files. Client/server ------------- +------------- Normally fio is invoked as a stand-alone application on the machine where the IO workload should be generated. However, the frontend and
engines/pmemblk.c +1 -1
@@ -482,7 +482,7 @@ static int fio_pmemblk_unlink_file(struct thread_data *td, struct fio_file *f)return 0 ; } -struct ioengine_ops ioengine = { +static struct ioengine_ops ioengine = { .name ="pmemblk" , .version =FIO_IOOPS_VERSION , .queue = fio_pmemblk_queue,
engines/sg.c +34 -14
111 lines not on this page · raw message
engines/skeleton_external.c +4 -4
@@ -109,11 +109,11 @@ static void fio_skeleton_cleanup(struct thread_data *td)/* * Hook for opening the given file. Unless the engine has special -* needs, it usually just provides generic_file_open() as the handler. +* needs, it usually just provides generic_open_file() as the handler. */ static int fio_skeleton_open (struct thread_data *td,struct fio_file *f) { -return generic_file_open (td, f); +return generic_open_file (td, f); }/*
@@ -121,12 +121,12 @@ static int fio_skeleton_open(struct thread_data *td, struct fio_file *f)*/ static int fio_skeleton_close (struct thread_data *td,struct fio_file *f) { -generic_file_close (td, f); +return generic_close_file (td, f); }/* * Note that the structure is exported, so that fio can get it via -* dlsym(..., "ioengine"); +* dlsym(..., "ioengine"); for (and only for) external engines. */ struct ioengine_ops ioengine = { .name ="engine_name" ,
ioengine.h +3 -6
@@ -238,12 +238,9 @@ static inline void dprint_io_u(struct io_u *io_u, const char *p)dprint (FD_IO ,"%s: io_u %p: off=%llu/len=%lu/ddir=%d" , p, io_u, (unsigned long long ) io_u->offset, io_u->buflen, io_u->ddir); -if (fio_debug & (1 <<FD_IO )) { -if (f) -log_info ("/%s" , f->file_name); - -log_info ("\n" ); - } +if (f) +dprint (FD_IO ,"/%s" , f->file_name); + dprint(FD_IO, "\n"); }#else #define dprint_io_u (io_u, p)
iolog.c +1 -1
@@ -277,7 +277,7 @@ restart: overlap =1 ;if (overlap) { -dprint (FD_IO ,"iolog: overlap %llu/%lu, %llu/%lu" , +dprint (FD_IO ,"iolog: overlap %llu/%lu, %llu/%lu\n" , __ipo->offset, __ipo->len, ipo->offset, ipo->len); td->io_hist_len--;
tools/fiologparser.py +7 -7
@@ -45,7 +45,7 @@ def print_full(ctx, series): while (start < ftime): end = ftime if ftime < end else end results = [ts.get_value(start, end) for ts in series] - print "%s, %s" % (end, ', '.join(["%0.3f" % i for i in results])) + print("%s, %s" % (end, ', '.join(["%0.3f" % i for i in results]))) start += ctx.interval end += ctx.interval
@@ -57,7 +57,7 @@ def print_sums(ctx, series): while (start < ftime): end = ftime if ftime < end else end results = [ts.get_value(start, end) for ts in series] - print "%s, %0.3f" % (end, sum(results)) + print("%s, %0.3f" % (end, sum(results))) start += ctx.interval end += ctx.interval
@@ -69,7 +69,7 @@ def print_averages(ctx, series): while (start < ftime): end = ftime if ftime < end else end results = [ts.get_value(start, end) for ts in series] - print "%s, %0.3f" % (end, float(sum(results))/len(results)) + print("%s, %0.3f" % (end, float(sum(results))/len(results))) start += ctx.interval end += ctx.interval
@@ -147,11 +147,11 @@ def print_default(ctx, series): end += ctx.interval total = 0 - for i in xrange(0, len(averages)): + for i in range(0, len(averages)): total += averages[i]*weights[i] - print '%0.3f' % (total/sum(weights)) + print('%0.3f' % (total/sum(weights))) -class TimeSeries(): +class TimeSeries(object): def __init__(self, ctx, fn): self.ctx = ctx self.last = None
@@ -185,7 +185,7 @@ class TimeSeries(): value += sample.get_contribution(start, end) return value -class Sample(): +class Sample(object): def __init__(self, ctx, start, end, value): self.ctx = ctx self.start = start