Recent changes (master)
The following changes since commit dfc8e76c8d438da9861acfcdc96c46afe4339148:
server: code cleanups (2015-12-17 15:23:48 -0700)
are available in the git repository at:
git://git.kernel.dk/fio.git master
for you to fetch changes up to 70c6807675291c2c5ccb38cc9c81b45bcaed0ce1:
backend: count iterative bytes for progress (2015-12-18 22:33:35 -0700)
----------------------------------------------------------------
Jens Axboe (4):
client: iolog cleanups
server: don't store command tag on the stack
server: command tag cleanup
backend: count iterative bytes for progress
backend.c | 7 ++++++- client.c | 28 +++++++++++++++++++--------- server.c | 38 ++++++++++++++++---------------------- 3 files changed, 41 insertions(+), 32 deletions(-)
---
Diff of recent changes:
backend.c +6 -1
@@ -813,6 +813,10 @@ static uint64_t do_io(struct thread_data *td)unsigned int i;int ret =0 ;uint64_t total_bytes, bytes_issued =0 ; +uint64_t this_bytes[2 ]; + + this_bytes[0 ] = td->bytes_done[DDIR_WRITE ]; + this_bytes[1 ] = td->bytes_done[DDIR_TRIM ];if (in_ramp_time (td))td_set_runstate (td,TD_RAMP );
@@ -1046,7 +1050,8 @@ reap:if (!ddir_rw_sum (td->this_io_bytes)) td->done =1 ; -return td->bytes_done[DDIR_WRITE ] + td->bytes_done[DDIR_TRIM ]; +return (td->bytes_done[DDIR_WRITE ] - this_bytes[0 ]) + + (td->bytes_done[DDIR_TRIM ] - this_bytes[1 ]); }static void cleanup_io_u (struct thread_data *td)
client.c +19 -9
@@ -1226,14 +1226,17 @@ static void handle_eta(struct fio_client *client, struct fio_net_cmd *cmd)fio_client_dec_jobs_eta (eta, client->ops->eta); } -void fio_client_handle_iolog (struct fio_client *client,struct fio_net_cmd *cmd) +static int fio_client_handle_iolog (struct fio_client *client, +struct fio_net_cmd *cmd) {struct cmd_iolog_pdu *pdu;bool store_direct; pdu =convert_iolog (cmd, &store_direct); -if (!pdu) -return ; +if (!pdu) { +log_err ("fio: failed converting IO log\n" ); +return 1 ; + }if (store_direct) {ssize_t ret;
@@ -1243,26 +1246,33 @@ void fio_client_handle_iolog(struct fio_client *client, struct fio_net_cmd *cmd) fd =open ((const char *) pdu->name,O_WRONLY |O_CREAT |O_TRUNC ,0644 );if (fd <0 ) { -perror ("open log" ); -return ; +log_err ("fio: open log: %s\n" ,strerror (errno)); +return 1 ; } + sz = cmd->pdu_len -sizeof (*pdu); ret =write (fd, pdu->samples, sz); -if (ret != sz) -log_err ("fio: short write on compressed log\n" );close (fd); + +if (ret != sz) { +log_err ("fio: short write on compressed log\n" ); +return 1 ; + } + +return 0 ; }else {FILE *f; f =fopen ((const char *) pdu->name,"w" );if (!f) { -perror ("fopen log" ); -return ; +log_err ("fio: fopen log: %s\n" ,strerror (errno)); +return 1 ; }flush_samples (f, pdu->samples, pdu->nr_samples *sizeof (struct io_sample ));fclose (f); +return 0 ; } }
server.c +16 -22
@@ -46,7 +46,7 @@ struct sk_entry {int opcode;/* Actual command fields */ void *buf;off_t size; -uint64_t *tagptr; +uint64_t tag;struct flist_head next;/* Other sk_entry's, if linked command */ };
@@ -536,7 +536,10 @@ static struct sk_entry *fio_net_prep_cmd(uint16_t opcode, void *buf, entry->buf = buf; entry->size = size; - entry->tagptr = tagptr; +if (tagptr) + entry->tag = *tagptr; +else + entry->tag =0 ; entry->flags = flags;return entry; }
@@ -1069,29 +1072,24 @@ static void finish_entry(struct sk_entry *entry)sfree (entry); } -static void entry_set_flags_tag (struct sk_entry *entry,struct flist_head *list, -unsigned int *flags,uint64_t *tag) +static void entry_set_flags (struct sk_entry *entry,struct flist_head *list, +unsigned int *flags) {if (!flist_empty (list)) *flags =FIO_NET_CMD_F_MORE ;else *flags =0 ; - -if (entry->tagptr) - *tag = *entry->tagptr; -else - *tag =0 ; }static int send_vec_entry (struct sk_out *sk_out,struct sk_entry *first) {unsigned int flags; -uint64_t tag;int ret; -entry_set_flags_tag (first, &first->next, &flags, &tag); +entry_set_flags (first, &first->next, &flags); - ret =fio_send_cmd_ext_pdu (sk_out->sk, first->opcode, first->buf, first->size, tag, flags); + ret =fio_send_cmd_ext_pdu (sk_out->sk, first->opcode, first->buf, + first->size, first->tag, flags);while (!flist_empty (&first->next)) {struct sk_entry *next;
@@ -1099,9 +1097,10 @@ static int send_vec_entry(struct sk_out *sk_out, struct sk_entry *first) next = flist_first_entry(&first->next, struct sk_entry, list);flist_del_init (&next->list); -entry_set_flags_tag (next, &first->next, &flags, &tag); +entry_set_flags (next, &first->next, &flags); - ret +=fio_send_cmd_ext_pdu (sk_out->sk, next->opcode, next->buf, next->size, tag, flags); + ret +=fio_send_cmd_ext_pdu (sk_out->sk, next->opcode, next->buf, + next->size, next->tag, flags);finish_entry (next); }
@@ -1117,16 +1116,11 @@ static int handle_sk_entry(struct sk_out *sk_out, struct sk_entry *entry)if (entry->flags &SK_F_VEC ) ret =send_vec_entry (sk_out, entry);else if (entry->flags &SK_F_SIMPLE ) { -uint64_t tag =0 ; - -if (entry->tagptr) - tag = *entry->tagptr; - - ret =fio_net_send_simple_cmd (sk_out->sk, entry->opcode, tag, -NULL ); + ret =fio_net_send_simple_cmd (sk_out->sk, entry->opcode, + entry->tag,NULL ); }else { ret =fio_net_send_cmd (sk_out->sk, entry->opcode, entry->buf, - entry->size, entry->tagptr,NULL ); + entry->size, &entry->tag,NULL ); }fio_mutex_up (&sk_out->xmit);