From: Steven Rostedt <rostedt@goodmis.org>
To: linux-trace-devel@vger.kernel.org
Subject: [PATCH 30/38] trace-cmd: Move protocol version into msg_handler
Date: Wed, 03 Jan 2018 12:52:32 -0500 [thread overview]
Message-ID: <20180103175339.226570025@goodmis.org> (raw)
In-Reply-To: 20180103175202.044283643@goodmis.org
[-- Attachment #1: 0030-trace-cmd-Move-protocol-version-into-msg_handler.patch --]
[-- Type: text/plain, Size: 4896 bytes --]
From: "Steven Rostedt (Red Hat)" <rostedt@goodmis.org>
In order to have trace-listen be able to perform the handshake with the
client before forking, the protocol version can not be global. Move it to
the msg_handler.
Signed-off-by: Steven Rostedt <rostedt@goodmis.org>
---
trace-cmd.h | 3 ++-
trace-listen.c | 8 +++-----
trace-record.c | 27 ++++++++++++++++-----------
3 files changed, 21 insertions(+), 17 deletions(-)
diff --git a/trace-cmd.h b/trace-cmd.h
index 30badbd47cc6..526634fd674b 100644
--- a/trace-cmd.h
+++ b/trace-cmd.h
@@ -314,8 +314,9 @@ enum tracecmd_msg_flags {
/* for both client and server */
struct tracecmd_msg_handle {
- unsigned long flags;
int fd;
+ int version; /* Current protocol version */
+ unsigned long flags;
};
struct tracecmd_msg_handle *
diff --git a/trace-listen.c b/trace-listen.c
index a1e35ef19761..93cae4c793fa 100644
--- a/trace-listen.c
+++ b/trace-listen.c
@@ -51,8 +51,6 @@ static FILE *logfp;
static int backlog = 5;
-static int proto_ver;
-
static int do_daemon;
/* Used for signaling INT to finish */
@@ -436,7 +434,7 @@ static int communicate_with_client(struct tracecmd_msg_handle *msg_handle,
/* We're off! */
write(fd, "OK", 2);
- proto_ver = V2_PROTOCOL;
+ msg_handle->version = V2_PROTOCOL;
/* read the CPU count, the page size, and options */
if (tracecmd_msg_initial_setting(msg_handle, cpus, pagesize) < 0)
@@ -585,7 +583,7 @@ static int *create_all_readers(int cpus, const char *node, const char *port,
start_port = udp_port + 1;
}
- if (proto_ver == V2_PROTOCOL) {
+ if (msg_handle->version == V2_PROTOCOL) {
/* send set of port numbers to the client */
if (tracecmd_msg_send_port_array(msg_handle, cpus, port_array) < 0) {
plog("Failed sending port array\n");
@@ -700,7 +698,7 @@ static int process_client(struct tracecmd_msg_handle *msg_handle,
stop_msg_handle = msg_handle;
/* Now we are ready to start reading data from the client */
- if (proto_ver == V2_PROTOCOL)
+ if (msg_handle->version == V2_PROTOCOL)
tracecmd_msg_collect_metadata(msg_handle, ofd);
else
collect_metadata_from_client(msg_handle, ofd);
diff --git a/trace-record.c b/trace-record.c
index 9512fd9853ad..90e344d5c0c8 100644
--- a/trace-record.c
+++ b/trace-record.c
@@ -112,7 +112,6 @@ static unsigned recorder_flags;
/* Try a few times to get an accurate date */
static int date2ts_tries = 5;
-static int proto_ver = V2_PROTOCOL;
static struct func_list *graph_funcs;
static int func_stack;
@@ -2791,7 +2790,7 @@ static void check_protocol_version(struct tracecmd_msg_handle *msg_handle)
if (n < 0 || !buf[0]) {
/* the server uses the v1 protocol, so we'll use it */
- proto_ver = V1_PROTOCOL;
+ msg_handle->version = V1_PROTOCOL;
plog("Use the v1 protocol\n");
} else {
if (memcmp(buf, "V2", n) != 0)
@@ -2811,7 +2810,7 @@ static void check_protocol_version(struct tracecmd_msg_handle *msg_handle)
static struct tracecmd_msg_handle *setup_network(void)
{
- struct tracecmd_msg_handle *msg_handle;
+ struct tracecmd_msg_handle *msg_handle = NULL;
struct addrinfo hints;
struct addrinfo *result, *rp;
int sfd, s;
@@ -2858,16 +2857,22 @@ again:
freeaddrinfo(result);
- msg_handle = tracecmd_msg_handle_alloc(sfd, TRACECMD_MSG_FL_CLIENT);
- if (!msg_handle)
- die("Failed to allocate message handle");
+ if (msg_handle) {
+ msg_handle->fd = sfd;
+ } else {
+ msg_handle = tracecmd_msg_handle_alloc(sfd, TRACECMD_MSG_FL_CLIENT);
+ if (!msg_handle)
+ die("Failed to allocate message handle");
+
+ msg_handle->version = V2_PROTOCOL;
+ }
if (use_tcp)
msg_handle->flags |= TRACECMD_MSG_FL_USE_TCP;
- if (proto_ver == V2_PROTOCOL) {
+ if (msg_handle->version == V2_PROTOCOL) {
check_protocol_version(msg_handle);
- if (proto_ver == V1_PROTOCOL) {
+ if (msg_handle->version == V1_PROTOCOL) {
/* reconnect to the server for using the v1 protocol */
close(sfd);
goto again;
@@ -2875,7 +2880,7 @@ again:
communicate_with_listener_v2(msg_handle);
}
- if (proto_ver == V1_PROTOCOL)
+ if (msg_handle->version == V1_PROTOCOL)
communicate_with_listener_v1(msg_handle);
return msg_handle;
@@ -2888,7 +2893,7 @@ static struct tracecmd_msg_handle *setup_connection(void)
msg_handle = setup_network();
/* Now create the handle through this socket */
- if (proto_ver == V2_PROTOCOL) {
+ if (msg_handle->version == V2_PROTOCOL) {
network_handle = tracecmd_create_init_fd_msg(msg_handle, listed_events);
tracecmd_msg_finish_sending_metadata(msg_handle);
} else
@@ -2901,7 +2906,7 @@ static struct tracecmd_msg_handle *setup_connection(void)
static void finish_network(struct tracecmd_msg_handle *msg_handle)
{
- if (proto_ver == V2_PROTOCOL)
+ if (msg_handle->version == V2_PROTOCOL)
tracecmd_msg_send_close_msg(msg_handle);
tracecmd_msg_handle_close(msg_handle);
free(host);
--
2.13.2
next prev parent reply other threads:[~2018-01-03 17:53 UTC|newest]
Thread overview: 40+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-01-03 17:52 [PATCH 00/38] trace-cmd: Simplify the msg handling Steven Rostedt
2018-01-03 17:52 ` [PATCH 01/38] trace-cmd recorder: Check if pipe_size was modified by fcntl(F_GETPIPE_SZ) Steven Rostedt
2018-01-03 17:52 ` [PATCH 02/38] pevent: Simplify pointer print logic and fix %pF Steven Rostedt
2018-01-03 17:52 ` [PATCH 03/38] pevent: Handle new pointer processing of bprint strings Steven Rostedt
2018-01-03 17:52 ` [PATCH 04/38] trace-cmd record: Fix clearing out the ctx->instance when used in for_all_instances() Steven Rostedt
2018-01-03 17:52 ` [PATCH 05/38] trace-cmd: Remove the creating of msg out of tracecmd_msg_send() Steven Rostedt
2018-01-03 17:52 ` [PATCH 06/38] trace-cmd: Move tracecmd_msg_send_and_wait_for_msg() into its only user Steven Rostedt
2018-01-03 17:52 ` [PATCH 07/38] trace-cmd: Turn tracecmd_msg data into an anonymous union Steven Rostedt
2018-01-03 17:52 ` [PATCH 08/38] trace-cmd: Remove unused structure tracecmd_msg_error Steven Rostedt
2018-01-03 17:52 ` [PATCH 09/38] trace-cmd: Move size and cmd in tracecmd_msg into its own header struct Steven Rostedt
2018-01-03 17:52 ` [PATCH 10/38] trace-cmd: Move the tracecmd_msg pointers into their own union Steven Rostedt
2018-01-03 17:52 ` [PATCH 11/38] trace-cmd: Just use the buf field for sending pointers Steven Rostedt
2018-01-03 17:52 ` [PATCH 12/38] trace-cmd: Use an array to map msg types and min sizes Steven Rostedt
2018-01-03 17:52 ` [PATCH 13/38] trace-cmd: Merge msg_do_write_check() into msg_write() Steven Rostedt
2018-01-03 17:52 ` [PATCH 14/38] trace-cmd: Simplify msg_free() by using min sizes Steven Rostedt
2018-01-03 17:52 ` [PATCH 15/38] trace-cmd: Add tracecmd_msg_init() helper function Steven Rostedt
2018-01-03 17:52 ` [PATCH 16/38] trace-cmd: Remove mulitplexer tracecmd_msg_create() Steven Rostedt
2018-01-03 17:52 ` [PATCH 17/38] trace-cmd: Simplify msg_read_extra() Steven Rostedt
2018-01-03 17:52 ` [PATCH 18/38] trace-cmd: Have msg_free() zero out msg contents Steven Rostedt
2018-01-03 17:52 ` [PATCH 19/38] trace-cmd: Verify RINIT was received after TINIT msg sent Steven Rostedt
2018-01-03 17:52 ` [PATCH 20/38] trace-cmd: Make send_metadata a flag in the output handle Steven Rostedt
2018-01-03 17:52 ` [PATCH 21/38] trace-cmd: Pass cpu count and port array to make_rinit() Steven Rostedt
2018-01-03 17:52 ` [PATCH 22/38] trace-cmd: Pass cpu_count instead of having it as a global Steven Rostedt
2018-01-03 17:52 ` [PATCH 23/38] trace-cmd: Pass in client_ports instead of using a global variable Steven Rostedt
2018-01-03 17:52 ` [PATCH 24/38] trace-cmd msg: Add debug prints of messages sent and received Steven Rostedt
2018-01-03 17:52 ` [PATCH 25/38] trace-cmd msg: Move the saved closing fd to the caller Steven Rostedt
2018-01-03 17:52 ` [PATCH 26/38] trace-cmd listen: Add better output on error of connections Steven Rostedt
2018-01-03 17:52 ` [PATCH 27/38] trace-cmd msg: Create a msg_handle to pass around for saved state Steven Rostedt
2018-01-03 17:52 ` [PATCH 28/38] trace-cmd msg: Add server structure of msg_handler Steven Rostedt
2018-01-03 20:31 ` [PATCH 28/38 v2] " Steven Rostedt
2018-01-03 17:52 ` [PATCH 29/38] trace-cmd: Remove global use_tcp variable Steven Rostedt
2018-01-03 17:52 ` Steven Rostedt [this message]
2018-01-03 17:52 ` [PATCH 31/38] tracecmd: Clean up handling of cpu_count Steven Rostedt
2018-01-03 17:52 ` [PATCH 32/38] tracecmd listen: Have pagesize passed as return not parameter Steven Rostedt
2018-01-03 17:52 ` [PATCH 33/38] trace-cmd: Have cpu_count reside in instances and not be global Steven Rostedt
2018-01-03 17:52 ` [PATCH 34/38] trace-cmd: Add option CPUCOUNT to buffer instance options Steven Rostedt
2018-01-03 17:52 ` [PATCH 35/38] trace-cmd: Have msg_handle part of the buffer instance Steven Rostedt
2018-01-03 17:52 ` [PATCH 36/38] trace-cmd record: Allow instances to be recorded over the network Steven Rostedt
2018-01-03 17:52 ` [PATCH 37/38] trace-cmd: Have keep and profile be flags of buffer instance Steven Rostedt
2018-01-03 17:52 ` [PATCH 38/38] trace-cmd: Add network handle into " Steven Rostedt
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20180103175339.226570025@goodmis.org \
--to=rostedt@goodmis.org \
--cc=linux-trace-devel@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).