From 8214b94c8fd3fdbe50299b2c18766cc2c46546d8 Mon Sep 17 00:00:00 2001 From: Alessandro Rubini <rubini@gnudd.com> Date: Wed, 23 Nov 2011 18:29:52 +0100 Subject: [PATCH] zio-dump: check ZIO version Signed-off-by: Alessandro Rubini <rubini@gnudd.com> Acked-by: Federico Vaga <federico.vaga@gmail.com> --- zio-dump.c | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/zio-dump.c b/zio-dump.c index 2964421..317a8c3 100644 --- a/zio-dump.c +++ b/zio-dump.c @@ -20,6 +20,7 @@ char *prgname; void read_channel(int cfd, int dfd, FILE *log) { + int err = 0; struct zio_control ctrl; int i, j; @@ -41,6 +42,26 @@ void read_channel(int cfd, int dfd, FILE *log) break; /* ok */ } + /* Fail badly if the version is not the right one */ + if (ctrl.major_version != ZIO_MAJOR_VERSION) + err++; + if (ZIO_MAJOR_VERSION == 0 && ctrl.minor_version != ZIO_MINOR_VERSION) + err++; + if (err) { + fprintf(stderr, "%s: kernel has zio %i.%i, " + "but I'm compiled for %i.%i\n", prgname, + ctrl.major_version, ctrl.minor_version, + ZIO_MAJOR_VERSION, ZIO_MINOR_VERSION); + exit(1); + } + if (ctrl.minor_version != ZIO_MINOR_VERSION) { + static int warned; + + if (!warned++) + fprintf(stderr, "%s: warning: minor version mismatch\n", + prgname); + } + printf("Ctrl: version %i.%i, trigger %.16s, dev %.16s, " "cset %i, chan %i\n", ctrl.major_version, ctrl.minor_version, -- GitLab