All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCHv2 0/3] scsi trace updates
@ 2016-03-24 14:21 Hannes Reinecke
  2016-03-24 14:21 ` [PATCHv2 1/3] scsi-trace: remove service action definitions Hannes Reinecke
                   ` (3 more replies)
  0 siblings, 4 replies; 6+ messages in thread
From: Hannes Reinecke @ 2016-03-24 14:21 UTC (permalink / raw)
  To: Martin K. Petersen
  Cc: Christoph Hellwig, James Bottomley, linux-scsi, Hannes Reinecke

Hi all,

here are some some small updates to scsi tracing; it fixes the
decoding for MAINTENANCE_IN and MAINTENANCE_OUT and adds definitions
for the new ZBC_IN and ZBC_OUT commands.

Changes to v1:
- Add reviewed-by tags
- use get_unaligned_be(32,64)

As usual, comments and reviews welcome.


Hannes Reinecke (3):
  scsi-trace: remove service action definitions
  scsi-trace: Decode MAINTENANCE_IN and MAINTENANCE_OUT commands
  scsi-trace: define ZBC_IN and ZBC_OUT

 drivers/scsi/scsi_trace.c   | 161 ++++++++++++++++++++++++++++++++++++++++++++
 include/scsi/scsi_proto.h   |   9 +++
 include/trace/events/scsi.h |   6 +-
 3 files changed, 172 insertions(+), 4 deletions(-)

-- 
1.8.5.6


^ permalink raw reply	[flat|nested] 6+ messages in thread

* [PATCHv2 1/3] scsi-trace: remove service action definitions
  2016-03-24 14:21 [PATCHv2 0/3] scsi trace updates Hannes Reinecke
@ 2016-03-24 14:21 ` Hannes Reinecke
  2016-03-24 14:21 ` [PATCHv2 2/3] scsi-trace: Decode MAINTENANCE_IN and MAINTENANCE_OUT commands Hannes Reinecke
                   ` (2 subsequent siblings)
  3 siblings, 0 replies; 6+ messages in thread
From: Hannes Reinecke @ 2016-03-24 14:21 UTC (permalink / raw)
  To: Martin K. Petersen
  Cc: Christoph Hellwig, James Bottomley, linux-scsi, Hannes Reinecke,
	Hannes Reinecke

scsi_opcode_name() is displaying the opcode, not the service
action.

Reviewed-by: Ewan D. Milne <emilne@redhat.com>
Signed-off-by: Hannes Reinecke <hare@suse.com>
---
 include/trace/events/scsi.h | 4 ----
 1 file changed, 4 deletions(-)

diff --git a/include/trace/events/scsi.h b/include/trace/events/scsi.h
index 079bd10..5c0d91f 100644
--- a/include/trace/events/scsi.h
+++ b/include/trace/events/scsi.h
@@ -95,10 +95,6 @@
 		scsi_opcode_name(VERIFY_16),			\
 		scsi_opcode_name(WRITE_SAME_16),		\
 		scsi_opcode_name(SERVICE_ACTION_IN_16),		\
-		scsi_opcode_name(SAI_READ_CAPACITY_16),		\
-		scsi_opcode_name(SAI_GET_LBA_STATUS),		\
-		scsi_opcode_name(MI_REPORT_TARGET_PGS),		\
-		scsi_opcode_name(MO_SET_TARGET_PGS),		\
 		scsi_opcode_name(READ_32),			\
 		scsi_opcode_name(WRITE_32),			\
 		scsi_opcode_name(WRITE_SAME_32),		\
-- 
1.8.5.6


^ permalink raw reply related	[flat|nested] 6+ messages in thread

* [PATCHv2 2/3] scsi-trace: Decode MAINTENANCE_IN and MAINTENANCE_OUT commands
  2016-03-24 14:21 [PATCHv2 0/3] scsi trace updates Hannes Reinecke
  2016-03-24 14:21 ` [PATCHv2 1/3] scsi-trace: remove service action definitions Hannes Reinecke
