From bddec074a2aa1a475a049d855d6195c6caf517c3 Mon Sep 17 00:00:00 2001 From: Bart Van Assche Date: Thu, 19 Jan 2017 17:06:06 -0800 Subject: [PATCH] scst_sgv: Convert to kernel v4.10 --- scst/src/scst_mem.c | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/scst/src/scst_mem.c b/scst/src/scst_mem.c index 74c852d7d..b8ca0f207 100644 --- a/scst/src/scst_mem.c +++ b/scst/src/scst_mem.c @@ -275,14 +275,14 @@ static int __sgv_shrink(int nr, int min_interval, int *out_freed) while (prev_nr > nr && nr > 0) { prev_nr = nr; - mutex_lock(&sgv_pools_mutex); - list_for_each_entry(pool, &sgv_pools_list, - sgv_pools_list_entry) { + rcu_read_lock(); + list_for_each_entry_rcu(pool, &sgv_pools_list, + sgv_pools_list_entry) { if (pool->cached_entries) nr = sgv_shrink_pool(pool, nr, min_interval, cur_time, out_freed); } - mutex_unlock(&sgv_pools_mutex); + rcu_read_unlock(); } TRACE_EXIT_RES(nr); @@ -1468,6 +1468,8 @@ out_del: spin_lock_bh(&sgv_pools_lock); list_del(&pool->sgv_pools_list_entry); spin_unlock_bh(&sgv_pools_lock); + + synchronize_rcu(); #endif out_free: @@ -1546,6 +1548,8 @@ static void sgv_pool_destroy(struct sgv_pool *pool) spin_unlock_bh(&sgv_pools_lock); mutex_unlock(&sgv_pools_mutex); + synchronize_rcu(); + #ifndef CONFIG_SCST_PROC scst_sgv_sysfs_del(pool); #endif