X-Git-Url: https://git.lttng.org/?p=lttng-tools.git;a=blobdiff_plain;f=ltt-sessiond%2Fmain.c;h=e7ad6f9b140e1c48f05f2befcda5d73fc1ce2803;hp=93e6ca6689e0fd09304509c5de34f29d0475289e;hb=f7776ea71b15b00b5f83b9876ccba9f6ede8e2b4;hpb=33a2b85433875769e92ca44a680c46b9498f5174 diff --git a/ltt-sessiond/main.c b/ltt-sessiond/main.c index 93e6ca668..e7ad6f9b1 100644 --- a/ltt-sessiond/main.c +++ b/ltt-sessiond/main.c @@ -493,7 +493,7 @@ static pid_t spawn_kconsumerd(void) /* * Exec kconsumerd. */ - execlp("kconsumerd", "kconsumerd", "--quiet", NULL); + execlp("kconsumerd", "kconsumerd", "--verbose", NULL); if (errno != 0) { perror("kernel start consumer exec"); } @@ -634,6 +634,7 @@ static int create_trace_dir(struct ltt_kernel_session *session) /* Create all channel directories */ cds_list_for_each_entry(chan, &session->channel_list.head, list) { DBG("Creating trace directory at %s", chan->pathname); + // TODO: recursive create dir ret = mkdir(chan->pathname, S_IRWXU | S_IRWXG ); if (ret < 0) { perror("mkdir trace path"); @@ -648,6 +649,23 @@ error: return ret; } +/* + * init_kernel_tracer + * + * Setup necessary data for kernel tracer action. + */ +static void init_kernel_tracer(void) +{ + /* Set the global kernel tracer fd */ + kernel_tracer_fd = open(DEFAULT_KERNEL_TRACER_PATH, O_RDWR); + if (kernel_tracer_fd < 0) { + WARN("No kernel tracer available"); + kernel_tracer_fd = 0; + } + + DBG("Kernel tracer fd %d", kernel_tracer_fd); +} + /* * process_client_msg * @@ -690,11 +708,13 @@ static int process_client_msg(struct command_ctx *cmd_ctx) case KERNEL_OPEN_METADATA: case KERNEL_START_TRACE: case KERNEL_STOP_TRACE: - /* TODO: reconnect to kernel tracer to check if - * it's loadded */ + /* Kernel tracer check */ if (kernel_tracer_fd == 0) { - ret = LTTCOMM_KERN_NA; - goto error; + init_kernel_tracer(); + if (kernel_tracer_fd == 0) { + ret = LTTCOMM_KERN_NA; + goto error; + } } break; } @@ -1178,6 +1198,8 @@ static void *thread_manage_clients(void *data) continue; } + // TODO: Validate cmd_ctx including sanity check for security purpose. + /* * This function dispatch the work to the kernel or userspace tracer * libs and fill the lttcomm_lttng_msg data structure of all the needed @@ -1201,6 +1223,9 @@ static void *thread_manage_clients(void *data) } clean_command_ctx(cmd_ctx); + + /* End of transmission */ + close(sock); } error: @@ -1469,23 +1494,6 @@ error: return ret; } -/* - * init_kernel_tracer - * - * Setup necessary data for kernel tracer action. - */ -static void init_kernel_tracer(void) -{ - /* Set the global kernel tracer fd */ - kernel_tracer_fd = open(DEFAULT_KERNEL_TRACER_PATH, O_RDWR); - if (kernel_tracer_fd < 0) { - WARN("No kernel tracer available"); - kernel_tracer_fd = 0; - } - - DBG("Kernel tracer fd %d", kernel_tracer_fd); -} - /* * set_kconsumerd_sockets *