Merge branch 'misc' of git://git.kernel.org/pub/scm/linux/kernel/git/mmarek/kbuild
[linux-2.6-block.git] / kernel / rcu / tree.h
index 119de399eb2f7e532f607e85f2d31c1b9e324541..a69d3dab2ec4dbf9dc8c412813c84c27363f9378 100644 (file)
@@ -141,12 +141,20 @@ struct rcu_node {
                                /*  complete (only for PREEMPT_RCU). */
        unsigned long qsmaskinit;
                                /* Per-GP initial value for qsmask & expmask. */
+                               /*  Initialized from ->qsmaskinitnext at the */
+                               /*  beginning of each grace period. */
+       unsigned long qsmaskinitnext;
+                               /* Online CPUs for next grace period. */
        unsigned long grpmask;  /* Mask to apply to parent qsmask. */
                                /*  Only one bit will be set in this mask. */
        int     grplo;          /* lowest-numbered CPU or group here. */
        int     grphi;          /* highest-numbered CPU or group here. */
        u8      grpnum;         /* CPU/group number for next level up. */
        u8      level;          /* root is at level 0. */
+       bool    wait_blkd_tasks;/* Necessary to wait for blocked tasks to */
+                               /*  exit RCU read-side critical sections */
+                               /*  before propagating offline up the */
+                               /*  rcu_node tree? */
        struct rcu_node *parent;
        struct list_head blkd_tasks;
                                /* Tasks blocked in RCU read-side critical */
@@ -448,8 +456,6 @@ struct rcu_state {
        long qlen;                              /* Total number of callbacks. */
        /* End of fields guarded by orphan_lock. */
 
-       struct mutex onoff_mutex;               /* Coordinate hotplug & GPs. */
-
        struct mutex barrier_mutex;             /* Guards barrier fields. */
        atomic_t barrier_cpu_count;             /* # CPUs waiting on. */
        struct completion barrier_completion;   /* Wake at barrier end. */
@@ -559,6 +565,7 @@ static void rcu_prepare_kthreads(int cpu);
 static void rcu_cleanup_after_idle(void);
 static void rcu_prepare_for_idle(void);
 static void rcu_idle_count_callbacks_posted(void);
+static bool rcu_preempt_has_tasks(struct rcu_node *rnp);
 static void print_cpu_stall_info_begin(void);
 static void print_cpu_stall_info(struct rcu_state *rsp, int cpu);
 static void print_cpu_stall_info_end(void);