The following changes since commit 824912be19542f94264e485a25d37b55a9f68f0e: Revert "correctly free thread_data options at the topmost parent process" (2023-07-28 11:32:22 -0600) are available in the Git repository at: git://git.kernel.dk/fio.git master for you to fetch changes up to 1660df6601e24a17dda9e12cbc901337fd5fd925: Merge branch 'master' of https://github.com/min22/fio (2023-07-31 15:03:37 -0600) ---------------------------------------------------------------- Denis Pronin (1): use 'const' where it is required Jens Axboe (2): Merge branch 'improment/constness' of https://github.com/dpronin/fio Merge branch 'master' of https://github.com/min22/fio Kookoo Gu (1): iolog.c: fix inaccurate clat when replay trace client.c | 10 +++++----- client.h | 8 ++++---- iolog.c | 14 +++++++------- 3 files changed, 16 insertions(+), 16 deletions(-) --- Diff of recent changes: diff --git a/client.c b/client.c index 7cd2ba66..c257036b 100644 --- a/client.c +++ b/client.c @@ -34,7 +34,7 @@ static void handle_start(struct fio_client *client, struct fio_net_cmd *cmd); static void convert_text(struct fio_net_cmd *cmd); static void client_display_thread_status(struct jobs_eta *je); -struct client_ops fio_client_ops = { +struct client_ops const fio_client_ops = { .text = handle_text, .disk_util = handle_du, .thread_status = handle_ts, @@ -446,7 +446,7 @@ int fio_client_add_ini_file(void *cookie, const char *ini_file, bool remote) return 0; } -int fio_client_add(struct client_ops *ops, const char *hostname, void **cookie) +int fio_client_add(struct client_ops const *ops, const char *hostname, void **cookie) { struct fio_client *existing = *cookie; struct fio_client *client; @@ -1772,7 +1772,7 @@ fail: int fio_handle_client(struct fio_client *client) { - struct client_ops *ops = client->ops; + struct client_ops const *ops = client->ops; struct fio_net_cmd *cmd; dprint(FD_NET, "client: handle %s\n", client->hostname); @@ -1957,7 +1957,7 @@ int fio_clients_send_trigger(const char *cmd) return 0; } -static void request_client_etas(struct client_ops *ops) +static void request_client_etas(struct client_ops const *ops) { struct fio_client *client; struct flist_head *entry; @@ -2089,7 +2089,7 @@ static int fio_check_clients_timed_out(void) return ret; } -int fio_handle_clients(struct client_ops *ops) +int fio_handle_clients(struct client_ops const *ops) { struct pollfd *pfds; int i, ret = 0, retval = 0; diff --git a/client.h b/client.h index 8033325e..d77b6076 100644 --- a/client.h +++ b/client.h @@ -69,7 +69,7 @@ struct fio_client { uint16_t argc; char **argv; - struct client_ops *ops; + struct client_ops const *ops; void *client_data; struct client_file *files; @@ -84,7 +84,7 @@ typedef void (client_eta_op)(struct jobs_eta *je); typedef void (client_timed_out_op)(struct fio_client *); typedef void (client_jobs_eta_op)(struct fio_client *client, struct jobs_eta *je); -extern struct client_ops fio_client_ops; +extern struct client_ops const fio_client_ops; struct client_ops { client_cmd_op *text; @@ -128,8 +128,8 @@ extern int fio_start_client(struct fio_client *); extern int fio_start_all_clients(void); extern int fio_clients_send_ini(const char *); extern int fio_client_send_ini(struct fio_client *, const char *, bool); -extern int fio_handle_clients(struct client_ops *); -extern int fio_client_add(struct client_ops *, const char *, void **); +extern int fio_handle_clients(struct client_ops const*); +extern int fio_client_add(struct client_ops const*, const char *, void **); extern struct fio_client *fio_client_add_explicit(struct client_ops *, const char *, int, int); extern void fio_client_add_cmd_option(void *, const char *); extern int fio_client_add_ini_file(void *, const char *, bool); diff --git a/iolog.c b/iolog.c index cc2cbc65..97ba4396 100644 --- a/iolog.c +++ b/iolog.c @@ -82,8 +82,8 @@ static void iolog_delay(struct thread_data *td, unsigned long delay) { uint64_t usec = utime_since_now(&td->last_issue); unsigned long orig_delay = delay; - uint64_t this_delay; struct timespec ts; + int ret = 0; if (delay < td->time_offset) { td->time_offset = 0; @@ -97,13 +97,13 @@ static void iolog_delay(struct thread_data *td, unsigned long delay) delay -= usec; fio_gettime(&ts, NULL); - while (delay && !td->terminate) { - this_delay = delay; - if (this_delay > 500000) - this_delay = 500000; - usec_sleep(td, this_delay); - delay -= this_delay; + while (delay && !td->terminate) { + ret = io_u_queued_complete(td, 0); + if (ret < 0) + td_verror(td, -ret, "io_u_queued_complete"); + if (utime_since_now(&ts) > delay) + break; } usec = utime_since_now(&ts);