@ 2016-03-24 14:21 ` Hannes Reinecke
  2016-03-24 14:21 ` [PATCHv2 3/3] scsi-trace: define ZBC_IN and ZBC_OUT Hannes Reinecke
  2016-03-29  0:32 ` [PATCHv2 0/3] scsi trace updates Martin K. Petersen
  3 siblings, 0 replies; 6+ messages in thread
From: Hannes Reinecke @ 2016-03-24 14:21 UTC (permalink / raw)
  To: Martin K. Petersen
  Cc: Christoph Hellwig, James Bottomley, linux-scsi, Hannes Reinecke,
	Hannes Reinecke

Reviewed-by: Ewan D. Milne <emilne@redhat.com>
Signed-off-by: Hannes Reinecke <hare@suse.com>
---
 drivers/scsi/scsi_trace.c | 91 +++++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 91 insertions(+)

diff --git a/drivers/scsi/scsi_trace.c b/drivers/scsi/scsi_trace.c
index 08bb47b..1d43888 100644
--- a/drivers/scsi/scsi_trace.c
+++ b/drivers/scsi/scsi_trace.c
@@ -17,6 +17,7 @@
  */
 #include <linux/kernel.h>
 #include <linux/trace_seq.h>
+#include <asm/unaligned.h>
 #include <trace/events/scsi.h>
 
 #define SERVICE_ACTION16(cdb) (cdb[1] & 0x1f)
@@ -231,6 +232,92 @@ out:
 }
 
 static const char *
+scsi_trace_maintenance_in(struct trace_seq *p, unsigned char *cdb, int len)
+{
+	const char *ret = trace_seq_buffer_ptr(p), *cmd;
+	u32 alloc_len;
+
+	switch (SERVICE_ACTION16(cdb)) {
+	case MI_REPORT_IDENTIFYING_INFORMATION:
+		cmd = "REPORT_IDENTIFYING_INFORMATION";
+		break;
+	case MI_REPORT_TARGET_PGS:
+		cmd = "REPORT_TARGET_PORT_GROUPS";
+		break;
+	case MI_REPORT_ALIASES:
+		cmd = "REPORT_ALIASES";
+		break;
+	case MI_REPORT_SUPPORTED_OPERATION_CODES:
+		cmd = "REPORT_SUPPORTED_OPERATION_CODES";
+		break;
+	case MI_REPORT_SUPPORTED_TASK_MANAGEMENT_FUNCTIONS:
+		cmd = "REPORT_SUPPORTED_TASK_MANAGEMENT_FUNCTIONS";
+		break;
+	case MI_REPORT_PRIORITY:
+		cmd = "REPORT_PRIORITY";
+		break;
+	case MI_REPORT_TIMESTAMP:
+		cmd = "REPORT_TIMESTAMP";
+		break;
+	case MI_MANAGEMENT_PROTOCOL_IN:
+		cmd = "MANAGEMENT_PROTOCOL_IN";
+		break;
+	default:
+		trace_seq_puts(p, "UNKNOWN");
+		goto out;
+	}
+
+	alloc_len = get_unaligned_be32(&cdb[6]);
+
+	trace_seq_printf(p, "%s alloc_len=%u", cmd, alloc_len);
+
+out:
+	trace_seq_putc(p, 0);
+
+	return ret;
+}
+
+static const char *
+scsi_trace_maintenance_out(struct trace_seq *p, unsigned char *cdb, int len)
+{
+	const char *ret = trace_seq_buffer_ptr(p), *cmd;
+	u32 alloc_len;
+
+	switch (SERVICE_ACTION16(cdb)) {
+	case MO_SET_IDENTIFYING_INFORMATION:
+		cmd = "SET_IDENTIFYING_INFORMATION";
+		break;
+	case MO_SET_TARGET_PGS:
+		cmd = "SET_TARGET_PORT_GROUPS";
+		break;
+	case MO_CHANGE_ALIASES:
+		cmd = "CHANGE_ALIASES";
+		break;
+	case MO_SET_PRIORITY:
+		cmd = "SET_PRIORITY";
+		break;
+	case MO_SET_TIMESTAMP:
+		cmd = "SET_TIMESTAMP";
+		break;
+	case MO_MANAGEMENT_PROTOCOL_OUT:
+		cmd = "MANAGEMENT_PROTOCOL_OUT";
+		break;
+	default:
+		trace_seq_puts(p, "UNKNOWN");
+		goto out;
+	}
+
+	alloc_len = get_unaligned_be32(&cdb[6]);
+
+	trace_seq_printf(p, "%s alloc_len=%u", cmd, alloc_len);
+
+out:
+	trace_seq_putc(p, 0);
+
+	return ret;
+}
+
+static const char *
 scsi_trace_varlen(struct trace_seq *p, unsigned char *cdb, int len)
 {
 	switch (SERVICE_ACTION32(cdb)) {
@@ -282,6 +369,10 @@ scsi_trace_parse_cdb(struct trace_seq *p, unsigned char *cdb, int len)
 		return scsi_trace_service_action_in(p, cdb, len);
 	case VARIABLE_LENGTH_CMD:
 		return scsi_trace_varlen(p, cdb, len);
+	case MAINTENANCE_IN:
+		return scsi_trace_maintenance_in(p, cdb, len);
+	case MAINTENANCE_OUT:
+		return scsi_trace_maintenance_out(p, cdb, len);
 	default:
 		return scsi_trace_misc(p, cdb, len);
 	}
-- 
1.8.5.6


^ permalink raw reply related	[flat|nested] 6+ messages in thread

* [PATCHv2 3/3] scsi-trace: define ZBC_IN and ZBC_OUT
  2016-03-24 14:21 [PATCHv2 0/3] scsi trace updates Hannes Reinecke
  2016-03-24 14:21 ` [PATCHv2 1/3] scsi-trace: remove service action definitions Hannes Reinecke
  2016-03-24 14:21 ` [PATCHv2 2/3] scsi-trace: Decode MAINTENANCE_IN and MAINTENANCE_OUT commands Hannes Reinecke
@ 2016-03-24 14:21 ` Hannes Reinecke
  2016-03-24 15:05   ` Douglas Gilbert
  2016-03-29  0:32 ` [PATCHv2 0/3] scsi trace updates Martin K. Petersen
  3 siblings, 1 reply; 6+ messages in thread
