client: fix double removal of client on job file open failure
[fio.git] / client.c
index 515cbf2e178aae746d04a61ccfa0aab4b2d976c6..6bc114541062231f24d9bc0215e47102e05ec868 100644 (file)
--- a/client.c
+++ b/client.c
@@ -816,6 +816,8 @@ int fio_clients_send_ini(const char *filename)
        struct flist_head *entry, *tmp;
 
        flist_for_each_safe(entry, tmp, &client_list) {
        struct flist_head *entry, *tmp;
 
        flist_for_each_safe(entry, tmp, &client_list) {
+               bool failed = false;
+
                client = flist_entry(entry, struct fio_client, list);
 
                if (client->nr_files) {
                client = flist_entry(entry, struct fio_client, list);
 
                if (client->nr_files) {
@@ -827,12 +829,13 @@ int fio_clients_send_ini(const char *filename)
                                cf = &client->files[i];
 
                                if (fio_client_send_cf(client, cf)) {
                                cf = &client->files[i];
 
                                if (fio_client_send_cf(client, cf)) {
+                                       failed = true;
                                        remove_client(client);
                                        break;
                                }
                        }
                }
                                        remove_client(client);
                                        break;
                                }
                        }
                }
-               if (client->sent_job)
+               if (client->sent_job || failed)
                        continue;
                if (!filename || fio_client_send_ini(client, filename, 0))
                        remove_client(client);
                        continue;
                if (!filename || fio_client_send_ini(client, filename, 0))
                        remove_client(client);