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


Reply via email to