update README
fix some bugs
refactor pkt read send to improve performance
refactor kernle event toimproveperformance
(cherry picked from commit a8c66704608ca83c799adab88be6214bccdcfa44)
71 lines
2.4 KiB
Diff
71 lines
2.4 KiB
Diff
From 336703252c327d82f49d40f79b1d1e4e65a9281e Mon Sep 17 00:00:00 2001
|
||
From: jiangheng <jiangheng12@huawei.com>
|
||
Date: Tue, 19 Apr 2022 19:49:06 +0800
|
||
Subject: [PATCH 02/18] exit lstack process after ltran instance logout
|
||
|
||
close fd is to notify ltran to execute the lstack instance logout.
|
||
200ms is an empirical value of instance logout.
|
||
---
|
||
src/lstack/api/lstack_signal.c | 4 +++-
|
||
src/lstack/core/lstack_control_plane.c | 9 +++++++++
|
||
src/lstack/include/lstack_control_plane.h | 1 +
|
||
3 files changed, 13 insertions(+), 1 deletion(-)
|
||
|
||
diff --git a/src/lstack/api/lstack_signal.c b/src/lstack/api/lstack_signal.c
|
||
index f4763e8..87cbdda 100644
|
||
--- a/src/lstack/api/lstack_signal.c
|
||
+++ b/src/lstack/api/lstack_signal.c
|
||
@@ -19,8 +19,9 @@
|
||
#include <lwip/posix_api.h>
|
||
|
||
#include "lstack_log.h"
|
||
+#include "lstack_control_plane.h"
|
||
|
||
-static int g_hijack_signal[] = { SIGTERM, SIGINT, SIGSEGV, SIGBUS, SIGFPE, SIGILL };
|
||
+static int g_hijack_signal[] = { SIGTERM, SIGINT, SIGSEGV, SIGBUS, SIGFPE, SIGILL, SIGKILL};
|
||
#define HIJACK_SIGNAL_COUNT (sizeof(g_hijack_signal) / sizeof(g_hijack_signal[0]))
|
||
#define BACKTRACE_SIZE 64
|
||
static void dump_stack(void)
|
||
@@ -54,6 +55,7 @@ static inline bool match_hijack_signal(int sig)
|
||
static void lstack_sig_default_handler(int sig)
|
||
{
|
||
LSTACK_LOG(ERR, LSTACK, "lstack dumped,caught signal:%d\n", sig);
|
||
+ control_fd_close();
|
||
dump_stack();
|
||
lwip_exit();
|
||
(void)kill(getpid(), sig);
|
||
diff --git a/src/lstack/core/lstack_control_plane.c b/src/lstack/core/lstack_control_plane.c
|
||
index c782d51..01b2ff0 100644
|
||
--- a/src/lstack/core/lstack_control_plane.c
|
||
+++ b/src/lstack/core/lstack_control_plane.c
|
||
@@ -446,6 +446,15 @@ int32_t client_reg_thrd_ring(void)
|
||
return 0;
|
||
}
|
||
|
||
+void control_fd_close(void)
|
||
+{
|
||
+ if (g_data_fd != 0) {
|
||
+ close(g_data_fd);
|
||
+ /* 200ms: wait ltran instance logout */
|
||
+ rte_delay_ms(200);
|
||
+ }
|
||
+}
|
||
+
|
||
int32_t control_init_client(bool is_reconnect)
|
||
{
|
||
int32_t ret;
|
||
diff --git a/src/lstack/include/lstack_control_plane.h b/src/lstack/include/lstack_control_plane.h
|
||
index 0af891a..1fa84e6 100644
|
||
--- a/src/lstack/include/lstack_control_plane.h
|
||
+++ b/src/lstack/include/lstack_control_plane.h
|
||
@@ -32,5 +32,6 @@ void control_server_thread(void *arg);
|
||
bool get_register_state(void);
|
||
void thread_register_phase1(struct rpc_msg *msg);
|
||
void thread_register_phase2(struct rpc_msg *msg);
|
||
+void control_fd_close(void);
|
||
|
||
#endif /* GAZELLE_CONTROL_PLANE_H */
|
||
--
|
||
2.23.0
|
||
|