• Paul E. McKenney's avatar
    rcu: Convert grace-period requests to ->gp_seq · 29365e56
    Paul E. McKenney authored
    This commit converts the grace-period request code paths from ->completed
    and ->gpnum to ->gp_seq.  The need_future_gp_element() macro encapsulates
    the shift operation required to use ->gp_seq as an index to the
    ->need_future_gp[] array.  The rcu_cbs_completed() function is removed
    in favor of the rcu_seq_snap() function.  The rcu_start_this_gp()
    gets some temporary consistency checks and uses rcu_seq_done(),
    rcu_seq_current(), rcu_seq_state(), and rcu_gp_in_progress() in place
    of the earlier open-coded comparisons of ->gpnum and ->completed.
    The rcu_future_gp_cleanup() function replaces use of ->completed
    with ->gp_seq.  The rcu_accelerate_cbs() function replaces a call to
    rcu_cbs_completed() with one to rcu_seq_snap().  The rcu_advance_cbs()
    function replaces an access to >completed with one to ->gp_seq and adds
    some temporary warnings.  The rcu_nocb_wait_gp() function replaces a
    call to rcu_cbs_completed() with one to rcu_seq_snap() and an open-coded
    comparison with rcu_seq_done().
    
    The temporary warnings will be removed when the various ->gpnum and
    ->completed fields are removed.  Their purpose is to locate code who
    might still be using ->gpnum and ->completed.  (Much easier that way
    than trying to trace down the causes of too-short grace periods and
    grace-period hangs!)
    Signed-off-by: default avatarPaul E. McKenney <paulmck@linux.vnet.ibm.com>
    29365e56
tree.c 128 KB