aboutsummaryrefslogtreecommitdiffstats
path: root/mm/compaction.c
diff options
context:
space:
mode:
Diffstat (limited to 'mm/compaction.c')
-rw-r--r--mm/compaction.c13
1 files changed, 5 insertions, 8 deletions
diff --git a/mm/compaction.c b/mm/compaction.c
index fb548e4c7bd4..03d31a875341 100644
--- a/mm/compaction.c
+++ b/mm/compaction.c
@@ -1999,17 +1999,14 @@ void wakeup_kcompactd(pg_data_t *pgdat, int order, int classzone_idx)
1999 if (pgdat->kcompactd_max_order < order) 1999 if (pgdat->kcompactd_max_order < order)
2000 pgdat->kcompactd_max_order = order; 2000 pgdat->kcompactd_max_order = order;
2001 2001
2002 /*
2003 * Pairs with implicit barrier in wait_event_freezable()
2004 * such that wakeups are not missed in the lockless
2005 * waitqueue_active() call.
2006 */
2007 smp_acquire__after_ctrl_dep();
2008
2009 if (pgdat->kcompactd_classzone_idx > classzone_idx) 2002 if (pgdat->kcompactd_classzone_idx > classzone_idx)
2010 pgdat->kcompactd_classzone_idx = classzone_idx; 2003 pgdat->kcompactd_classzone_idx = classzone_idx;
2011 2004
2012 if (!waitqueue_active(&pgdat->kcompactd_wait)) 2005 /*
2006 * Pairs with implicit barrier in wait_event_freezable()
2007 * such that wakeups are not missed.
2008 */
2009 if (!wq_has_sleeper(&pgdat->kcompactd_wait))
2013 return; 2010 return;
2014 2011
2015 if (!kcompactd_node_suitable(pgdat)) 2012 if (!kcompactd_node_suitable(pgdat))