linux/drivers/lightnvm/pblk-trace.h
<<
>>
Prefs
   1/* SPDX-License-Identifier: GPL-2.0 */
   2#undef TRACE_SYSTEM
   3#define TRACE_SYSTEM pblk
   4
   5#if !defined(_TRACE_PBLK_H) || defined(TRACE_HEADER_MULTI_READ)
   6#define _TRACE_PBLK_H
   7
   8#include <linux/tracepoint.h>
   9
  10struct ppa_addr;
  11
  12#define show_chunk_flags(state) __print_flags(state, "",        \
  13        { NVM_CHK_ST_FREE,              "FREE",         },      \
  14        { NVM_CHK_ST_CLOSED,            "CLOSED",       },      \
  15        { NVM_CHK_ST_OPEN,              "OPEN",         },      \
  16        { NVM_CHK_ST_OFFLINE,           "OFFLINE",      })
  17
  18#define show_line_state(state) __print_symbolic(state,          \
  19        { PBLK_LINESTATE_NEW,           "NEW",          },      \
  20        { PBLK_LINESTATE_FREE,          "FREE",         },      \
  21        { PBLK_LINESTATE_OPEN,          "OPEN",         },      \
  22        { PBLK_LINESTATE_CLOSED,        "CLOSED",       },      \
  23        { PBLK_LINESTATE_GC,            "GC",           },      \
  24        { PBLK_LINESTATE_BAD,           "BAD",          },      \
  25        { PBLK_LINESTATE_CORRUPT,       "CORRUPT"       })
  26
  27
  28#define show_pblk_state(state) __print_symbolic(state,          \
  29        { PBLK_STATE_RUNNING,           "RUNNING",      },      \
  30        { PBLK_STATE_STOPPING,          "STOPPING",     },      \
  31        { PBLK_STATE_RECOVERING,        "RECOVERING",   },      \
  32        { PBLK_STATE_STOPPED,           "STOPPED"       })
  33
  34#define show_chunk_erase_state(state) __print_symbolic(state,   \
  35        { PBLK_CHUNK_RESET_START,       "START",        },      \
  36        { PBLK_CHUNK_RESET_DONE,        "OK",           },      \
  37        { PBLK_CHUNK_RESET_FAILED,      "FAILED"        })
  38
  39
  40TRACE_EVENT(pblk_chunk_reset,
  41
  42        TP_PROTO(const char *name, struct ppa_addr *ppa, int state),
  43
  44        TP_ARGS(name, ppa, state),
  45
  46        TP_STRUCT__entry(
  47                __string(name, name)
  48                __field(u64, ppa)
  49                __field(int, state)
  50        ),
  51
  52        TP_fast_assign(
  53                __assign_str(name, name);
  54                __entry->ppa = ppa->ppa;
  55                __entry->state = state;
  56        ),
  57
  58        TP_printk("dev=%s grp=%llu pu=%llu chk=%llu state=%s", __get_str(name),
  59                        (u64)(((struct ppa_addr *)(&__entry->ppa))->m.grp),
  60                        (u64)(((struct ppa_addr *)(&__entry->ppa))->m.pu),
  61                        (u64)(((struct ppa_addr *)(&__entry->ppa))->m.chk),
  62                        show_chunk_erase_state((int)__entry->state))
  63
  64);
  65
  66TRACE_EVENT(pblk_chunk_state,
  67
  68        TP_PROTO(const char *name, struct ppa_addr *ppa, int state),
  69
  70        TP_ARGS(name, ppa, state),
  71
  72        TP_STRUCT__entry(
  73                __string(name, name)
  74                __field(u64, ppa)
  75                __field(int, state)
  76        ),
  77
  78        TP_fast_assign(
  79                __assign_str(name, name);
  80                __entry->ppa = ppa->ppa;
  81                __entry->state = state;
  82        ),
  83
  84        TP_printk("dev=%s grp=%llu pu=%llu chk=%llu state=%s", __get_str(name),
  85                        (u64)(((struct ppa_addr *)(&__entry->ppa))->m.grp),
  86                        (u64)(((struct ppa_addr *)(&__entry->ppa))->m.pu),
  87                        (u64)(((struct ppa_addr *)(&__entry->ppa))->m.chk),
  88                        show_chunk_flags((int)__entry->state))
  89
  90);
  91
  92TRACE_EVENT(pblk_line_state,
  93
  94        TP_PROTO(const char *name, int line, int state),
  95
  96        TP_ARGS(name, line, state),
  97
  98        TP_STRUCT__entry(
  99                __string(name, name)
 100                __field(int, line)
 101                __field(int, state)
 102        ),
 103
 104        TP_fast_assign(
 105                __assign_str(name, name);
 106                __entry->line = line;
 107                __entry->state = state;
 108        ),
 109
 110        TP_printk("dev=%s line=%d state=%s", __get_str(name),
 111                        (int)__entry->line,
 112                        show_line_state((int)__entry->state))
 113
 114);
 115
 116TRACE_EVENT(pblk_state,
 117
 118        TP_PROTO(const char *name, int state),
 119
 120        TP_ARGS(name, state),
 121
 122        TP_STRUCT__entry(
 123                __string(name, name)
 124                __field(int, state)
 125        ),
 126
 127        TP_fast_assign(
 128                __assign_str(name, name);
 129                __entry->state = state;
 130        ),
 131
 132        TP_printk("dev=%s state=%s", __get_str(name),
 133                        show_pblk_state((int)__entry->state))
 134
 135);
 136
 137#endif /* !defined(_TRACE_PBLK_H) || defined(TRACE_HEADER_MULTI_READ) */
 138
 139/* This part must be outside protection */
 140
 141#undef TRACE_INCLUDE_PATH
 142#define TRACE_INCLUDE_PATH ../../drivers/lightnvm
 143#undef TRACE_INCLUDE_FILE
 144#define TRACE_INCLUDE_FILE pblk-trace
 145#include <trace/define_trace.h>
 146