Commit 1b0dd0bf authored by Hans Holmberg's avatar Hans Holmberg Committed by Jens Axboe

lightnvm: pblk: add trace events for pblk state changes

Add trace events for tracking pblk state changes.
Signed-off-by: default avatarHans Holmberg <hans.holmberg@cnexlabs.com>
Signed-off-by: default avatarMatias Bjørling <mb@lightnvm.io>
Signed-off-by: default avatarJens Axboe <axboe@kernel.dk>
parent f2937232
...@@ -1503,6 +1503,7 @@ static void pblk_stop_writes(struct pblk *pblk, struct pblk_line *line) ...@@ -1503,6 +1503,7 @@ static void pblk_stop_writes(struct pblk *pblk, struct pblk_line *line)
pblk_set_space_limit(pblk); pblk_set_space_limit(pblk);
pblk->state = PBLK_STATE_STOPPING; pblk->state = PBLK_STATE_STOPPING;
trace_pblk_state(pblk_disk_name(pblk), pblk->state);
} }
static void pblk_line_close_meta_sync(struct pblk *pblk) static void pblk_line_close_meta_sync(struct pblk *pblk)
...@@ -1552,6 +1553,7 @@ void __pblk_pipeline_flush(struct pblk *pblk) ...@@ -1552,6 +1553,7 @@ void __pblk_pipeline_flush(struct pblk *pblk)
return; return;
} }
pblk->state = PBLK_STATE_RECOVERING; pblk->state = PBLK_STATE_RECOVERING;
trace_pblk_state(pblk_disk_name(pblk), pblk->state);
spin_unlock(&l_mg->free_lock); spin_unlock(&l_mg->free_lock);
pblk_flush_writer(pblk); pblk_flush_writer(pblk);
...@@ -1573,6 +1575,7 @@ void __pblk_pipeline_stop(struct pblk *pblk) ...@@ -1573,6 +1575,7 @@ void __pblk_pipeline_stop(struct pblk *pblk)
spin_lock(&l_mg->free_lock); spin_lock(&l_mg->free_lock);
pblk->state = PBLK_STATE_STOPPED; pblk->state = PBLK_STATE_STOPPED;
trace_pblk_state(pblk_disk_name(pblk), pblk->state);
l_mg->data_line = NULL; l_mg->data_line = NULL;
l_mg->data_next = NULL; l_mg->data_next = NULL;
spin_unlock(&l_mg->free_lock); spin_unlock(&l_mg->free_lock);
......
...@@ -1109,6 +1109,7 @@ static void *pblk_init(struct nvm_tgt_dev *dev, struct gendisk *tdisk, ...@@ -1109,6 +1109,7 @@ static void *pblk_init(struct nvm_tgt_dev *dev, struct gendisk *tdisk,
pblk->dev = dev; pblk->dev = dev;
pblk->disk = tdisk; pblk->disk = tdisk;
pblk->state = PBLK_STATE_RUNNING; pblk->state = PBLK_STATE_RUNNING;
trace_pblk_state(pblk_disk_name(pblk), pblk->state);
pblk->gc.gc_enabled = 0; pblk->gc.gc_enabled = 0;
if (!(geo->version == NVM_OCSSD_SPEC_12 || if (!(geo->version == NVM_OCSSD_SPEC_12 ||
......
...@@ -25,6 +25,13 @@ struct ppa_addr; ...@@ -25,6 +25,13 @@ struct ppa_addr;
{ PBLK_LINESTATE_CORRUPT, "CORRUPT" }) { PBLK_LINESTATE_CORRUPT, "CORRUPT" })
#define show_pblk_state(state) __print_symbolic(state, \
{ PBLK_STATE_RUNNING, "RUNNING", }, \
{ PBLK_STATE_STOPPING, "STOPPING", }, \
{ PBLK_STATE_RECOVERING, "RECOVERING", }, \
{ PBLK_STATE_STOPPED, "STOPPED" })
TRACE_EVENT(pblk_chunk_state, TRACE_EVENT(pblk_chunk_state,
TP_PROTO(const char *name, struct ppa_addr *ppa, int state), TP_PROTO(const char *name, struct ppa_addr *ppa, int state),
...@@ -75,6 +82,27 @@ TRACE_EVENT(pblk_line_state, ...@@ -75,6 +82,27 @@ TRACE_EVENT(pblk_line_state,
); );
TRACE_EVENT(pblk_state,
TP_PROTO(const char *name, int state),
TP_ARGS(name, state),
TP_STRUCT__entry(
__string(name, name)
__field(int, state);
),
TP_fast_assign(
__assign_str(name, name);
__entry->state = state;
),
TP_printk("dev=%s state=%s", __get_str(name),
show_pblk_state((int)__entry->state))
);
#endif /* !defined(_TRACE_PBLK_H) || defined(TRACE_HEADER_MULTI_READ) */ #endif /* !defined(_TRACE_PBLK_H) || defined(TRACE_HEADER_MULTI_READ) */
/* This part must be outside protection */ /* This part must be outside protection */
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment