代码拉取完成,页面将自动刷新
同步操作将从 src-openEuler/criu 强制同步,此操作会覆盖自 Fork 仓库以来所做的任何修改,且无法恢复!!!
确定后同步将在后台操作,完成时将刷新页面,请耐心等待。
From bec1445fd5dcfffb24918d725163f3be35f8b634 Mon Sep 17 00:00:00 2001
From: "fu.lin" <fulin10@huawei.com>
Date: Tue, 19 Oct 2021 20:53:19 +0800
Subject: [PATCH 49/72] log: print error log to /dev/kmsg
The criu log can't be flushed to disk when OS crash in storage
environment, therefore, output high level msg to /dev/kmsg.
Signed-off-by: fu.lin <fulin10@huawei.com>
---
criu/Makefile.crtools | 1 +
criu/include/log.h | 3 +++
criu/kmsg.c | 16 ++++++++++++++++
criu/log.c | 4 ++++
4 files changed, 24 insertions(+)
create mode 100644 criu/kmsg.c
diff --git a/criu/Makefile.crtools b/criu/Makefile.crtools
index 7fee749..3bb7c19 100644
--- a/criu/Makefile.crtools
+++ b/criu/Makefile.crtools
@@ -96,6 +96,7 @@ obj-y += files-chr.o
obj-y += exit-notify.o
obj-y += reserved-ports.o
obj-y += orphan-inode.o
+obj-y += kmsg.o
obj-$(CONFIG_HAS_LIBBPF) += bpfmap.o
obj-$(CONFIG_COMPAT) += pie-util-vdso-elf32.o
CFLAGS_pie-util-vdso-elf32.o += -DCONFIG_VDSO_32
diff --git a/criu/include/log.h b/criu/include/log.h
index 85e6dc2..aafea95 100644
--- a/criu/include/log.h
+++ b/criu/include/log.h
@@ -2,6 +2,7 @@
#define __CR_LOG_H__
#include <inttypes.h>
+#include <stddef.h>
#ifndef CR_NOGLIBC
@@ -62,4 +63,6 @@ void flush_early_log_buffer(int fd);
#endif /* CR_NOGLIBC */
+void write_kmsg(const void *buf, size_t count);
+
#endif /* __CR_LOG_H__ */
diff --git a/criu/kmsg.c b/criu/kmsg.c
new file mode 100644
index 0000000..c956dfb
--- /dev/null
+++ b/criu/kmsg.c
@@ -0,0 +1,16 @@
+#include <fcntl.h>
+#include <unistd.h>
+
+#define SYSLOG_DEV "/dev/kmsg"
+
+void write_kmsg(const void *buf, size_t count)
+{
+ int fd;
+
+ fd = open(SYSLOG_DEV, O_CLOEXEC | O_WRONLY);
+ if (fd < 0)
+ return;
+
+ write(fd, buf, count);
+ close(fd);
+}
diff --git a/criu/log.c b/criu/log.c
index c4ce90e..ba208f7 100644
--- a/criu/log.c
+++ b/criu/log.c
@@ -373,6 +373,10 @@ static void vprint_on_level(unsigned int loglevel, const char *format, va_list p
size += buf_off;
while (off < size) {
+ if (loglevel <= LOG_WARN) {
+ write_kmsg(buffer + off, size - off);
+ }
+
ret = write(fd, buffer + off, size - off);
if (ret <= 0)
break;
--
2.34.1
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。