Parse zoned commands in blkparse.

Signed-off-by: Johannes Thumshirn <[email protected]>
---
 blkparse_fmt.c | 34 ++++++++++++++++++++++++++++++----
 1 file changed, 30 insertions(+), 4 deletions(-)

diff --git a/blkparse_fmt.c b/blkparse_fmt.c
index 80e02fc..06b055b 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_ACT(BLK_TC_ZONE_APPEND));
+       bool zr = !!(t->action & BLK_TC_ACT(BLK_TC_ZONE_RESET));
+       bool zra = !!(t->action & BLK_TC_ACT(BLK_TC_ZONE_RESET_ALL));
+       bool zf = !!(t->action & BLK_TC_ACT(BLK_TC_ZONE_FINISH));
+       bool zo = !!(t->action & BLK_TC_ACT(BLK_TC_ZONE_OPEN));
+       bool zc = !!(t->action & BLK_TC_ACT(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


Reply via email to