lkml.org 
[lkml]   [2018]   [Jun]   [25]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH tip/core/rcu 17/40] rcutorture: Convert rcutorture_get_gp_data() to ->gp_seq
    Date
    SRCU has long used ->srcu_gp_seq, and now RCU uses ->gp_seq.  This
    commit therefore moves the rcutorture_get_gp_data() function from
    a ->gpnum / ->completed pair to ->gp_seq.

    Signed-off-by: Paul E. McKenney <paulmck@linux.vnet.ibm.com>
    ---
    kernel/rcu/rcu.h | 17 ++++++-----------
    kernel/rcu/rcutorture.c | 24 ++++++++++--------------
    kernel/rcu/srcutree.c | 5 ++---
    kernel/rcu/tree.c | 5 ++---
    4 files changed, 20 insertions(+), 31 deletions(-)

    diff --git a/kernel/rcu/rcu.h b/kernel/rcu/rcu.h
    index 7568a3fd0815..003671825d62 100644
    --- a/kernel/rcu/rcu.h
    +++ b/kernel/rcu/rcu.h
    @@ -425,7 +425,7 @@ enum rcutorture_type {

    #if defined(CONFIG_TREE_RCU) || defined(CONFIG_PREEMPT_RCU)
    void rcutorture_get_gp_data(enum rcutorture_type test_type, int *flags,
    - unsigned long *gpnum, unsigned long *completed);
    + unsigned long *gp_seq);
    void rcutorture_record_test_transition(void);
    void rcutorture_record_progress(unsigned long vernum);
    void do_trace_rcu_torture_read(const char *rcutorturename,
    @@ -435,13 +435,10 @@ void do_trace_rcu_torture_read(const char *rcutorturename,
    unsigned long c);
    #else
    static inline void rcutorture_get_gp_data(enum rcutorture_type test_type,
    - int *flags,
    - unsigned long *gpnum,
    - unsigned long *completed)
    + int *flags, unsigned long *gp_seq)
    {
    *flags = 0;
    - *gpnum = 0;
    - *completed = 0;
    + *gp_seq = 0;
    }
    static inline void rcutorture_record_test_transition(void) { }
    static inline void rcutorture_record_progress(unsigned long vernum) { }
    @@ -461,21 +458,19 @@ void do_trace_rcu_torture_read(const char *rcutorturename,

    static inline void srcutorture_get_gp_data(enum rcutorture_type test_type,
    struct srcu_struct *sp, int *flags,
    - unsigned long *gpnum,
    - unsigned long *completed)
    + unsigned long *gp_seq)
    {
    if (test_type != SRCU_FLAVOR)
    return;
    *flags = 0;
    - *completed = sp->srcu_idx;
    - *gpnum = *completed;
    + *gp_seq = sp->srcu_idx;
    }

    #elif defined(CONFIG_TREE_SRCU)

    void srcutorture_get_gp_data(enum rcutorture_type test_type,
    struct srcu_struct *sp, int *flags,
    - unsigned long *gpnum, unsigned long *completed);
    + unsigned long *gp_seq);

    #endif

    diff --git a/kernel/rcu/rcutorture.c b/kernel/rcu/rcutorture.c
    index 1f66597c7783..81fb43530d64 100644
    --- a/kernel/rcu/rcutorture.c
    +++ b/kernel/rcu/rcutorture.c
    @@ -1313,18 +1313,16 @@ rcu_torture_stats_print(void)
    if (rtcv_snap == rcu_torture_current_version &&
    rcu_torture_current != NULL) {
    int __maybe_unused flags = 0;
    - unsigned long __maybe_unused gpnum = 0;
    - unsigned long __maybe_unused completed = 0;
    + unsigned long __maybe_unused gp_seq = 0;

    rcutorture_get_gp_data(cur_ops->ttype,
    - &flags, &gpnum, &completed);
    + &flags, &gp_seq);
    srcutorture_get_gp_data(cur_ops->ttype, srcu_ctlp,
    - &flags, &gpnum, &completed);
    + &flags, &gp_seq);
    wtp = READ_ONCE(writer_task);
    - pr_alert("??? Writer stall state %s(%d) g%lu c%lu f%#x ->state %#lx cpu %d\n",
    + pr_alert("??? Writer stall state %s(%d) g%lu f%#x ->state %#lx cpu %d\n",
    rcu_torture_writer_state_getname(),
    - rcu_torture_writer_state,
    - gpnum, completed, flags,
    + rcu_torture_writer_state, gp_seq, flags,
    wtp == NULL ? ~0UL : wtp->state,
    wtp == NULL ? -1 : (int)task_cpu(wtp));
    if (!splatted && wtp) {
    @@ -1605,8 +1603,7 @@ static void
    rcu_torture_cleanup(void)
    {
    int flags = 0;
    - unsigned long gpnum = 0;
    - unsigned long completed = 0;
    + unsigned long gp_seq = 0;
    int i;

    rcutorture_record_test_transition();
    @@ -1637,11 +1634,10 @@ rcu_torture_cleanup(void)
    fakewriter_tasks = NULL;
    }

    - rcutorture_get_gp_data(cur_ops->ttype, &flags, &gpnum, &completed);
    - srcutorture_get_gp_data(cur_ops->ttype, srcu_ctlp,
    - &flags, &gpnum, &completed);
    - pr_alert("%s: End-test grace-period state: g%lu c%lu f%#x\n",
    - cur_ops->name, gpnum, completed, flags);
    + rcutorture_get_gp_data(cur_ops->ttype, &flags, &gp_seq);
    + srcutorture_get_gp_data(cur_ops->ttype, srcu_ctlp, &flags, &gp_seq);
    + pr_alert("%s: End-test grace-period state: g%lu f%#x\n",
    + cur_ops->name, gp_seq, flags);
    torture_stop_kthread(rcu_torture_stats, stats_task);
    torture_stop_kthread(rcu_torture_fqs, fqs_task);
    for (i = 0; i < ncbflooders; i++)
    diff --git a/kernel/rcu/srcutree.c b/kernel/rcu/srcutree.c
    index 5a1a9a07b407..d6d6ea9738c0 100644
    --- a/kernel/rcu/srcutree.c
    +++ b/kernel/rcu/srcutree.c
    @@ -1249,13 +1249,12 @@ static void process_srcu(struct work_struct *work)

    void srcutorture_get_gp_data(enum rcutorture_type test_type,
    struct srcu_struct *sp, int *flags,
    - unsigned long *gpnum, unsigned long *completed)
    + unsigned long *gp_seq)
    {
    if (test_type != SRCU_FLAVOR)
    return;
    *flags = 0;
    - *completed = rcu_seq_ctr(sp->srcu_gp_seq);
    - *gpnum = rcu_seq_ctr(sp->srcu_gp_seq_needed);
    + *gp_seq = rcu_seq_current(&sp->srcu_gp_seq);
    }
    EXPORT_SYMBOL_GPL(srcutorture_get_gp_data);

    diff --git a/kernel/rcu/tree.c b/kernel/rcu/tree.c
    index 9452842e0590..779db9644177 100644
    --- a/kernel/rcu/tree.c
    +++ b/kernel/rcu/tree.c
    @@ -638,7 +638,7 @@ EXPORT_SYMBOL_GPL(rcutorture_record_test_transition);
    * Send along grace-period-related data for rcutorture diagnostics.
    */
    void rcutorture_get_gp_data(enum rcutorture_type test_type, int *flags,
    - unsigned long *gpnum, unsigned long *completed)
    + unsigned long *gp_seq)
    {
    struct rcu_state *rsp = NULL;

    @@ -658,8 +658,7 @@ void rcutorture_get_gp_data(enum rcutorture_type test_type, int *flags,
    if (rsp == NULL)
    return;
    *flags = READ_ONCE(rsp->gp_flags);
    - *gpnum = READ_ONCE(rsp->gpnum);
    - *completed = READ_ONCE(rsp->completed);
    + *gp_seq = rcu_seq_current(&rsp->gp_seq);
    }
    EXPORT_SYMBOL_GPL(rcutorture_get_gp_data);

    --
    2.17.1
    \
     
     \ /
      Last update: 2018-06-26 02:07    [W:4.248 / U:0.024 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site