[Devel] [PATCH] Log into /var/log/mesages large ghost files dumps
Andrei Vagin
avagin at openvz.org
Sat Aug 5 02:14:04 MSK 2017
From: Andrei Vagin <avagin at virtuozzo.com>
Introduce an internal CRIU limit (10Mb) and write a message to syslog.
This message is easily grep-able, so some time later we can grep our
reports from customers and find all those warnings and analyze them.
https://jira.sw.ru/browse/PSBM-68320
---
criu/Makefile.crtools | 1 +
criu/files-reg.c | 4 ++++
criu/include/cr-syslog.h | 12 ++++++++++++
criu/include/log.h | 2 ++
criu/syslog.c | 19 +++++++++++++++++++
5 files changed, 38 insertions(+)
create mode 100644 criu/include/cr-syslog.h
create mode 100644 criu/syslog.c
diff --git a/criu/Makefile.crtools b/criu/Makefile.crtools
index e07c568..2e8785c 100644
--- a/criu/Makefile.crtools
+++ b/criu/Makefile.crtools
@@ -82,6 +82,7 @@ obj-y += path.o
obj-y += autofs.o
obj-y += fdstore.o
obj-y += spfs.o
+obj-y += syslog.o
ifeq ($(VDSO),y)
obj-y += pie-util-vdso.o
diff --git a/criu/files-reg.c b/criu/files-reg.c
index e7cb566..f7426e9 100644
--- a/criu/files-reg.c
+++ b/criu/files-reg.c
@@ -880,6 +880,10 @@ static int dump_ghost_remap(char *path, const struct stat *st,
{
pr_info("Dumping ghost file for fd %d id %#x\n", lfd, id);
+ if (st->st_size > (10 << 20)) {
+ pr_syslog("Dumping the ghost file %s (%"PRIu64" bytes)\n", path, st->st_size);
+ }
+
if (st->st_size > opts.ghost_limit) {
pr_err("Can't dump ghost file %s of %"PRIu64" size, increase limit\n",
path, st->st_size);
diff --git a/criu/include/cr-syslog.h b/criu/include/cr-syslog.h
new file mode 100644
index 0000000..c04b1ed
--- /dev/null
+++ b/criu/include/cr-syslog.h
@@ -0,0 +1,12 @@
+#ifndef __CR_SYSLOG_H__
+#define __CR_SYSLOG_H__
+
+/*
+ * pr_syslog can't be added into log.h, because LOG_* constants
+ * are defined in criu and in <syslog.h>.
+ */
+
+extern void pr_syslog(const char *format, ...);
+
+#endif
+
diff --git a/criu/include/log.h b/criu/include/log.h
index 9c4c283..f6b9ec2 100644
--- a/criu/include/log.h
+++ b/criu/include/log.h
@@ -3,6 +3,8 @@
#include <inttypes.h>
+#include "cr-syslog.h"
+
#ifndef CR_NOGLIBC
#include <string.h>
diff --git a/criu/syslog.c b/criu/syslog.c
new file mode 100644
index 0000000..accefc2
--- /dev/null
+++ b/criu/syslog.c
@@ -0,0 +1,19 @@
+#include <syslog.h>
+#include <stdarg.h>
+
+#include "cr-syslog.h"
+
+void pr_syslog(const char *format, ...)
+{
+ static int open = 0;
+ va_list params;
+
+ if (!open) {
+ open = 1;
+ openlog("criu", LOG_PID, LOG_DAEMON);
+ }
+
+ va_start(params, format);
+ vsyslog(LOG_NOTICE, format, params);
+ va_end(params);
+}
--
1.8.3.1
More information about the Devel
mailing list