|
@@ -688,7 +688,7 @@ static void lru_add_drain_per_cpu(struct work_struct *dummy)
|
|
|
|
|
|
static DEFINE_PER_CPU(struct work_struct, lru_add_drain_work);
|
|
static DEFINE_PER_CPU(struct work_struct, lru_add_drain_work);
|
|
|
|
|
|
-void lru_add_drain_all(void)
|
|
|
|
|
|
+void lru_add_drain_all_cpuslocked(void)
|
|
{
|
|
{
|
|
static DEFINE_MUTEX(lock);
|
|
static DEFINE_MUTEX(lock);
|
|
static struct cpumask has_work;
|
|
static struct cpumask has_work;
|
|
@@ -702,7 +702,6 @@ void lru_add_drain_all(void)
|
|
return;
|
|
return;
|
|
|
|
|
|
mutex_lock(&lock);
|
|
mutex_lock(&lock);
|
|
- get_online_cpus();
|
|
|
|
cpumask_clear(&has_work);
|
|
cpumask_clear(&has_work);
|
|
|
|
|
|
for_each_online_cpu(cpu) {
|
|
for_each_online_cpu(cpu) {
|
|
@@ -722,10 +721,16 @@ void lru_add_drain_all(void)
|
|
for_each_cpu(cpu, &has_work)
|
|
for_each_cpu(cpu, &has_work)
|
|
flush_work(&per_cpu(lru_add_drain_work, cpu));
|
|
flush_work(&per_cpu(lru_add_drain_work, cpu));
|
|
|
|
|
|
- put_online_cpus();
|
|
|
|
mutex_unlock(&lock);
|
|
mutex_unlock(&lock);
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+void lru_add_drain_all(void)
|
|
|
|
+{
|
|
|
|
+ get_online_cpus();
|
|
|
|
+ lru_add_drain_all_cpuslocked();
|
|
|
|
+ put_online_cpus();
|
|
|
|
+}
|
|
|
|
+
|
|
/**
|
|
/**
|
|
* release_pages - batched put_page()
|
|
* release_pages - batched put_page()
|
|
* @pages: array of pages to release
|
|
* @pages: array of pages to release
|