|
@@ -1733,7 +1733,7 @@ void compaction_unregister_node(struct node *node)
|
|
|
|
|
|
static inline bool kcompactd_work_requested(pg_data_t *pgdat)
|
|
|
{
|
|
|
- return pgdat->kcompactd_max_order > 0;
|
|
|
+ return pgdat->kcompactd_max_order > 0 || kthread_should_stop();
|
|
|
}
|
|
|
|
|
|
static bool kcompactd_node_suitable(pg_data_t *pgdat)
|
|
@@ -1797,6 +1797,8 @@ static void kcompactd_do_work(pg_data_t *pgdat)
|
|
|
INIT_LIST_HEAD(&cc.freepages);
|
|
|
INIT_LIST_HEAD(&cc.migratepages);
|
|
|
|
|
|
+ if (kthread_should_stop())
|
|
|
+ return;
|
|
|
status = compact_zone(zone, &cc);
|
|
|
|
|
|
if (zone_watermark_ok(zone, cc.order, low_wmark_pages(zone),
|