Parse zoned commands in blkparse. Signed-off-by: Johannes Thumshirn --- blkparse_fmt.c | 34 ++++++++++++++++++++++++++++++---- 1 file changed, 30 insertions(+), 4 deletions(-) diff --git a/blkparse_fmt.c b/blkparse_fmt.c index a5f721f..467c8c5 100644 --- a/blkparse_fmt.c +++ b/blkparse_fmt.c @@ -60,19 +60,45 @@ static inline void fill_rwbs(char *rwbs, struct blk_io_trace2 *t) bool d = !!(t->action & BLK_TC_ACT(BLK_TC_DISCARD)); bool f = !!(t->action & BLK_TC_ACT(BLK_TC_FLUSH)); bool u = !!(t->action & BLK_TC_ACT(BLK_TC_FUA)); + bool za = !!(t->action & BLK_TC_ACT2(BLK_TC_ZONE_APPEND)); + bool zr = !!(t->action & BLK_TC_ACT2(BLK_TC_ZONE_RESET)); + bool zra = !!(t->action & BLK_TC_ACT2(BLK_TC_ZONE_RESET_ALL)); + bool zf = !!(t->action & BLK_TC_ACT2(BLK_TC_ZONE_FINISH)); + bool zo = !!(t->action & BLK_TC_ACT2(BLK_TC_ZONE_OPEN)); + bool zc = !!(t->action & BLK_TC_ACT2(BLK_TC_ZONE_CLOSE)); int i = 0; if (f) rwbs[i++] = 'F'; /* flush */ - if (d) + if (d) { rwbs[i++] = 'D'; - else if (w) + } else if (za) { + rwbs[i++] = 'Z'; + rwbs[i++] = 'A'; + } else if (zr) { + rwbs[i++] = 'Z'; + rwbs[i++] = 'R'; + } else if (zra) { + rwbs[i++] = 'Z'; + rwbs[i++] = 'R'; + rwbs[i++] = 'A'; + } else if (zf) { + rwbs[i++] = 'Z'; + rwbs[i++] = 'F'; + } else if (zo) { + rwbs[i++] = 'Z'; + rwbs[i++] = 'O'; + } else if (zc) { + rwbs[i++] = 'Z'; + rwbs[i++] = 'C'; + } else if (w) { rwbs[i++] = 'W'; - else if (t->bytes) + } else if (t->bytes) { rwbs[i++] = 'R'; - else + } else { rwbs[i++] = 'N'; + } if (u) rwbs[i++] = 'F'; /* fua */ -- 2.51.0