From: Hannes Reinecke @ 2016-03-24 14:21 UTC (permalink / raw)
  To: Martin K. Petersen
  Cc: Christoph Hellwig, James Bottomley, linux-scsi, Hannes Reinecke,
	Hannes Reinecke

Add new trace functions for ZBC_IN and ZBC_OUT.

Reviewed-by: Ewan D. Milne <emilne@redhat.com>
Signed-off-by: Hannes Reinecke <hare@suse.com>
---
 drivers/scsi/scsi_trace.c   | 70 +++++++++++++++++++++++++++++++++++++++++++++
 include/scsi/scsi_proto.h   |  9 ++++++
 include/trace/events/scsi.h |  2 ++
 3 files changed, 81 insertions(+)

diff --git a/drivers/scsi/scsi_trace.c b/drivers/scsi/scsi_trace.c
index 1d43888..d9777aa 100644
--- a/drivers/scsi/scsi_trace.c
+++ b/drivers/scsi/scsi_trace.c
@@ -318,6 +318,72 @@ out:
 }
 
 static const char *
+scsi_trace_zbc_in(struct trace_seq *p, unsigned char *cdb, int len)
+{
+	const char *ret = trace_seq_buffer_ptr(p), *cmd;
+	u64 zone_id;
+	u32 alloc_len;
+	u8 options;
+
+	switch (SERVICE_ACTION16(cdb)) {
+	case ZI_REPORT_ZONES:
+		cmd = "REPORT_ZONES";
+		break;
+	default:
+		trace_seq_puts(p, "UNKNOWN");
+		goto out;
+	}
+
+	zone_id = get_unaligned_be64(&cdb[2]);
+	alloc_len = get_unaligned_be32(&cdb[10]);
+	options = cdb[14] & 0x3f;
+
+	trace_seq_printf(p, "%s zone=%llu alloc_len=%u options=%u partial=%u",
+			 cmd, (unsigned long long)zone_id, alloc_len,
+			 options, (cdb[14] >> 7) & 1);
+
+out:
+	trace_seq_putc(p, 0);
+
+	return ret;
+}
+
+static const char *
+scsi_trace_zbc_out(struct trace_seq *p, unsigned char *cdb, int len)
+{
+	const char *ret = trace_seq_buffer_ptr(p), *cmd;
+	u64 zone_id;
+
+	switch (SERVICE_ACTION16(cdb)) {
+	case ZO_CLOSE_ZONE:
+		cmd = "CLOSE_ZONE";
+		break;
+	case ZO_FINISH_ZONE:
+		cmd = "FINISH_ZONE";
+		break;
+	case ZO_OPEN_ZONE:
+		cmd = "OPEN_ZONE";
+		break;
+	case ZO_RESET_WRITE_POINTER:
+		cmd = "RESET_WRITE_POINTER";
+		break;
+	default:
+		trace_seq_puts(p, "UNKNOWN");
+		goto out;
+	}
+
+	zone_id = get_unaligned_be64(&cdb[2]);
+
+	trace_seq_printf(p, "%s zone=%llu all=%u", cmd,
+			 (unsigned long long)zone_id, cdb[14] & 1);
+
+out:
+	trace_seq_putc(p, 0);
+
+	return ret;
+}
+
+static const char *
 scsi_trace_varlen(struct trace_seq *p, unsigned char *cdb, int len)
 {
 	switch (SERVICE_ACTION32(cdb)) {
@@ -373,6 +439,10 @@ scsi_trace_parse_cdb(struct trace_seq *p, unsigned char *cdb, int len)
 		return scsi_trace_maintenance_in(p, cdb, len);
 	case MAINTENANCE_OUT:
 		return scsi_trace_maintenance_out(p, cdb, len);
+	case ZBC_IN:
+		return scsi_trace_zbc_in(p, cdb, len);
+	case ZBC_OUT:
+		return scsi_trace_zbc_out(p, cdb, len);
 	default:
 		return scsi_trace_misc(p, cdb, len);
 	}
diff --git a/include/scsi/scsi_proto.h b/include/scsi/scsi_proto.h
index c2ae21c..086bff9 100644
--- a/include/scsi/scsi_proto.h
+++ b/include/scsi/scsi_proto.h
@@ -115,6 +115,8 @@
 #define VERIFY_16	      0x8f
 #define SYNCHRONIZE_CACHE_16  0x91
 #define WRITE_SAME_16	      0x93
+#define ZBC_OUT		      0x94
+#define ZBC_IN		      0x95
 #define SERVICE_ACTION_BIDIRECTIONAL 0x9d
 #define SERVICE_ACTION_IN_16  0x9e
 #define SERVICE_ACTION_OUT_16 0x9f
@@ -143,6 +145,13 @@
 #define MO_SET_PRIORITY       0x0e
 #define MO_SET_TIMESTAMP      0x0f
 #define MO_MANAGEMENT_PROTOCOL_OUT 0x10
+/* values for ZBC_IN */
+#define ZI_REPORT_ZONES	      0x00
+/* values for ZBC_OUT */
+#define ZO_CLOSE_ZONE	      0x01
+#define ZO_OPEN_ZONE	      0x02
+#define ZO_FINISH_ZONE	      0x03
+#define ZO_RESET_WRITE_POINTER 0x04
 /* values for variable length command */
 #define XDREAD_32	      0x03
 #define XDWRITE_32	      0x04
diff --git a/include/trace/events/scsi.h b/include/trace/events/scsi.h
index 5c0d91f..9a9b3e2 100644
--- a/include/trace/events/scsi.h
+++ b/include/trace/events/scsi.h
@@ -94,6 +94,8 @@
 		scsi_opcode_name(WRITE_16),			\
 		scsi_opcode_name(VERIFY_16),			\
 		scsi_opcode_name(WRITE_SAME_16),		\
+		scsi_opcode_name(ZBC_OUT),			\
+		scsi_opcode_name(ZBC_IN),			\
 		scsi_opcode_name(SERVICE_ACTION_IN_16),		\
 		scsi_opcode_name(READ_32),			\
 		scsi_opcode_name(WRITE_32),			\
-- 
1.8.5.6


^ permalink raw reply related	[flat|nested] 6+ messages in thread

* Re: [PATCHv2 3/3] scsi-trace: define ZBC_IN and ZBC_OUT
  2016-03-24 14:21 ` [PATCHv2 3/3] scsi-trace: define ZBC_IN and ZBC_OUT Hannes Reinecke
@ 2016-03-24 15:05   ` Douglas Gilbert
  0 siblings, 0 replies; 6+ messages in thread
From: Douglas Gilbert @ 2016-03-24 15:05 UTC (permalink / raw)
  To: Hannes Reinecke, Martin K. Petersen
  Cc: Christoph Hellwig, James Bottomley, linux-scsi, Hannes Reinecke

On 16-03-24 10:21 AM, Hannes Reinecke wrote:
> Add new trace functions for ZBC_IN and ZBC_OUT.
>
> Reviewed-by: Ewan D. Milne <emilne@redhat.com>
> Signed-off-by: Hannes Reinecke <hare@suse.com>
> ---
>   drivers/scsi/scsi_trace.c   | 70 +++++++++++++++++++++++++++++++++++++++++++++
>   include/scsi/scsi_proto.h   |  9 ++++++
>   include/trace/events/scsi.h |  2 ++
>   3 files changed, 81 insertions(+)
>
> diff --git a/drivers/scsi/scsi_trace.c b/drivers/scsi/scsi_trace.c
> index 1d43888..d9777aa 100644
> --- a/drivers/scsi/scsi_trace.c
> +++ b/drivers/scsi/scsi_trace.c
> @@ -318,6 +318,72 @@ out:
>   }
>
>   static const char *
> +scsi_trace_zbc_in(struct trace_seq *p, unsigned char *cdb, int len)
> +{
> +	const char *ret = trace_seq_buffer_ptr(p), *cmd;
> +	u64 zone_id;
> +	u32 alloc_len;
> +	u8 options;
> +
> +	switch (SERVICE_ACTION16(cdb)) {
> +	case ZI_REPORT_ZONES:
> +		cmd = "REPORT_ZONES";
> +		break;
> +	default:
> +		trace_seq_puts(p, "UNKNOWN");
> +		goto out;
> +	}
> +
> +	zone_id = get_unaligned_be64(&cdb[2]);
> +	alloc_len = get_unaligned_be32(&cdb[10]);
> +	options = cdb[14] & 0x3f;
> +
> +	trace_seq_printf(p, "%s zone=%llu alloc_len=%u options=%u partial=%u",
> +			 cmd, (unsigned long long)zone_id, alloc_len,
> +			 options, (cdb[14] >> 7) & 1);
> +
> +out:
> +	trace_seq_putc(p, 0);
> +
> +	return ret;
> +}
> +
> +static const char *
> +scsi_trace_zbc_out(struct trace_seq *p, unsigned char *cdb, int len)
> +{
> +	const char *ret = trace_seq_buffer_ptr(p), *cmd;
> +	u64 zone_id;
> +
> +	switch (SERVICE_ACTION16(cdb)) {
> +	case ZO_CLOSE_ZONE:
> +		cmd = "CLOSE_ZONE";
> +		break;
> +	case ZO_FINISH_ZONE:
> +		cmd = "FINISH_ZONE";
> +		break;
> +	case ZO_OPEN_ZONE:
> +		cmd = "OPEN_ZONE";
> +		break;
> +	case ZO_RESET_WRITE_POINTER:
> +		cmd = "RESET_WRITE_POINTER";
> +		break;
> +	default:
> +		trace_seq_puts(p, "UNKNOWN");
> +		goto out;
> +	}
> +
> +	zone_id = get_unaligned_be64(&cdb[2]);
> +
> +	trace_seq_printf(p, "%s zone=%llu all=%u", cmd,
> +			 (unsigned long long)zone_id, cdb[14] & 1);
> +
> +out:
> +	trace_seq_putc(p, 0);
> +
> +	return ret;
> +}
> +
> +static const char *
>   scsi_trace_varlen(struct trace_seq *p, unsigned char *cdb, int len)
>   {
>   	switch (SERVICE_ACTION32(cdb)) {
> @@ -373,6 +439,10 @@ scsi_trace_parse_cdb(struct trace_seq *p, unsigned char *cdb, int len)
>   		return scsi_trace_maintenance_in(p, cdb, len);
>   	case MAINTENANCE_OUT:
>   		return scsi_trace_maintenance_out(p, cdb, len);
> +	case ZBC_IN:
> +		return scsi_trace_zbc_in(p, cdb, len);
> +	case ZBC_OUT:
> +		return scsi_trace_zbc_out(p, cdb, len);
>   	default:
>   		return scsi_trace_misc(p, cdb, len);
>   	}
> diff --git a/include/scsi/scsi_proto.h b/include/scsi/scsi_proto.h
> index c2ae21c..086bff9 100644
> --- a/include/scsi/scsi_proto.h
> +++ b/include/scsi/scsi_proto.h
> @@ -115,6 +115,8 @@
>   #define VERIFY_16	      0x8f
>   #define SYNCHRONIZE_CACHE_16  0x91
>   #define WRITE_SAME_16	      0x93
> +#define ZBC_OUT		      0x94
> +#define ZBC_IN		      0x95
>   #define SERVICE_ACTION_BIDIRECTIONAL 0x9d
>   #define SERVICE_ACTION_IN_16  0x9e
>   #define SERVICE_ACTION_OUT_16 0x9f
> @@ -143,6 +145,13 @@
>   #define MO_SET_PRIORITY       0x0e
>   #define MO_SET_TIMESTAMP      0x0f
>   #define MO_MANAGEMENT_PROTOCOL_OUT 0x10
> +/* values for ZBC_IN */
> +#define ZI_REPORT_ZONES	      0x00
> +/* values for ZBC_OUT */
> +#define ZO_CLOSE_ZONE	      0x01
> +#define ZO_OPEN_ZONE	      0x02

s/0x02/0x03/

Reading the opcode/service actions from zbc-r05.pdf:
   CLOSE ZONE          94h/01h
   FINISH ZONE         94h/02h
   OPEN ZONE           94h/03h
   REPORT ZONES        95h/00h
   RESET WRITE POINTER 94h/04h

> +#define ZO_FINISH_ZONE	      0x03

s/0x03/0x02/


Thereafter:

Reviewed-by: Douglas Gilbert <dgilbert@interlog.com>

> +#define ZO_RESET_WRITE_POINTER 0x04
>   /* values for variable length command */
>   #define XDREAD_32	      0x03
>   #define XDWRITE_32	      0x04
> diff --git a/include/trace/events/scsi.h b/include/trace/events/scsi.h
> index 5c0d91f..9a9b3e2 100644
> --- a/include/trace/events/scsi.h
> +++ b/include/trace/events/scsi.h
> @@ -94,6 +94,8 @@
>   		scsi_opcode_name(WRITE_16),			\
>   		scsi_opcode_name(VERIFY_16),			\
>   		scsi_opcode_name(WRITE_SAME_16),		\
> +		scsi_opcode_name(ZBC_OUT),			\
> +		scsi_opcode_name(ZBC_IN),			\
>   		scsi_opcode_name(SERVICE_ACTION_IN_16),		\
>   		scsi_opcode_name(READ_32),			\
>   		scsi_opcode_name(WRITE_32),			\
>


^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [PATCHv2 0/3] scsi trace updates
  2016-03-24 14:21 [PATCHv2 0/3] scsi trace updates Hannes Reinecke
                   ` (2 preceding siblings ...)
  2016-03-24 14:21 ` [PATCHv2 3/3] scsi-trace: define ZBC_IN and ZBC_OUT Hannes Reinecke
@ 2016-03-29  0:32 ` Martin K. Petersen
  3 siblings, 0 replies; 6+ messages in thread
From: Martin K. Petersen @ 2016-03-29  0:32 UTC (permalink / raw)
  To: Hannes Reinecke
  Cc: Martin K. Petersen, Christoph Hellwig, James Bottomley, linux-scsi

>>>>> "Hannes" == Hannes Reinecke <hare@suse.de> writes:

Hannes> here are some some small updates to scsi tracing; it fixes the
Hannes> decoding for MAINTENANCE_IN and MAINTENANCE_OUT and adds
Hannes> definitions for the new ZBC_IN and ZBC_OUT commands.

Applied to 4.7/scsi-queue.

-- 
Martin K. Petersen	Oracle Linux Engineering

^ permalink raw reply	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2016-03-29  0:32 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2016-03-24 14:21 [PATCHv2 0/3] scsi trace updates Hannes Reinecke
2016-03-24 14:21 ` [PATCHv2 1/3] scsi-trace: remove service action definitions Hannes Reinecke
2016-03-24 14:21 ` [PATCHv2 2/3] scsi-trace: Decode MAINTENANCE_IN and MAINTENANCE_OUT commands Hannes Reinecke
2016-03-24 14:21 ` [PATCHv2 3/3] scsi-trace: define ZBC_IN and ZBC_OUT Hannes Reinecke
2016-03-24 15:05   ` Douglas Gilbert
2016-03-29  0:32 ` [PATCHv2 0/3] scsi trace updates Martin K. Petersen

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.