mirror of
https://github.com/lkl/linux.git
synced 2025-12-19 16:13:19 +09:00
nvmet: add set feature tracing support
A nvme connect command produces following trace from the target side.
Before:
kworker/0:1H-56 [000] .... 9012.155139: nvmet_req_init: nvmet1: qid=0, cmdid=16, nsid=0, flags=0x40, meta=0x0, cmd=(nvme_admin_set_features, cdw10=07 00 00 00 07 00 07 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00)
kworker/0:1H-56 [000] .... 9012.872272: nvmet_req_init: nvmet1: qid=0, cmdid=13, nsid=0, flags=0x40, meta=0x0, cmd=(nvme_admin_set_features, cdw10=0b 00 00 00 00 09 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00)
cmdline:/sys/kernel/debug/tracing# cat trace | grep feature
kworker/0:1H-56 [000] .... 203.493914: nvmet_req_init: nvmet1: qid=0, cmdid=29, nsid=0, flags=0x40, meta=0x0, cmd=(nvme_admin_set_features, fid=0x7, sv=0x0, cdw11=0x70007)
kworker/0:1H-56 [000] .... 204.197079: nvmet_req_init: nvmet1: qid=0, cmdid=29, nsid=0, flags=0x40, meta=0x0, cmd=(nvme_admin_set_features, fid=0xb, sv=0x0, cdw11=0x900)
Using ',' to separate different field like others in
nvmet_trace_admin_get_features.
Signed-off-by: Hou Pu <houpu.main@gmail.com>
Signed-off-by: Christoph Hellwig <hch@lst.de>
This commit is contained in:
committed by
Christoph Hellwig
parent
a7b5e8d864
commit
8d84f9de69
@@ -27,7 +27,7 @@ static const char *nvmet_trace_admin_get_features(struct trace_seq *p,
|
|||||||
u8 sel = cdw10[1] & 0x7;
|
u8 sel = cdw10[1] & 0x7;
|
||||||
u32 cdw11 = get_unaligned_le32(cdw10 + 4);
|
u32 cdw11 = get_unaligned_le32(cdw10 + 4);
|
||||||
|
|
||||||
trace_seq_printf(p, "fid=0x%x sel=0x%x cdw11=0x%x", fid, sel, cdw11);
|
trace_seq_printf(p, "fid=0x%x, sel=0x%x, cdw11=0x%x", fid, sel, cdw11);
|
||||||
trace_seq_putc(p, 0);
|
trace_seq_putc(p, 0);
|
||||||
|
|
||||||
return ret;
|
return ret;
|
||||||
@@ -49,6 +49,20 @@ static const char *nvmet_trace_get_lba_status(struct trace_seq *p,
|
|||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static const char *nvmet_trace_admin_set_features(struct trace_seq *p,
|
||||||
|
u8 *cdw10)
|
||||||
|
{
|
||||||
|
const char *ret = trace_seq_buffer_ptr(p);
|
||||||
|
u8 fid = cdw10[0];
|
||||||
|
u8 sv = cdw10[3] & 0x8;
|
||||||
|
u32 cdw11 = get_unaligned_le32(cdw10 + 4);
|
||||||
|
|
||||||
|
trace_seq_printf(p, "fid=0x%x, sv=0x%x, cdw11=0x%x", fid, sv, cdw11);
|
||||||
|
trace_seq_putc(p, 0);
|
||||||
|
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
static const char *nvmet_trace_read_write(struct trace_seq *p, u8 *cdw10)
|
static const char *nvmet_trace_read_write(struct trace_seq *p, u8 *cdw10)
|
||||||
{
|
{
|
||||||
const char *ret = trace_seq_buffer_ptr(p);
|
const char *ret = trace_seq_buffer_ptr(p);
|
||||||
@@ -94,6 +108,8 @@ const char *nvmet_trace_parse_admin_cmd(struct trace_seq *p,
|
|||||||
switch (opcode) {
|
switch (opcode) {
|
||||||
case nvme_admin_identify:
|
case nvme_admin_identify:
|
||||||
return nvmet_trace_admin_identify(p, cdw10);
|
return nvmet_trace_admin_identify(p, cdw10);
|
||||||
|
case nvme_admin_set_features:
|
||||||
|
return nvmet_trace_admin_set_features(p, cdw10);
|
||||||
case nvme_admin_get_features:
|
case nvme_admin_get_features:
|
||||||
return nvmet_trace_admin_get_features(p, cdw10);
|
return nvmet_trace_admin_get_features(p, cdw10);
|
||||||
case nvme_admin_get_lba_status:
|
case nvme_admin_get_lba_status:
|
||||||
|
|||||||
Reference in New Issue
Block a user