Similar to blkparse, read the 'magic' portion of 'struct blk_io_trace' first when reading the trace.
This is a preparation of supporting multiple trace protocol versions. Signed-off-by: Johannes Thumshirn <johannes.thumsh...@wdc.com> --- blkiomon.c | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/blkiomon.c b/blkiomon.c index f8b0c9d..05f2d00 100644 --- a/blkiomon.c +++ b/blkiomon.c @@ -460,19 +460,28 @@ static int blkiomon_do_fifo(void) bit = &t->bit; while (up) { + __u32 magic; + + if (fread(&magic, sizeof(magic), 1, ifp) != 1) { + if (!feof(ifp)) + fprintf(stderr, + "blkiomon: could not read trace"); + break; + } if (fread(bit, sizeof(*bit), 1, ifp) != 1) { if (!feof(ifp)) fprintf(stderr, "blkiomon: could not read trace"); break; } + bit->magic = magic; if (ferror(ifp)) { clearerr(ifp); fprintf(stderr, "blkiomon: error while reading trace"); break; } - if (data_is_native == -1 && check_data_endianness(bit->magic)) { + if (data_is_native == -1 && check_data_endianness(magic)) { fprintf(stderr, "blkiomon: endianess problem\n"); break; } -- 2.51.0