+static void request_client_etas(void)
+{
+ struct fio_client *client;
+ struct flist_head *entry;
+ struct client_eta *eta;
+ int skipped = 0;
+
+ dprint(FD_NET, "client: request eta (%d)\n", nr_clients);
+
+ eta = malloc(sizeof(*eta));
+ memset(&eta->eta, 0, sizeof(eta->eta));
+ eta->pending = nr_clients;
+
+ flist_for_each(entry, &client_list) {
+ client = flist_entry(entry, struct fio_client, list);
+
+ if (!flist_empty(&client->eta_list)) {
+ skipped++;
+ continue;
+ }
+
+ assert(!client->eta_in_flight);
+ flist_add_tail(&client->eta_list, &eta_list);
+ client->eta_in_flight = eta;
+ fio_net_send_simple_cmd(client->fd, FIO_NET_CMD_SEND_ETA,
+ (uint64_t) eta);
+ }
+
+ while (skipped--)
+ dec_jobs_eta(eta);
+
+ dprint(FD_NET, "client: requested eta tag %p\n", eta);
+}
+