lkml.org 
[lkml]   [2018]   [Oct]   [9]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[GIT PULL 24/45] lightnvm: pblk: add trace events for pblk state changes
    Date
    From: Hans Holmberg <hans.holmberg@cnexlabs.com>

    Add trace events for tracking pblk state changes.

    Signed-off-by: Hans Holmberg <hans.holmberg@cnexlabs.com>
    Signed-off-by: Matias Bjørling <mb@lightnvm.io>
    ---
    drivers/lightnvm/pblk-core.c | 3 +++
    drivers/lightnvm/pblk-init.c | 1 +
    drivers/lightnvm/pblk-trace.h | 28 ++++++++++++++++++++++++++++
    3 files changed, 32 insertions(+)

    diff --git a/drivers/lightnvm/pblk-core.c b/drivers/lightnvm/pblk-core.c
    index ef52c1647f88..c482ef7dd4b5 100644
    --- a/drivers/lightnvm/pblk-core.c
    +++ b/drivers/lightnvm/pblk-core.c
    @@ -1503,6 +1503,7 @@ static void pblk_stop_writes(struct pblk *pblk, struct pblk_line *line)

    pblk_set_space_limit(pblk);
    pblk->state = PBLK_STATE_STOPPING;
    + trace_pblk_state(pblk_disk_name(pblk), pblk->state);
    }

    static void pblk_line_close_meta_sync(struct pblk *pblk)
    @@ -1552,6 +1553,7 @@ void __pblk_pipeline_flush(struct pblk *pblk)
    return;
    }
    pblk->state = PBLK_STATE_RECOVERING;
    + trace_pblk_state(pblk_disk_name(pblk), pblk->state);
    spin_unlock(&l_mg->free_lock);

    pblk_flush_writer(pblk);
    @@ -1573,6 +1575,7 @@ void __pblk_pipeline_stop(struct pblk *pblk)

    spin_lock(&l_mg->free_lock);
    pblk->state = PBLK_STATE_STOPPED;
    + trace_pblk_state(pblk_disk_name(pblk), pblk->state);
    l_mg->data_line = NULL;
    l_mg->data_next = NULL;
    spin_unlock(&l_mg->free_lock);
    diff --git a/drivers/lightnvm/pblk-init.c b/drivers/lightnvm/pblk-init.c
    index fca37da16266..9aebdee8e4c9 100644
    --- a/drivers/lightnvm/pblk-init.c
    +++ b/drivers/lightnvm/pblk-init.c
    @@ -1109,6 +1109,7 @@ static void *pblk_init(struct nvm_tgt_dev *dev, struct gendisk *tdisk,
    pblk->dev = dev;
    pblk->disk = tdisk;
    pblk->state = PBLK_STATE_RUNNING;
    + trace_pblk_state(pblk_disk_name(pblk), pblk->state);
    pblk->gc.gc_enabled = 0;

    if (!(geo->version == NVM_OCSSD_SPEC_12 ||
    diff --git a/drivers/lightnvm/pblk-trace.h b/drivers/lightnvm/pblk-trace.h
    index f9aa9e25e428..c171d0450c07 100644
    --- a/drivers/lightnvm/pblk-trace.h
    +++ b/drivers/lightnvm/pblk-trace.h
    @@ -25,6 +25,13 @@ struct ppa_addr;
    { 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,

    TP_PROTO(const char *name, struct ppa_addr *ppa, int 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) */

    /* This part must be outside protection */
    --
    2.17.1
    \
     
     \ /
      Last update: 2018-10-09 13:17    [W:4.156 / U:0.060 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site