* [PATCH tip/core/rcu 0/7] Fixes for 3.9
@ 2013-03-18 21:16 Paul E. McKenney
2013-03-18 21:16 ` [PATCH tip/core/rcu 1/7] rcu: Fix spacing problem Paul E. McKenney
0 siblings, 1 reply; 8+ messages in thread
From: Paul E. McKenney @ 2013-03-18 21:16 UTC (permalink / raw)
To: linux-kernel
Cc: mingo, laijs, dipankar, akpm, mathieu.desnoyers, josh, niv, tglx,
peterz, rostedt, Valdis.Kletnieks, dhowells, edumazet, darren,
fweisbec, sbw
Hello!
This series contains the following fixes for RCU:
1. Whitespace fix courtesy of Jiang Fang.
2. Avoid raising softirq from CPUs going offline.
3. Remove obsolete CPU-hotplug comment, courtesy of Srivatsa Bhat.
4. Delete unused "wakemask" field.
5. Fix hlist_bl_set_first_rcu() lockdep annotation, courtesy of
Steven Whitehouse.
6. Add softirq-stall indications to stall-warning messages.
7. Restrict self-torture random delays in RCU grace-period initialization
to runtime.
Thanx, Paul
b/Documentation/RCU/stallwarn.txt | 33 ++++++++++++++++++++++++---------
b/include/linux/list_bl.h | 5 +++++
b/include/linux/rculist_bl.h | 2 +-
b/kernel/rcutree.c | 13 +++++--------
b/kernel/rcutree.h | 8 +++++---
b/kernel/rcutree_plugin.h | 4 +++-
6 files changed, 43 insertions(+), 22 deletions(-)
^ permalink raw reply [flat|nested] 8+ messages in thread
* [PATCH tip/core/rcu 1/7] rcu: Fix spacing problem
2013-03-18 21:16 [PATCH tip/core/rcu 0/7] Fixes for 3.9 Paul E. McKenney
@ 2013-03-18 21:16 ` Paul E. McKenney
2013-03-18 21:16 ` [PATCH tip/core/rcu 2/7] rcu: Avoid invoking RCU core on offline CPUs Paul E. McKenney
` (5 more replies)
0 siblings, 6 replies; 8+ messages in thread
From: Paul E. McKenney @ 2013-03-18 21:16 UTC (permalink / raw)
To: linux-kernel
Cc: mingo, laijs, dipankar, akpm, mathieu.desnoyers, josh, niv, tglx,
peterz, rostedt, Valdis.Kletnieks, dhowells, edumazet, darren,
fweisbec, sbw, Jiang Fang, Paul E. McKenney
From: Jiang Fang <jiang.xx.fang@gmail.com>
Signed-off-by: Jiang Fang <jiang.xx.fang@gmail.com>
Signed-off-by: Paul E. McKenney <paulmck@linux.vnet.ibm.com>
---
kernel/rcutree.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/kernel/rcutree.c b/kernel/rcutree.c
index 5b8ad82..157539a 100644
--- a/kernel/rcutree.c
+++ b/kernel/rcutree.c
@@ -3171,7 +3171,7 @@ void __init rcu_init(void)
rcu_init_one(&rcu_bh_state, &rcu_bh_data);
__rcu_init_preempt();
rcu_init_nocb();
- open_softirq(RCU_SOFTIRQ, rcu_process_callbacks);
+ open_softirq(RCU_SOFTIRQ, rcu_process_callbacks);
/*
* We don't need protection against CPU-hotplug here because
--
1.8.1.5
^ permalink raw reply related [flat|nested] 8+ messages in thread
* [PATCH tip/core/rcu 2/7] rcu: Avoid invoking RCU core on offline CPUs
2013-03-18 21:16 ` [PATCH tip/core/rcu 1/7] rcu: Fix spacing problem Paul E. McKenney
@ 2013-03-18 21:16 ` Paul E. McKenney
2013-03-18 21:16 ` [PATCH tip/core/rcu 3/7] rcu: Remove comment referring to __stop_machine() Paul E. McKenney
` (4 subsequent siblings)
5 siblings, 0 replies; 8+ messages in thread
From: Paul E. McKenney @ 2013-03-18 21:16 UTC (permalink / raw)
To: linux-kernel
Cc: mingo, laijs, dipankar, akpm, mathieu.desnoyers, josh, niv, tglx,
peterz, rostedt, Valdis.Kletnieks, dhowells, edumazet, darren,
fweisbec, sbw, Paul E. McKenney
From: "Paul E. McKenney" <paulmck@linux.vnet.ibm.com>
Offline CPUs transition through the scheduler to the idle loop one
last time before being shut down. This can result in RCU raising
softirq on this CPU, which is at best useless given that the CPU's
callbacks will be offloaded at CPU_DEAD time. This commit therefore
avoids raising softirq on offline CPUs.
Signed-off-by: Paul E. McKenney <paulmck@linux.vnet.ibm.com>
---
kernel/rcutree.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/kernel/rcutree.c b/kernel/rcutree.c
index 157539a..b2fc234 100644
--- a/kernel/rcutree.c
+++ b/kernel/rcutree.c
@@ -2169,7 +2169,8 @@ static void invoke_rcu_callbacks(struct rcu_state *rsp, struct rcu_data *rdp)
static void invoke_rcu_core(void)
{
- raise_softirq(RCU_SOFTIRQ);
+ if (cpu_online(smp_processor_id()))
+ raise_softirq(RCU_SOFTIRQ);
}
/*
--
1.8.1.5
^ permalink raw reply related [flat|nested] 8+ messages in thread
* [PATCH tip/core/rcu 3/7] rcu: Remove comment referring to __stop_machine()
2013-03-18 21:16 ` [PATCH tip/core/rcu 1/7] rcu: Fix spacing problem Paul E. McKenney
2013-03-18 21:16 ` [PATCH tip/core/rcu 2/7] rcu: Avoid invoking RCU core on offline CPUs Paul E. McKenney
@ 2013-03-18 21:16 ` Paul E. McKenney
2013-03-18 21:16 ` [PATCH tip/core/rcu 4/7] rcu: Delete unused rcu_node "wakemask" field Paul E. McKenney
` (3 subsequent siblings)
5 siblings, 0 replies; 8+ messages in thread
From: Paul E. McKenney @ 2013-03-18 21:16 UTC (permalink / raw)
To: linux-kernel
Cc: mingo, laijs, dipankar, akpm, mathieu.desnoyers, josh, niv, tglx,
peterz, rostedt, Valdis.Kletnieks, dhowells, edumazet, darren,
fweisbec, sbw, Srivatsa S. Bhat, Paul E. McKenney
From: "Srivatsa S. Bhat" <srivatsa.bhat@linux.vnet.ibm.com>
Although it used to be that CPU_DYING notifiers executed on the outgoing
CPU with interrupts disabled and with all other CPUs spinning, this is
no longer the case. This commit therefore removes this obsolete comment.
Signed-off-by: Srivatsa S. Bhat <srivatsa.bhat@linux.vnet.ibm.com>
Signed-off-by: Paul E. McKenney <paulmck@linux.vnet.ibm.com>
---
kernel/rcutree.c | 5 -----
1 file changed, 5 deletions(-)
diff --git a/kernel/rcutree.c b/kernel/rcutree.c
index b2fc234..71df6f9 100644
--- a/kernel/rcutree.c
+++ b/kernel/rcutree.c
@@ -2931,11 +2931,6 @@ static int __cpuinit rcu_cpu_notify(struct notifier_block *self,
break;
case CPU_DYING:
case CPU_DYING_FROZEN:
- /*
- * The whole machine is "stopped" except this CPU, so we can
- * touch any data without introducing corruption. We send the
- * dying CPU's callbacks to an arbitrarily chosen online CPU.
- */
for_each_rcu_flavor(rsp)
rcu_cleanup_dying_cpu(rsp);
rcu_cleanup_after_idle(cpu);
--
1.8.1.5
^ permalink raw reply related [flat|nested] 8+ messages in thread
* [PATCH tip/core/rcu 4/7] rcu: Delete unused rcu_node "wakemask" field
2013-03-18 21:16 ` [PATCH tip/core/rcu 1/7] rcu: Fix spacing problem Paul E. McKenney
2013-03-18 21:16 ` [PATCH tip/core/rcu 2/7] rcu: Avoid invoking RCU core on offline CPUs Paul E. McKenney
2013-03-18 21:16 ` [PATCH tip/core/rcu 3/7] rcu: Remove comment referring to __stop_machine() Paul E. McKenney
@ 2013-03-18 21:16 ` Paul E. McKenney
2013-03-18 21:16 ` [PATCH tip/core/rcu 5/7] rcu: Fix hlist_bl_set_first_rcu() annotation Paul E. McKenney
` (2 subsequent siblings)
5 siblings, 0 replies; 8+ messages in thread
From: Paul E. McKenney @ 2013-03-18 21:16 UTC (permalink / raw)
To: linux-kernel
Cc: mingo, laijs, dipankar, akpm, mathieu.desnoyers, josh, niv, tglx,
peterz, rostedt, Valdis.Kletnieks, dhowells, edumazet, darren,
fweisbec, sbw, Paul E. McKenney
From: "Paul E. McKenney" <paulmck@linux.vnet.ibm.com>
Signed-off-by: Paul E. McKenney <paulmck@linux.vnet.ibm.com>
---
kernel/rcutree.h | 3 ---
1 file changed, 3 deletions(-)
diff --git a/kernel/rcutree.h b/kernel/rcutree.h
index c896b50..8e75609 100644
--- a/kernel/rcutree.h
+++ b/kernel/rcutree.h
@@ -134,9 +134,6 @@ struct rcu_node {
/* elements that need to drain to allow the */
/* current expedited grace period to */
/* complete (only for TREE_PREEMPT_RCU). */
- atomic_t wakemask; /* CPUs whose kthread needs to be awakened. */
- /* Since this has meaning only for leaf */
- /* rcu_node structures, 32 bits suffices. */
unsigned long qsmaskinit;
/* Per-GP initial value for qsmask & expmask. */
unsigned long grpmask; /* Mask to apply to parent qsmask. */
--
1.8.1.5
^ permalink raw reply related [flat|nested] 8+ messages in thread
* [PATCH tip/core/rcu 5/7] rcu: Fix hlist_bl_set_first_rcu() annotation
2013-03-18 21:16 ` [PATCH tip/core/rcu 1/7] rcu: Fix spacing problem Paul E. McKenney
` (2 preceding siblings ...)
2013-03-18 21:16 ` [PATCH tip/core/rcu 4/7] rcu: Delete unused rcu_node "wakemask" field Paul E. McKenney
@ 2013-03-18 21:16 ` Paul E. McKenney
2013-03-18 21:16 ` [PATCH tip/core/rcu 6/7] rcu: Add softirq-stall indications to stall-warning messages Paul E. McKenney
2013-03-18 21:16 ` [PATCH tip/core/rcu 7/7] rcu: Tone down debugging during boot-up and shutdown Paul E. McKenney
5 siblings, 0 replies; 8+ messages in thread
From: Paul E. McKenney @ 2013-03-18 21:16 UTC (permalink / raw)
To: linux-kernel
Cc: mingo, laijs, dipankar, akpm, mathieu.desnoyers, josh, niv, tglx,
peterz, rostedt, Valdis.Kletnieks, dhowells, edumazet, darren,
fweisbec, sbw, Steven Whitehouse, Paul E. McKenney
From: Steven Whitehouse <swhiteho@redhat.com>
Abhi noticed that we were getting a complaint from the RCU subsystem
about access of an RCU protected list under the write side bit lock.
This commit adds additional annotation to check both the RCU read
lock and the write side bit lock before printing a message.
Reported by: Abhijith Das <adas@redhat.com>
Signed-off-by: Steven Whitehouse <swhiteho@redhat.com>
Tested-by: Abhijith Das <adas@redhat.com>
Signed-off-by: Paul E. McKenney <paulmck@linux.vnet.ibm.com>
---
include/linux/list_bl.h | 5 +++++
include/linux/rculist_bl.h | 2 +-
2 files changed, 6 insertions(+), 1 deletion(-)
diff --git a/include/linux/list_bl.h b/include/linux/list_bl.h
index 31f9d75..2eb8855 100644
--- a/include/linux/list_bl.h
+++ b/include/linux/list_bl.h
@@ -125,6 +125,11 @@ static inline void hlist_bl_unlock(struct hlist_bl_head *b)
__bit_spin_unlock(0, (unsigned long *)b);
}
+static inline bool hlist_bl_is_locked(struct hlist_bl_head *b)
+{
+ return bit_spin_is_locked(0, (unsigned long *)b);
+}
+
/**
* hlist_bl_for_each_entry - iterate over list of given type
* @tpos: the type * to use as a loop cursor.
diff --git a/include/linux/rculist_bl.h b/include/linux/rculist_bl.h
index cf1244f..4f216c5 100644
--- a/include/linux/rculist_bl.h
+++ b/include/linux/rculist_bl.h
@@ -20,7 +20,7 @@ static inline void hlist_bl_set_first_rcu(struct hlist_bl_head *h,
static inline struct hlist_bl_node *hlist_bl_first_rcu(struct hlist_bl_head *h)
{
return (struct hlist_bl_node *)
- ((unsigned long)rcu_dereference(h->first) & ~LIST_BL_LOCKMASK);
+ ((unsigned long)rcu_dereference_check(h->first, hlist_bl_is_locked(h)) & ~LIST_BL_LOCKMASK);
}
/**
--
1.8.1.5
^ permalink raw reply related [flat|nested] 8+ messages in thread
* [PATCH tip/core/rcu 6/7] rcu: Add softirq-stall indications to stall-warning messages
2013-03-18 21:16 ` [PATCH tip/core/rcu 1/7] rcu: Fix spacing problem Paul E. McKenney
` (3 preceding siblings ...)
2013-03-18 21:16 ` [PATCH tip/core/rcu 5/7] rcu: Fix hlist_bl_set_first_rcu() annotation Paul E. McKenney
@ 2013-03-18 21:16 ` Paul E. McKenney
2013-03-18 21:16 ` [PATCH tip/core/rcu 7/7] rcu: Tone down debugging during boot-up and shutdown Paul E. McKenney
5 siblings, 0 replies; 8+ messages in thread
From: Paul E. McKenney @ 2013-03-18 21:16 UTC (permalink / raw)
To: linux-kernel
Cc: mingo, laijs, dipankar, akpm, mathieu.desnoyers, josh, niv, tglx,
peterz, rostedt, Valdis.Kletnieks, dhowells, edumazet, darren,
fweisbec, sbw, Paul E. McKenney
From: "Paul E. McKenney" <paulmck@linux.vnet.ibm.com>
If RCU's softirq handler is prevented from executing, an RCU CPU stall
warning can result. Ways to prevent RCU's softirq handler from executing
include: (1) CPU spinning with interrupts disabled, (2) infinite loop
in some softirq handler, and (3) in -rt kernels, an infinite loop in a
set of real-time threads running at priorities higher than that of RCU's
softirq handler.
Because this situation can be difficult to track down, this commit causes
the count of RCU softirq handler invocations to be printed with RCU
CPU stall warnings. This information does require some interpretation,
as now documented in Documentation/RCU/stallwarn.txt.
Reported-by: Thomas Gleixner <tglx@linutronix.de>
Signed-off-by: Paul E. McKenney <paulmck@linux.vnet.ibm.com>
Tested-by: Paul Gortmaker <paul.gortmaker@windriver.com>
---
Documentation/RCU/stallwarn.txt | 33 ++++++++++++++++++++++++---------
kernel/rcutree.h | 5 +++++
kernel/rcutree_plugin.h | 4 +++-
3 files changed, 32 insertions(+), 10 deletions(-)
diff --git a/Documentation/RCU/stallwarn.txt b/Documentation/RCU/stallwarn.txt
index 1927151..e38b8df 100644
--- a/Documentation/RCU/stallwarn.txt
+++ b/Documentation/RCU/stallwarn.txt
@@ -92,14 +92,14 @@ If the CONFIG_RCU_CPU_STALL_INFO kernel configuration parameter is set,
more information is printed with the stall-warning message, for example:
INFO: rcu_preempt detected stall on CPU
- 0: (63959 ticks this GP) idle=241/3fffffffffffffff/0
+ 0: (63959 ticks this GP) idle=241/3fffffffffffffff/0 softirq=82/543
(t=65000 jiffies)
In kernels with CONFIG_RCU_FAST_NO_HZ, even more information is
printed:
INFO: rcu_preempt detected stall on CPU
- 0: (64628 ticks this GP) idle=dd5/3fffffffffffffff/0 drain=0 . timer not pending
+ 0: (64628 ticks this GP) idle=dd5/3fffffffffffffff/0 softirq=82/543 last_accelerate: a345/d342 nonlazy_posted: 25 .D
(t=65000 jiffies)
The "(64628 ticks this GP)" indicates that this CPU has taken more
@@ -116,13 +116,28 @@ number between the two "/"s is the value of the nesting, which will
be a small positive number if in the idle loop and a very large positive
number (as shown above) otherwise.
-For CONFIG_RCU_FAST_NO_HZ kernels, the "drain=0" indicates that the CPU is
-not in the process of trying to force itself into dyntick-idle state, the
-"." indicates that the CPU has not given up forcing RCU into dyntick-idle
-mode (it would be "H" otherwise), and the "timer not pending" indicates
-that the CPU has not recently forced RCU into dyntick-idle mode (it
-would otherwise indicate the number of microseconds remaining in this
-forced state).
+The "softirq=" portion of the message tracks the number of RCU softirq
+handlers that the stalled CPU has executed. The number before the "/"
+is the number that had executed since boot at the time that this CPU
+last noted the beginning of a grace period, which might be the current
+(stalled) grace period, or it might be some earlier grace period (for
+example, if the CPU might have been in dyntick-idle mode for an extended
+time period. The number after the "/" is the number that have executed
+since boot until the current time. If this latter number stays constant
+across repeated stall-warning messages, it is possible that RCU's softirq
+handlers are no longer able to execute on this CPU. This can happen if
+the stalled CPU is spinning with interrupts are disabled, or, in -rt
+kernels, if a high-priority process is starving RCU's softirq handler.
+
+For CONFIG_RCU_FAST_NO_HZ kernels, the "last_accelerate:" prints the
+low-order 16 bits (in hex) of the jiffies counter when this CPU last
+invoked rcu_try_advance_all_cbs() from rcu_needs_cpu() or last invoked
+rcu_accelerate_cbs() from rcu_prepare_for_idle(). The "nonlazy_posted:"
+prints the number of non-lazy callbacks posted since the last call to
+rcu_needs_cpu(). Finally, an "L" indicates that there are currently
+no non-lazy callbacks ("." is printed otherwise, as shown above) and
+"D" indicates that dyntick-idle processing is enabled ("." is printed
+otherwise, for example, if disabled via the "nohz=" kernel boot parameter).
Multiple Warnings From One Stall
diff --git a/kernel/rcutree.h b/kernel/rcutree.h
index 8e75609..26c9bb3 100644
--- a/kernel/rcutree.h
+++ b/kernel/rcutree.h
@@ -325,6 +325,11 @@ struct rcu_data {
struct task_struct *nocb_kthread;
#endif /* #ifdef CONFIG_RCU_NOCB_CPU */
+ /* 8) RCU CPU stall data. */
+#ifdef CONFIG_RCU_CPU_STALL_INFO
+ unsigned int softirq_snap; /* Snapshot of softirq activity. */
+#endif /* #ifdef CONFIG_RCU_CPU_STALL_INFO */
+
int cpu;
struct rcu_state *rsp;
};
diff --git a/kernel/rcutree_plugin.h b/kernel/rcutree_plugin.h
index c1cc7e1..7fcd3bb 100644
--- a/kernel/rcutree_plugin.h
+++ b/kernel/rcutree_plugin.h
@@ -2070,10 +2070,11 @@ static void print_cpu_stall_info(struct rcu_state *rsp, int cpu)
ticks_value = rsp->gpnum - rdp->gpnum;
}
print_cpu_stall_fast_no_hz(fast_no_hz, cpu);
- printk(KERN_ERR "\t%d: (%lu %s) idle=%03x/%llx/%d %s\n",
+ printk(KERN_ERR "\t%d: (%lu %s) idle=%03x/%llx/%d softirq=%u/%u %s\n",
cpu, ticks_value, ticks_title,
atomic_read(&rdtp->dynticks) & 0xfff,
rdtp->dynticks_nesting, rdtp->dynticks_nmi_nesting,
+ rdp->softirq_snap, kstat_softirqs_cpu(RCU_SOFTIRQ, cpu),
fast_no_hz);
}
@@ -2087,6 +2088,7 @@ static void print_cpu_stall_info_end(void)
static void zero_cpu_stall_ticks(struct rcu_data *rdp)
{
rdp->ticks_this_gp = 0;
+ rdp->softirq_snap = kstat_softirqs_cpu(RCU_SOFTIRQ, smp_processor_id());
}
/* Increment ->ticks_this_gp for all flavors of RCU. */
--
1.8.1.5
^ permalink raw reply related [flat|nested] 8+ messages in thread
* [PATCH tip/core/rcu 7/7] rcu: Tone down debugging during boot-up and shutdown.
2013-03-18 21:16 ` [PATCH tip/core/rcu 1/7] rcu: Fix spacing problem Paul E. McKenney
` (4 preceding siblings ...)
2013-03-18 21:16 ` [PATCH tip/core/rcu 6/7] rcu: Add softirq-stall indications to stall-warning messages Paul E. McKenney
@ 2013-03-18 21:16 ` Paul E. McKenney
5 siblings, 0 replies; 8+ messages in thread
From: Paul E. McKenney @ 2013-03-18 21:16 UTC (permalink / raw)
To: linux-kernel
Cc: mingo, laijs, dipankar, akpm, mathieu.desnoyers, josh, niv, tglx,
peterz, rostedt, Valdis.Kletnieks, dhowells, edumazet, darren,
fweisbec, sbw, Paul E. McKenney
From: "Paul E. McKenney" <paulmck@linux.vnet.ibm.com>
In some situations, randomly delaying RCU grace-period initialization
can cause more trouble than help. This commit therefore restricts this
type of RCU self-torture to runtime, giving it a rest during boot and
shutdown.
Reported-by: Sasha Levin <sasha.levin@oracle.com>
Signed-off-by: Paul E. McKenney <paulmck@linux.vnet.ibm.com>
---
kernel/rcutree.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/kernel/rcutree.c b/kernel/rcutree.c
index 71df6f9..0e52250 100644
--- a/kernel/rcutree.c
+++ b/kernel/rcutree.c
@@ -1319,7 +1319,8 @@ static int rcu_gp_init(struct rcu_state *rsp)
rnp->grphi, rnp->qsmask);
raw_spin_unlock_irq(&rnp->lock);
#ifdef CONFIG_PROVE_RCU_DELAY
- if ((random32() % (rcu_num_nodes * 8)) == 0)
+ if ((random32() % (rcu_num_nodes * 8)) == 0 &&
+ system_state == SYSTEM_RUNNING)
schedule_timeout_uninterruptible(2);
#endif /* #ifdef CONFIG_PROVE_RCU_DELAY */
cond_resched();
--
1.8.1.5
^ permalink raw reply related [flat|nested] 8+ messages in thread
end of thread, other threads:[~2013-03-18 21:18 UTC | newest]
Thread overview: 8+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2013-03-18 21:16 [PATCH tip/core/rcu 0/7] Fixes for 3.9 Paul E. McKenney
2013-03-18 21:16 ` [PATCH tip/core/rcu 1/7] rcu: Fix spacing problem Paul E. McKenney
2013-03-18 21:16 ` [PATCH tip/core/rcu 2/7] rcu: Avoid invoking RCU core on offline CPUs Paul E. McKenney
2013-03-18 21:16 ` [PATCH tip/core/rcu 3/7] rcu: Remove comment referring to __stop_machine() Paul E. McKenney
2013-03-18 21:16 ` [PATCH tip/core/rcu 4/7] rcu: Delete unused rcu_node "wakemask" field Paul E. McKenney
2013-03-18 21:16 ` [PATCH tip/core/rcu 5/7] rcu: Fix hlist_bl_set_first_rcu() annotation Paul E. McKenney
2013-03-18 21:16 ` [PATCH tip/core/rcu 6/7] rcu: Add softirq-stall indications to stall-warning messages Paul E. McKenney
2013-03-18 21:16 ` [PATCH tip/core/rcu 7/7] rcu: Tone down debugging during boot-up and shutdown Paul E. McKenney
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox