[CRIU] [PATCH v3 3/8] stats: add a helper to get stats of parent pre-dump
Pavel Tikhomirov
ptikhomirov at virtuozzo.com
Sat Feb 17 08:24:40 MSK 2018
From: ptikhomirov <ptikhomirov at virtuozzo.com>
will be used in the next patch
https://jira.sw.ru/browse/PSBM-67502
note: actually we need only one value from stats entry but I still
prefer general helper as we still need to read and allocate memory
for the whole structure
v2: fix get_parent_stats to have static typing
v3: simplify get_parent_stats to return a StatsEntry pointer instead of
doing it through arguments
Signed-off-by: Pavel Tikhomirov <ptikhomirov at virtuozzo.com>
---
criu/include/stats.h | 4 ++++
criu/stats.c | 31 +++++++++++++++++++++++++++++++
2 files changed, 35 insertions(+)
diff --git a/criu/include/stats.h b/criu/include/stats.h
index 81775c8..14acdd5 100644
--- a/criu/include/stats.h
+++ b/criu/include/stats.h
@@ -1,6 +1,8 @@
#ifndef __CR_STATS_H__
#define __CR_STATS_H__
+#include "images/stats.pb-c.h"
+
enum {
TIME_FREEZING,
TIME_FROZEN,
@@ -23,6 +25,8 @@ extern void timing_start(int t);
extern void timing_stop(int t);
extern int timing_uptime(int t);
+extern StatsEntry *get_parent_stats(void);
+
enum {
CNT_PAGES_SCANNED,
CNT_PAGES_SKIPPED_PARENT,
diff --git a/criu/stats.c b/criu/stats.c
index 2944474..4823e48 100644
--- a/criu/stats.c
+++ b/criu/stats.c
@@ -213,6 +213,37 @@ void write_stats(int what)
display_stats(what, &stats);
}
+__maybe_unused StatsEntry *get_parent_stats(void)
+{
+ struct cr_img *img;
+ StatsEntry *se;
+ int dir;
+
+ dir = openat(get_service_fd(IMG_FD_OFF), CR_PARENT_LINK, O_RDONLY);
+ if (dir == -1) {
+ pr_perror("Failed to open parent directory");
+ return NULL;
+ }
+
+ img = open_image_at(dir, CR_FD_STATS, O_RSTR, "dump");
+ if (!img) {
+ pr_perror("Failed to open parent dump stats");
+ close(dir);
+ return NULL;
+ }
+
+ if (pb_read_one(img, &se, PB_STATS) < 0) {
+ pr_perror("Failed to read parent dump stats");
+ close_image(img);
+ close(dir);
+ return NULL;
+ }
+
+ close_image(img);
+ close(dir);
+ return se;
+}
+
int init_stats(int what)
{
if (what == DUMP_STATS) {
--
2.4.11
More information about the CRIU
mailing list