Also add explicit command to exit the server, FIO_QUIT.
Signed-off-by: Jens Axboe <axboe@kernel.dk>
if (!threads)
break;
update_io_ticks();
if (!threads)
break;
update_io_ticks();
+
+ if (!is_backend)
+ print_thread_status();
if (!thread_number)
return 0;
if (!thread_number)
return 0;
- printf("%d threads\n", thread_number);
-
if (write_bw_log) {
setup_log(&agg_io_log[DDIR_READ]);
setup_log(&agg_io_log[DDIR_WRITE]);
if (write_bw_log) {
setup_log(&agg_io_log[DDIR_READ]);
setup_log(&agg_io_log[DDIR_WRITE]);
extern enum fio_cs fio_clock_source;
extern int warnings_fatal;
extern int terse_version;
extern enum fio_cs fio_clock_source;
extern int warnings_fatal;
extern int terse_version;
extern struct thread_data *threads;
extern struct thread_data *threads;
exit(exit_val);
if (is_backend)
exit(exit_val);
if (is_backend)
return 0;
if (exec_profile)
return 0;
return 0;
if (exec_profile)
return 0;
+ if (is_backend)
+ return 0;
log_err("No jobs(s) defined\n\n");
usage(argv[0]);
log_err("No jobs(s) defined\n\n");
usage(argv[0]);
{
struct sockaddr addr;
unsigned int len = sizeof(addr);
{
struct sockaddr addr;
unsigned int len = sizeof(addr);
again:
sk = accept(listen_sk, &addr, &len);
again:
sk = accept(listen_sk, &addr, &len);
if (sk < 0) {
log_err("fio: accept failed\n");
return -1;
}
/* read forever */
if (sk < 0) {
log_err("fio: accept failed\n");
return -1;
}
/* read forever */
char buf[131072];
int ret;
ret = recv(sk, buf, 4096, 0);
if (ret > 0) {
char buf[131072];
int ret;
ret = recv(sk, buf, 4096, 0);
if (ret > 0) {
+ if (!strncmp("FIO_QUIT", buf, 8)) {
+ do_exit = 1;
+ break;
+ }
parse_jobs_ini(buf, 1, 0);
exec_run();
reset_fio_state();
parse_jobs_ini(buf, 1, 0);
exec_run();
reset_fio_state();
- printf("closed\n");
- goto again;
+
+ if (!do_exit)
+ goto again;
+
+ return 0;