From b9f3c7ed703f0f94476c5d9123034a45a4936517 Mon Sep 17 00:00:00 2001 From: Jens Axboe Date: Fri, 2 Mar 2012 14:27:17 +0100 Subject: [PATCH] Start of support for auto-starting the backend When running fio as a client only, you need the backend running on the system. Start adding support for letting gfio auto-fork the backend, if it isn't already running. Signed-off-by: Jens Axboe --- gfio.c | 23 ++++++++++++++++++++--- 1 file changed, 20 insertions(+), 3 deletions(-) diff --git a/gfio.c b/gfio.c index 3c25c4e6..e92ab031 100644 --- a/gfio.c +++ b/gfio.c @@ -526,9 +526,11 @@ void report_error(GError *error) } } -static int get_connection_details(char **host, int *port, int *type) +static int get_connection_details(char **host, int *port, int *type, + int *server_start) { GtkWidget *dialog, *box, *vbox, *hentry, *hbox, *frame, *pentry, *combo; + GtkWidget *button; char *typeentry; dialog = gtk_dialog_new_with_buttons("Connection details", @@ -575,6 +577,19 @@ static int get_connection_details(char **host, int *port, int *type) gtk_container_add(GTK_CONTAINER(hbox), combo); + frame = gtk_frame_new("Options"); + gtk_box_pack_start(GTK_BOX(vbox), frame, FALSE, FALSE, 5); + box = gtk_vbox_new(FALSE, 10); + gtk_container_add(GTK_CONTAINER(frame), box); + + hbox = gtk_hbox_new(TRUE, 4); + gtk_box_pack_start(GTK_BOX(box), hbox, FALSE, FALSE, 0); + + button = gtk_check_button_new_with_label("Auto-spawn fio backend"); + gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(button), 1); + gtk_widget_set_tooltip_text(button, "When running fio locally, it is necessary to have the backend running on the same system. If this is checked, gfio will start the backend automatically for you if it isn't already running."); + gtk_box_pack_start(GTK_BOX(hbox), button, FALSE, FALSE, 6); + gtk_widget_show_all(dialog); if (gtk_dialog_run(GTK_DIALOG(dialog)) != GTK_RESPONSE_ACCEPT) { @@ -594,6 +609,8 @@ static int get_connection_details(char **host, int *port, int *type) *type = Fio_client_socket; g_free(typeentry); + *server_start = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(button)); + gtk_widget_destroy(dialog); return 0; } @@ -604,7 +621,7 @@ static void file_open(GtkWidget *w, gpointer data) GSList *filenames, *fn_glist; GtkFileFilter *filter; char *host; - int port, type; + int port, type, server_start; dialog = gtk_file_chooser_dialog_new("Open File", GTK_WINDOW(ui.window), @@ -630,7 +647,7 @@ static void file_open(GtkWidget *w, gpointer data) gtk_widget_destroy(dialog); - if (get_connection_details(&host, &port, &type)) + if (get_connection_details(&host, &port, &type, &server_start)) goto err; filenames = fn_glist; -- 2.25.1