Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

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>

authored by

Hou Pu and committed by
Christoph Hellwig
8d84f9de a7b5e8d8

+17 -1
+17 -1
drivers/nvme/target/trace.c
··· 27 27 u8 sel = cdw10[1] & 0x7; 28 28 u32 cdw11 = get_unaligned_le32(cdw10 + 4); 29 29 30 - trace_seq_printf(p, "fid=0x%x sel=0x%x cdw11=0x%x", fid, sel, cdw11); 30 + trace_seq_printf(p, "fid=0x%x, sel=0x%x, cdw11=0x%x", fid, sel, cdw11); 31 31 trace_seq_putc(p, 0); 32 32 33 33 return ret; ··· 44 44 45 45 trace_seq_printf(p, "slba=0x%llx, mndw=0x%x, rl=0x%x, atype=%u", 46 46 slba, mndw, rl, atype); 47 + trace_seq_putc(p, 0); 48 + 49 + return ret; 50 + } 51 + 52 + static const char *nvmet_trace_admin_set_features(struct trace_seq *p, 53 + u8 *cdw10) 54 + { 55 + const char *ret = trace_seq_buffer_ptr(p); 56 + u8 fid = cdw10[0]; 57 + u8 sv = cdw10[3] & 0x8; 58 + u32 cdw11 = get_unaligned_le32(cdw10 + 4); 59 + 60 + trace_seq_printf(p, "fid=0x%x, sv=0x%x, cdw11=0x%x", fid, sv, cdw11); 47 61 trace_seq_putc(p, 0); 48 62 49 63 return ret; ··· 108 94 switch (opcode) { 109 95 case nvme_admin_identify: 110 96 return nvmet_trace_admin_identify(p, cdw10); 97 + case nvme_admin_set_features: 98 + return nvmet_trace_admin_set_features(p, cdw10); 111 99 case nvme_admin_get_features: 112 100 return nvmet_trace_admin_get_features(p, cdw10); 113 101 case nvme_admin_get_lba_status: