Parse Zone Write Plugging plug and unplug actions in blkparse. Signed-off-by: Johannes Thumshirn --- blkparse.c | 7 +++++++ blkparse_fmt.c | 19 +++++++++++++++++++ blktrace_api.h | 2 ++ 3 files changed, 28 insertions(+) diff --git a/blkparse.c b/blkparse.c index e702356..1a372e5 100644 --- a/blkparse.c +++ b/blkparse.c @@ -1722,6 +1722,13 @@ static void dump_trace_fs(struct blk_io_trace2 *t, struct per_dev_info *pdi, account_unplug(t, pci, 1); log_unplug(pci, t, "UT"); break; + case __BLK_TA_ZONE_PLUG: + log_action(pci, t, "ZP"); + break; + case __BLK_TA_ZONE_UNPLUG: + account_unplug(t, pci, 0); + log_unplug(pci, t, "ZU"); + break; case __BLK_TA_SPLIT: log_track_split(pdi, t); log_split(pci, t, "X"); diff --git a/blkparse_fmt.c b/blkparse_fmt.c index f93addb..a5f721f 100644 --- a/blkparse_fmt.c +++ b/blkparse_fmt.c @@ -301,6 +301,22 @@ static char *parse_field(char *act, struct per_cpu_info *pci, return p; } +static void process_zoned(char *act, struct blk_io_trace2 *t, + unsigned long long elapsed, char *name) +{ + switch (act[1]) { + case 'P': /* Zone Plug */ + fprintf(ofp, "[%s]\n", name); + break; + case 'U': /* Zone Unplug */ + fprintf(ofp, "[%s] %u\n", name, get_pdu_int(t)); + break; + default: + fprintf(stderr, "Unknown zoned action %c\n", act[1]); + break; + } +} + static void process_default(char *act, struct per_cpu_info *pci, struct blk_io_trace2 *t, unsigned long long elapsed, int pdu_len, unsigned char *pdu_buf) @@ -429,6 +445,9 @@ static void process_default(char *act, struct per_cpu_info *pci, fprintf(ofp, "%*s\n", pdu_len, pdu_buf); break; + case 'Z': /* Zoned command */ + process_zoned(act, t, elapsed, name); + break; default: fprintf(stderr, "Unknown action %c\n", act[0]); break; diff --git a/blktrace_api.h b/blktrace_api.h index bbf075f..3966e1a 100644 --- a/blktrace_api.h +++ b/blktrace_api.h @@ -62,6 +62,8 @@ enum { __BLK_TA_REMAP, /* bio was remapped */ __BLK_TA_ABORT, /* request aborted */ __BLK_TA_DRV_DATA, /* binary driver data */ + __BLK_TA_ZONE_PLUG, /* zone write plug was plugged */ + __BLK_TA_ZONE_UNPLUG, /* zone write plug was unplugged */ __BLK_TA_ZONE_MGMT, /* zone management command was issued */ __BLK_TA_CGROUP = 1 << 8, }; -- 2.51.0