diff --git a/init.c b/init.c
index 3041ac4..61b3d4b 100644
--- a/init.c
+++ b/init.c
@@ -745,7 +745,7 @@
  * members of td.
  */
 static int add_job(struct thread_data *td, const char *jobname, int job_add_num,
-		   int recursed)
+		   int recursed, int client_type)
 {
 	unsigned int i;
 	char fname[PATH_MAX];
@@ -765,6 +765,8 @@
 		return 0;
 	}
 
+	td->client_type = client_type;
+
 	if (profile_td_init(td))
 		goto err;
 
@@ -915,7 +917,7 @@
 
 		job_add_num = numjobs - 1;
 
-		if (add_job(td_new, jobname, job_add_num, 1))
+		if (add_job(td_new, jobname, job_add_num, 1, client_type))
 			goto err;
 	}
 
@@ -928,7 +930,7 @@
 /*
  * Parse as if 'o' was a command line
  */
-void add_job_opts(const char **o)
+void add_job_opts(const char **o, int client_type)
 {
 	struct thread_data *td, *td_parent;
 	int i, in_global = 1;
@@ -940,7 +942,7 @@
 		if (!strncmp(o[i], "name", 4)) {
 			in_global = 0;
 			if (td)
-				add_job(td, jobname, 0, 0);
+				add_job(td, jobname, 0, 0, client_type);
 			td = NULL;
 			sprintf(jobname, "%s", o[i] + 5);
 		}
@@ -959,7 +961,7 @@
 	}
 
 	if (td)
-		add_job(td, jobname, 0, 0);
+		add_job(td, jobname, 0, 0, client_type);
 }
 
 static int skip_this_section(const char *name)
@@ -997,7 +999,7 @@
 /*
  * This is our [ini] type file parser.
  */
-int parse_jobs_ini(char *file, int is_buf, int stonewall_flag)
+int parse_jobs_ini(char *file, int is_buf, int stonewall_flag, int type)
 {
 	unsigned int global;
 	struct thread_data *td;
@@ -1141,7 +1143,7 @@
 				for (i = 0; i < num_opts; i++)
 					log_info("--%s ", opts[i]);
 
-			ret = add_job(td, name, 0, 0);
+			ret = add_job(td, name, 0, 0, type);
 		} else {
 			log_err("fio: job %s dropped\n", name);
 			put_job(td);
@@ -1388,7 +1390,7 @@
 	fio_client_add_cmd_option(client, opt);
 }
 
-int parse_cmd_line(int argc, char *argv[])
+int parse_cmd_line(int argc, char *argv[], int client_type)
 {
 	struct thread_data *td = NULL;
 	int c, ini_idx = 0, lidx, ret = 0, do_exit = 0, exit_val = 0;
@@ -1507,7 +1509,7 @@
 			char *val = optarg;
 
 			if (!strncmp(opt, "name", 4) && td) {
-				ret = add_job(td, td->o.name ?: "fio", 0, 0);
+				ret = add_job(td, td->o.name ?: "fio", 0, 0, client_type);
 				if (ret)
 					return 0;
 				td = NULL;
@@ -1611,7 +1613,7 @@
 
 	if (td) {
 		if (!ret)
-			ret = add_job(td, td->o.name ?: "fio", 0, 0);
+			ret = add_job(td, td->o.name ?: "fio", 0, 0, client_type);
 	}
 
 	while (!ret && optind < argc) {
@@ -1644,6 +1646,7 @@
 
 int parse_options(int argc, char *argv[])
 {
+	const int type = FIO_CLIENT_TYPE_CLI;
 	int job_files, i;
 
 	if (fio_init_options())
@@ -1651,7 +1654,7 @@
 	if (fio_test_cconv(&def_thread.o))
 		log_err("fio: failed internal cconv test\n");
 
-	job_files = parse_cmd_line(argc, argv);
+	job_files = parse_cmd_line(argc, argv, type);
 
 	if (job_files > 0) {
 		for (i = 0; i < job_files; i++) {
@@ -1662,7 +1665,7 @@
 					return 1;
 				free(ini_file[i]);
 			} else if (!is_backend) {
-				if (parse_jobs_ini(ini_file[i], 0, i))
+				if (parse_jobs_ini(ini_file[i], 0, i, type))
 					return 1;
 				free(ini_file[i]);
 			}
