diff options
author | Hannes Reinecke <hare@suse.de> | 2016-03-24 12:23:56 -0400 |
---|---|---|
committer | Martin K. Petersen <martin.petersen@oracle.com> | 2016-04-11 16:57:09 -0400 |
commit | 0008f1e7230b16989f72042e44bc078e44a69536 (patch) | |
tree | b578f5e459da20824f23dc7465e7720a25f86c3f | |
parent | 5141f16a8a944f14e4b0348e8cd9e4dd1acb1a86 (diff) |
scsi-trace: define ZBC_IN and ZBC_OUT
Add new trace functions for ZBC_IN and ZBC_OUT.
Reviewed-by: Doug Gilbert <dgilbert@interlog.com>
Reviewed-by: Ewan D. Milne <emilne@redhat.com>
Signed-off-by: Hannes Reinecke <hare@suse.com>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
-rw-r--r-- | drivers/scsi/scsi_trace.c | 70 | ||||
-rw-r--r-- | include/scsi/scsi_proto.h | 9 | ||||
-rw-r--r-- | include/trace/events/scsi.h | 2 |
3 files changed, 81 insertions, 0 deletions
diff --git a/drivers/scsi/scsi_trace.c b/drivers/scsi/scsi_trace.c index 76d4e6fd9dc1..0ff083bbf5b1 100644 --- a/drivers/scsi/scsi_trace.c +++ b/drivers/scsi/scsi_trace.c | |||
@@ -318,6 +318,72 @@ out: | |||
318 | } | 318 | } |
319 | 319 | ||
320 | static const char * | 320 | static const char * |
321 | scsi_trace_zbc_in(struct trace_seq *p, unsigned char *cdb, int len) | ||
322 | { | ||
323 | const char *ret = trace_seq_buffer_ptr(p), *cmd; | ||
324 | u64 zone_id; | ||
325 | u32 alloc_len; | ||
326 | u8 options; | ||
327 | |||
328 | switch (SERVICE_ACTION16(cdb)) { | ||
329 | case ZI_REPORT_ZONES: | ||
330 | cmd = "REPORT_ZONES"; | ||
331 | break; | ||
332 | default: | ||
333 | trace_seq_puts(p, "UNKNOWN"); | ||
334 | goto out; | ||
335 | } | ||
336 | |||
337 | zone_id = get_unaligned_be64(&cdb[2]); | ||
338 | alloc_len = get_unaligned_be32(&cdb[10]); | ||
339 | options = cdb[14] & 0x3f; | ||
340 | |||
341 | trace_seq_printf(p, "%s zone=%llu alloc_len=%u options=%u partial=%u", | ||
342 | cmd, (unsigned long long)zone_id, alloc_len, | ||
343 | options, (cdb[14] >> 7) & 1); | ||
344 | |||
345 | out: | ||
346 | trace_seq_putc(p, 0); | ||
347 | |||
348 | return ret; | ||
349 | } | ||
350 | |||
351 | static const char * | ||
352 | scsi_trace_zbc_out(struct trace_seq *p, unsigned char *cdb, int len) | ||
353 | { | ||
354 | const char *ret = trace_seq_buffer_ptr(p), *cmd; | ||
355 | u64 zone_id; | ||
356 | |||
357 | switch (SERVICE_ACTION16(cdb)) { | ||
358 | case ZO_CLOSE_ZONE: | ||
359 | cmd = "CLOSE_ZONE"; | ||
360 | break; | ||
361 | case ZO_FINISH_ZONE: | ||
362 | cmd = "FINISH_ZONE"; | ||
363 | break; | ||
364 | case ZO_OPEN_ZONE: | ||
365 | cmd = "OPEN_ZONE"; | ||
366 | break; | ||
367 | case ZO_RESET_WRITE_POINTER: | ||
368 | cmd = "RESET_WRITE_POINTER"; | ||
369 | break; | ||
370 | default: | ||
371 | trace_seq_puts(p, "UNKNOWN"); | ||
372 | goto out; | ||
373 | } | ||
374 | |||
375 | zone_id = get_unaligned_be64(&cdb[2]); | ||
376 | |||
377 | trace_seq_printf(p, "%s zone=%llu all=%u", cmd, | ||
378 | (unsigned long long)zone_id, cdb[14] & 1); | ||
379 | |||
380 | out: | ||
381 | trace_seq_putc(p, 0); | ||
382 | |||
383 | return ret; | ||
384 | } | ||
385 | |||
386 | static const char * | ||
321 | scsi_trace_varlen(struct trace_seq *p, unsigned char *cdb, int len) | 387 | scsi_trace_varlen(struct trace_seq *p, unsigned char *cdb, int len) |
322 | { | 388 | { |
323 | switch (SERVICE_ACTION32(cdb)) { | 389 | switch (SERVICE_ACTION32(cdb)) { |
@@ -373,6 +439,10 @@ scsi_trace_parse_cdb(struct trace_seq *p, unsigned char *cdb, int len) | |||
373 | return scsi_trace_maintenance_in(p, cdb, len); | 439 | return scsi_trace_maintenance_in(p, cdb, len); |
374 | case MAINTENANCE_OUT: | 440 | case MAINTENANCE_OUT: |
375 | return scsi_trace_maintenance_out(p, cdb, len); | 441 | return scsi_trace_maintenance_out(p, cdb, len); |
442 | case ZBC_IN: | ||
443 | return scsi_trace_zbc_in(p, cdb, len); | ||
444 | case ZBC_OUT: | ||
445 | return scsi_trace_zbc_out(p, cdb, len); | ||
376 | default: | 446 | default: |
377 | return scsi_trace_misc(p, cdb, len); | 447 | return scsi_trace_misc(p, cdb, len); |
378 | } | 448 | } |
diff --git a/include/scsi/scsi_proto.h b/include/scsi/scsi_proto.h index c2ae21cbaa2c..d1defd1ebd95 100644 --- a/include/scsi/scsi_proto.h +++ b/include/scsi/scsi_proto.h | |||
@@ -115,6 +115,8 @@ | |||
115 | #define VERIFY_16 0x8f | 115 | #define VERIFY_16 0x8f |
116 | #define SYNCHRONIZE_CACHE_16 0x91 | 116 | #define SYNCHRONIZE_CACHE_16 0x91 |
117 | #define WRITE_SAME_16 0x93 | 117 | #define WRITE_SAME_16 0x93 |
118 | #define ZBC_OUT 0x94 | ||
119 | #define ZBC_IN 0x95 | ||
118 | #define SERVICE_ACTION_BIDIRECTIONAL 0x9d | 120 | #define SERVICE_ACTION_BIDIRECTIONAL 0x9d |
119 | #define SERVICE_ACTION_IN_16 0x9e | 121 | #define SERVICE_ACTION_IN_16 0x9e |
120 | #define SERVICE_ACTION_OUT_16 0x9f | 122 | #define SERVICE_ACTION_OUT_16 0x9f |
@@ -143,6 +145,13 @@ | |||
143 | #define MO_SET_PRIORITY 0x0e | 145 | #define MO_SET_PRIORITY 0x0e |
144 | #define MO_SET_TIMESTAMP 0x0f | 146 | #define MO_SET_TIMESTAMP 0x0f |
145 | #define MO_MANAGEMENT_PROTOCOL_OUT 0x10 | 147 | #define MO_MANAGEMENT_PROTOCOL_OUT 0x10 |
148 | /* values for ZBC_IN */ | ||
149 | #define ZI_REPORT_ZONES 0x00 | ||
150 | /* values for ZBC_OUT */ | ||
151 | #define ZO_CLOSE_ZONE 0x01 | ||
152 | #define ZO_FINISH_ZONE 0x02 | ||
153 | #define ZO_OPEN_ZONE 0x03 | ||
154 | #define ZO_RESET_WRITE_POINTER 0x04 | ||
146 | /* values for variable length command */ | 155 | /* values for variable length command */ |
147 | #define XDREAD_32 0x03 | 156 | #define XDREAD_32 0x03 |
148 | #define XDWRITE_32 0x04 | 157 | #define XDWRITE_32 0x04 |
diff --git a/include/trace/events/scsi.h b/include/trace/events/scsi.h index 5c0d91f16c74..9a9b3e2550af 100644 --- a/include/trace/events/scsi.h +++ b/include/trace/events/scsi.h | |||
@@ -94,6 +94,8 @@ | |||
94 | scsi_opcode_name(WRITE_16), \ | 94 | scsi_opcode_name(WRITE_16), \ |
95 | scsi_opcode_name(VERIFY_16), \ | 95 | scsi_opcode_name(VERIFY_16), \ |
96 | scsi_opcode_name(WRITE_SAME_16), \ | 96 | scsi_opcode_name(WRITE_SAME_16), \ |
97 | scsi_opcode_name(ZBC_OUT), \ | ||
98 | scsi_opcode_name(ZBC_IN), \ | ||
97 | scsi_opcode_name(SERVICE_ACTION_IN_16), \ | 99 | scsi_opcode_name(SERVICE_ACTION_IN_16), \ |
98 | scsi_opcode_name(READ_32), \ | 100 | scsi_opcode_name(READ_32), \ |
99 | scsi_opcode_name(WRITE_32), \ | 101 | scsi_opcode_name(WRITE_32), \ |