summaryrefslogtreecommitdiff
path: root/mm/backing-dev.c
diff options
context:
space:
mode:
authorIngo Molnar <mingo@elte.hu>2011-12-20 20:32:03 +0100
committerIngo Molnar <mingo@elte.hu>2011-12-20 20:32:11 +0100
commitd87f69a16eb2cb96459117b06949a560679002e4 (patch)
treebbb55b2bd2b6c9e8bd4067aa3279783cb6bd9028 /mm/backing-dev.c
parent124ba9403318d834ef21bcd899c22c870708d2c4 (diff)
parent384703b8e6cd4c8ef08512e596024e028c91c339 (diff)
Merge commit 'v3.2-rc6' into perf/core
Merge reason: Update with the latest fixes. Signed-off-by: Ingo Molnar <mingo@elte.hu>
Diffstat (limited to 'mm/backing-dev.c')
-rw-r--r--mm/backing-dev.c8
1 files changed, 8 insertions, 0 deletions
diff --git a/mm/backing-dev.c b/mm/backing-dev.c
index a0860640378d..71034f41a2ba 100644
--- a/mm/backing-dev.c
+++ b/mm/backing-dev.c
@@ -724,6 +724,14 @@ void bdi_destroy(struct backing_dev_info *bdi)
bdi_unregister(bdi);
+ /*
+ * If bdi_unregister() had already been called earlier, the
+ * wakeup_timer could still be armed because bdi_prune_sb()
+ * can race with the bdi_wakeup_thread_delayed() calls from
+ * __mark_inode_dirty().
+ */
+ del_timer_sync(&bdi->wb.wakeup_timer);
+
for (i = 0; i < NR_BDI_STAT_ITEMS; i++)
percpu_counter_destroy(&bdi->bdi_stat[i]);