Skip to content

Commit 6a0164f

Browse files
guixinliu1995keithbusch
authored andcommitted
nvme: add tracing of reservation commands
Add detailed parsing of reservation commands to make the trace log more consistent and human-readable. Signed-off-by: Guixin Liu <[email protected]> Reviewed-by: Christoph Hellwig <[email protected]> Reviewed-by: Sagi Grimberg <[email protected]> Signed-off-by: Keith Busch <[email protected]>
1 parent 8d539f7 commit 6a0164f

File tree

1 file changed

+62
-0
lines changed

1 file changed

+62
-0
lines changed

drivers/nvme/host/trace.c

Lines changed: 62 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -223,6 +223,60 @@ static const char *nvme_trace_zone_mgmt_recv(struct trace_seq *p, u8 *cdw10)
223223
return ret;
224224
}
225225

226+
static const char *nvme_trace_resv_reg(struct trace_seq *p, u8 *cdw10)
227+
{
228+
const char *ret = trace_seq_buffer_ptr(p);
229+
u8 rrega = cdw10[0] & 0x7;
230+
u8 iekey = (cdw10[0] >> 3) & 0x1;
231+
u8 ptpl = (cdw10[3] >> 6) & 0x3;
232+
233+
trace_seq_printf(p, "rrega=%u, iekey=%u, ptpl=%u",
234+
rrega, iekey, ptpl);
235+
trace_seq_putc(p, 0);
236+
237+
return ret;
238+
}
239+
240+
static const char *nvme_trace_resv_acq(struct trace_seq *p, u8 *cdw10)
241+
{
242+
const char *ret = trace_seq_buffer_ptr(p);
243+
u8 racqa = cdw10[0] & 0x7;
244+
u8 iekey = (cdw10[0] >> 3) & 0x1;
245+
u8 rtype = cdw10[1];
246+
247+
trace_seq_printf(p, "racqa=%u, iekey=%u, rtype=%u",
248+
racqa, iekey, rtype);
249+
trace_seq_putc(p, 0);
250+
251+
return ret;
252+
}
253+
254+
static const char *nvme_trace_resv_rel(struct trace_seq *p, u8 *cdw10)
255+
{
256+
const char *ret = trace_seq_buffer_ptr(p);
257+
u8 rrela = cdw10[0] & 0x7;
258+
u8 iekey = (cdw10[0] >> 3) & 0x1;
259+
u8 rtype = cdw10[1];
260+
261+
trace_seq_printf(p, "rrela=%u, iekey=%u, rtype=%u",
262+
rrela, iekey, rtype);
263+
trace_seq_putc(p, 0);
264+
265+
return ret;
266+
}
267+
268+
static const char *nvme_trace_resv_report(struct trace_seq *p, u8 *cdw10)
269+
{
270+
const char *ret = trace_seq_buffer_ptr(p);
271+
u32 numd = get_unaligned_le32(cdw10);
272+
u8 eds = cdw10[4] & 0x1;
273+
274+
trace_seq_printf(p, "numd=%u, eds=%u", numd, eds);
275+
trace_seq_putc(p, 0);
276+
277+
return ret;
278+
}
279+
226280
static const char *nvme_trace_common(struct trace_seq *p, u8 *cdw10)
227281
{
228282
const char *ret = trace_seq_buffer_ptr(p);
@@ -275,6 +329,14 @@ const char *nvme_trace_parse_nvm_cmd(struct trace_seq *p,
275329
return nvme_trace_zone_mgmt_send(p, cdw10);
276330
case nvme_cmd_zone_mgmt_recv:
277331
return nvme_trace_zone_mgmt_recv(p, cdw10);
332+
case nvme_cmd_resv_register:
333+
return nvme_trace_resv_reg(p, cdw10);
334+
case nvme_cmd_resv_acquire:
335+
return nvme_trace_resv_acq(p, cdw10);
336+
case nvme_cmd_resv_release:
337+
return nvme_trace_resv_rel(p, cdw10);
338+
case nvme_cmd_resv_report:
339+
return nvme_trace_resv_report(p, cdw10);
278340
default:
279341
return nvme_trace_common(p, cdw10);
280342
}

0 commit comments

Comments
 (0)