|
@@ -523,15 +523,16 @@ static int __init workingset_init(void)
|
|
pr_info("workingset: timestamp_bits=%d max_order=%d bucket_order=%u\n",
|
|
pr_info("workingset: timestamp_bits=%d max_order=%d bucket_order=%u\n",
|
|
timestamp_bits, max_order, bucket_order);
|
|
timestamp_bits, max_order, bucket_order);
|
|
|
|
|
|
- ret = __list_lru_init(&shadow_nodes, true, &shadow_nodes_key);
|
|
|
|
|
|
+ ret = prealloc_shrinker(&workingset_shadow_shrinker);
|
|
if (ret)
|
|
if (ret)
|
|
goto err;
|
|
goto err;
|
|
- ret = register_shrinker(&workingset_shadow_shrinker);
|
|
|
|
|
|
+ ret = __list_lru_init(&shadow_nodes, true, &shadow_nodes_key);
|
|
if (ret)
|
|
if (ret)
|
|
goto err_list_lru;
|
|
goto err_list_lru;
|
|
|
|
+ register_shrinker_prepared(&workingset_shadow_shrinker);
|
|
return 0;
|
|
return 0;
|
|
err_list_lru:
|
|
err_list_lru:
|
|
- list_lru_destroy(&shadow_nodes);
|
|
|
|
|
|
+ free_prealloced_shrinker(&workingset_shadow_shrinker);
|
|
err:
|
|
err:
|
|
return ret;
|
|
return ret;
|
|
}
|
|
}
|