[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <20250925150427.67394-11-johannes.thumshirn@wdc.com>
Date: Thu, 25 Sep 2025 17:04:15 +0200
From: Johannes Thumshirn <johannes.thumshirn@....com>
To: Jens Axboe <axboe@...nel.dk>
Cc: Steven Rostedt <rostedt@...dmis.org>,
Masami Hiramatsu <mhiramat@...nel.org>,
Mathieu Desnoyers <mathieu.desnoyers@...icios.com>,
linux-block@...r.kernel.org,
linux-kernel@...r.kernel.org,
linux-trace-kernel@...r.kernel.org,
linux-btrace@...r.kernel.org,
John Garry <john.g.garry@...cle.com>,
Hannes Reinecke <hare@...e.de>,
Damien Le Moal <dlemoal@...nel.org>,
Christoph Hellwig <hch@....de>,
Naohiro Aota <naohiro.aota@....com>,
Shinichiro Kawasaki <shinichiro.kawasaki@....com>,
Chaitanya Kulkarni <chaitanyak@...dia.com>,
"Martin K . Petersen" <martin.petersen@...cle.com>,
Johannes Thumshirn <johannes.thumshirn@....com>
Subject: [PATCH blktrace v2 10/22] blkparse: skip unsupported protocol versions
Skip unsupported protocol versions for now.
Signed-off-by: Johannes Thumshirn <johannes.thumshirn@....com>
---
blkparse.c | 136 ++++++++++++++++++++++++++++++-----------------------
1 file changed, 76 insertions(+), 60 deletions(-)
diff --git a/blkparse.c b/blkparse.c
index 2e175b8..163da73 100644
--- a/blkparse.c
+++ b/blkparse.c
@@ -2462,10 +2462,10 @@ static int read_events(int fd, int always_block, int *fdblock)
unsigned int events = 0;
while (!is_done() && events < rb_batch) {
- struct blk_io_trace *bit;
struct trace *t;
int should_block, ret;
__u32 magic;
+ u8 version;
should_block = !events || always_block;
@@ -2489,42 +2489,50 @@ static int read_events(int fd, int always_block, int *fdblock)
fprintf(stderr, "Bad magic %x\n", magic);
break;
}
+ version = magic & 0xff;
+ if (version == SUPPORTED_VERSION) {
+ struct blk_io_trace *bit;
+ bit = bit_alloc();
+ bit->magic = magic;
- bit = bit_alloc();
- bit->magic = magic;
+ ret = read_one_bit(fd, bit, 1, fdblock);
+ if (ret)
+ break;
- ret = read_one_bit(fd, bit, 1, fdblock);
- if (ret)
- break;
+ /*
+ * not a real trace, so grab and handle it here
+ */
+ if (bit->action & BLK_TC_ACT(BLK_TC_NOTIFY) &&
+ (bit->action & ~__BLK_TN_CGROUP) != BLK_TN_MESSAGE) {
+ handle_notify(bit);
+ output_binary(bit, sizeof(*bit) + bit->pdu_len);
+ continue;
+ }
- if (verify_trace(bit)) {
- bit_free(bit);
- bit = NULL;
- continue;
- }
+ if (verify_trace(bit)) {
+ bit_free(bit);
+ bit = NULL;
+ continue;
+ }
- /*
- * not a real trace, so grab and handle it here
- */
- if (bit->action & BLK_TC_ACT(BLK_TC_NOTIFY) && (bit->action & ~__BLK_TN_CGROUP) != BLK_TN_MESSAGE) {
- handle_notify(bit);
- output_binary(bit, sizeof(*bit) + bit->pdu_len);
- continue;
- }
+ t = t_alloc();
+ memset(t, 0, sizeof(*t));
+ t->bit = bit;
+ t->read_sequence = read_sequence;
- t = t_alloc();
- memset(t, 0, sizeof(*t));
- t->bit = bit;
- t->read_sequence = read_sequence;
+ t->next = trace_list;
+ trace_list = t;
- t->next = trace_list;
- trace_list = t;
+ if (!pdi || pdi->dev != bit->device)
+ pdi = get_dev_info(bit->device);
- if (!pdi || pdi->dev != bit->device)
- pdi = get_dev_info(bit->device);
+ if (bit->time > pdi->last_read_time)
+ pdi->last_read_time = bit->time;
+ } else {
+ fprintf(stderr, "unsupported version %d\n", version);
+ continue;
+ }
- if (bit->time > pdi->last_read_time)
- pdi->last_read_time = bit->time;
events++;
}
@@ -2616,6 +2624,7 @@ static int ms_prime(struct ms_stream *msp)
int ret, ndone = 0;
for (i = 0; !is_done() && pci->fd >= 0 && i < rb_batch; i++) {
+ u8 version;
ret = read_data(pci->fd, &magic, sizeof(magic), 1,
&pci->fdblock);
@@ -2631,46 +2640,53 @@ static int ms_prime(struct ms_stream *msp)
goto err;
}
- bit = bit_alloc();
- bit->magic = magic;
+ version = magic & 0xff;
+ if (version == SUPPORTED_VERSION) {
+ bit = bit_alloc();
+ bit->magic = magic;
- ret = read_one_bit(pci->fd, bit, 1, &pci->fdblock);
- if (ret)
- goto err;
+ ret = read_one_bit(pci->fd, bit, 1, &pci->fdblock);
+ if (ret)
+ goto err;
- if (verify_trace(bit))
- goto err;
+ if (verify_trace(bit))
+ goto err;
- if (bit->cpu != pci->cpu) {
- fprintf(stderr, "cpu %d trace info has error cpu %d\n",
- pci->cpu, bit->cpu);
- continue;
- }
+ if (bit->cpu != pci->cpu) {
+ fprintf(stderr,
+ "cpu %d trace info has error cpu %d\n",
+ pci->cpu, bit->cpu);
+ continue;
+ }
- if (bit->action & BLK_TC_ACT(BLK_TC_NOTIFY) && (bit->action & ~__BLK_TN_CGROUP) != BLK_TN_MESSAGE) {
- handle_notify(bit);
- output_binary(bit, sizeof(*bit) + bit->pdu_len);
- bit_free(bit);
- bit = NULL;
+ if (bit->action & BLK_TC_ACT(BLK_TC_NOTIFY) &&
+ (bit->action & ~__BLK_TN_CGROUP) != BLK_TN_MESSAGE) {
+ handle_notify(bit);
+ output_binary(bit, sizeof(*bit) + bit->pdu_len);
+ bit_free(bit);
+ bit = NULL;
- i -= 1;
- continue;
- }
+ i -= 1;
+ continue;
+ }
- if (bit->time > pdi->last_read_time)
- pdi->last_read_time = bit->time;
+ if (bit->time > pdi->last_read_time)
+ pdi->last_read_time = bit->time;
- t = t_alloc();
- memset(t, 0, sizeof(*t));
- t->bit = bit;
+ t = t_alloc();
+ memset(t, 0, sizeof(*t));
+ t->bit = bit;
- if (msp->first == NULL)
- msp->first = msp->last = t;
- else {
- msp->last->next = t;
- msp->last = t;
+ if (msp->first == NULL)
+ msp->first = msp->last = t;
+ else {
+ msp->last->next = t;
+ msp->last = t;
+ }
+ } else {
+ fprintf(stderr, "unsupported version %d\n", version);
+ continue;
}
-
ndone++;
bit = NULL;
}
--
2.51.0
Powered by blists - more mailing lists