|
@@ -1966,6 +1966,13 @@ void wakeup_kcompactd(pg_data_t *pgdat, int order, int classzone_idx)
|
|
if (pgdat->kcompactd_max_order < order)
|
|
if (pgdat->kcompactd_max_order < order)
|
|
pgdat->kcompactd_max_order = order;
|
|
pgdat->kcompactd_max_order = order;
|
|
|
|
|
|
|
|
+ /*
|
|
|
|
+ * Pairs with implicit barrier in wait_event_freezable()
|
|
|
|
+ * such that wakeups are not missed in the lockless
|
|
|
|
+ * waitqueue_active() call.
|
|
|
|
+ */
|
|
|
|
+ smp_acquire__after_ctrl_dep();
|
|
|
|
+
|
|
if (pgdat->kcompactd_classzone_idx > classzone_idx)
|
|
if (pgdat->kcompactd_classzone_idx > classzone_idx)
|
|
pgdat->kcompactd_classzone_idx = classzone_idx;
|
|
pgdat->kcompactd_classzone_idx = classzone_idx;
|
|
|
|
|