mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-11-18 01:34:14 +08:00
rcu: Remove now-unused ->b.exp_need_qs field from the rcu_special union
The ->b.exp_need_qs field is now set only to false, so this commit removes it. The job this field used to do is now done by the rcu_data structure's ->deferred_qs field, which is a consequence of a better split between task-based (the rcu_node structure's ->exp_tasks field) and CPU-based (the aforementioned rcu_data structure's ->deferred_qs field) tracking of quiescent states for RCU-preempt expedited grace periods. Signed-off-by: Paul E. McKenney <paulmck@linux.vnet.ibm.com>
This commit is contained in:
parent
27c744e32a
commit
fcc878e4df
@ -571,12 +571,8 @@ union rcu_special {
|
||||
struct {
|
||||
u8 blocked;
|
||||
u8 need_qs;
|
||||
u8 exp_need_qs;
|
||||
|
||||
/* Otherwise the compiler can store garbage here: */
|
||||
u8 pad;
|
||||
} b; /* Bits. */
|
||||
u32 s; /* Set of bits. */
|
||||
u16 s; /* Set of bits. */
|
||||
};
|
||||
|
||||
enum perf_event_task_context {
|
||||
|
@ -284,13 +284,10 @@ static void rcu_preempt_ctxt_queue(struct rcu_node *rnp, struct rcu_data *rdp)
|
||||
* no need to check for a subsequent expedited GP. (Though we are
|
||||
* still in a quiescent state in any case.)
|
||||
*/
|
||||
if (blkd_state & RCU_EXP_BLKD &&
|
||||
t->rcu_read_unlock_special.b.exp_need_qs) {
|
||||
t->rcu_read_unlock_special.b.exp_need_qs = false;
|
||||
if (blkd_state & RCU_EXP_BLKD && rdp->deferred_qs)
|
||||
rcu_report_exp_rdp(rdp->rsp, rdp, true);
|
||||
} else {
|
||||
WARN_ON_ONCE(t->rcu_read_unlock_special.b.exp_need_qs);
|
||||
}
|
||||
else
|
||||
WARN_ON_ONCE(rdp->deferred_qs);
|
||||
}
|
||||
|
||||
/*
|
||||
@ -509,9 +506,7 @@ rcu_preempt_deferred_qs_irqrestore(struct task_struct *t, unsigned long flags)
|
||||
* tasks are handled when removing the task from the
|
||||
* blocked-tasks list below.
|
||||
*/
|
||||
if (special.b.exp_need_qs || rdp->deferred_qs) {
|
||||
t->rcu_read_unlock_special.b.exp_need_qs = false;
|
||||
rdp->deferred_qs = false;
|
||||
if (rdp->deferred_qs) {
|
||||
rcu_report_exp_rdp(rcu_state_p, rdp, true);
|
||||
if (!t->rcu_read_unlock_special.s) {
|
||||
local_irq_restore(flags);
|
||||
|
Loading…
Reference in New Issue
Block a user