[lustre-devel] [PATCH 14/21] lustre: make ccc_users in cl_client_cache a refcount_t
James Simmons
jsimmons at infradead.org
Sun Feb 10 20:01:55 PST 2019
> As this is used as a refcount, it should be declared
> as one.
Reviewed-by: James Simmons <jsimmons at infradead.org>
> Signed-off-by: NeilBrown <neilb at suse.com>
> ---
> drivers/staging/lustre/lustre/include/cl_object.h | 2 +-
> drivers/staging/lustre/lustre/llite/lproc_llite.c | 2 +-
> drivers/staging/lustre/lustre/obdclass/cl_page.c | 6 +++---
> drivers/staging/lustre/lustre/osc/osc_page.c | 4 ++--
> drivers/staging/lustre/lustre/osc/osc_request.c | 2 +-
> 5 files changed, 8 insertions(+), 8 deletions(-)
>
> diff --git a/drivers/staging/lustre/lustre/include/cl_object.h b/drivers/staging/lustre/lustre/include/cl_object.h
> index c2273c3100e8..05be85306663 100644
> --- a/drivers/staging/lustre/lustre/include/cl_object.h
> +++ b/drivers/staging/lustre/lustre/include/cl_object.h
> @@ -2181,7 +2181,7 @@ struct cl_client_cache {
> * # of client cache refcount
> * # of users (OSCs) + 2 (held by llite and lov)
> */
> - atomic_t ccc_users;
> + refcount_t ccc_users;
> /**
> * # of threads are doing shrinking
> */
> diff --git a/drivers/staging/lustre/lustre/llite/lproc_llite.c b/drivers/staging/lustre/lustre/llite/lproc_llite.c
> index 001bed90f4da..8215296dc15d 100644
> --- a/drivers/staging/lustre/lustre/llite/lproc_llite.c
> +++ b/drivers/staging/lustre/lustre/llite/lproc_llite.c
> @@ -467,7 +467,7 @@ static int ll_max_cached_mb_seq_show(struct seq_file *m, void *v)
> "used_mb: %ld\n"
> "unused_mb: %ld\n"
> "reclaim_count: %u\n",
> - atomic_read(&cache->ccc_users),
> + refcount_read(&cache->ccc_users),
> max_cached_mb,
> max_cached_mb - unused_mb,
> unused_mb,
> diff --git a/drivers/staging/lustre/lustre/obdclass/cl_page.c b/drivers/staging/lustre/lustre/obdclass/cl_page.c
> index f0ece7e9a4ac..7dcd3aff229f 100644
> --- a/drivers/staging/lustre/lustre/obdclass/cl_page.c
> +++ b/drivers/staging/lustre/lustre/obdclass/cl_page.c
> @@ -960,7 +960,7 @@ struct cl_client_cache *cl_cache_init(unsigned long lru_page_max)
> return NULL;
>
> /* Initialize cache data */
> - atomic_set(&cache->ccc_users, 1);
> + refcount_set(&cache->ccc_users, 1);
> cache->ccc_lru_max = lru_page_max;
> atomic_long_set(&cache->ccc_lru_left, lru_page_max);
> spin_lock_init(&cache->ccc_lru_lock);
> @@ -978,7 +978,7 @@ EXPORT_SYMBOL(cl_cache_init);
> */
> void cl_cache_incref(struct cl_client_cache *cache)
> {
> - atomic_inc(&cache->ccc_users);
> + refcount_inc(&cache->ccc_users);
> }
> EXPORT_SYMBOL(cl_cache_incref);
>
> @@ -989,7 +989,7 @@ EXPORT_SYMBOL(cl_cache_incref);
> */
> void cl_cache_decref(struct cl_client_cache *cache)
> {
> - if (atomic_dec_and_test(&cache->ccc_users))
> + if (refcount_dec_and_test(&cache->ccc_users))
> kfree(cache);
> }
> EXPORT_SYMBOL(cl_cache_decref);
> diff --git a/drivers/staging/lustre/lustre/osc/osc_page.c b/drivers/staging/lustre/lustre/osc/osc_page.c
> index 135bfe5e1b37..ce911b82512d 100644
> --- a/drivers/staging/lustre/lustre/osc/osc_page.c
> +++ b/drivers/staging/lustre/lustre/osc/osc_page.c
> @@ -346,7 +346,7 @@ static int osc_cache_too_much(struct client_obd *cli)
> long pages = atomic_long_read(&cli->cl_lru_in_list);
> unsigned long budget;
>
> - budget = cache->ccc_lru_max / (atomic_read(&cache->ccc_users) - 2);
> + budget = cache->ccc_lru_max / (refcount_read(&cache->ccc_users) - 2);
>
> /* if it's going to run out LRU slots, we should free some, but not
> * too much to maintain fairness among OSCs.
> @@ -707,7 +707,7 @@ static long osc_lru_reclaim(struct client_obd *cli, unsigned long npages)
> cache->ccc_lru_shrinkers++;
> list_move_tail(&cli->cl_lru_osc, &cache->ccc_lru);
>
> - max_scans = atomic_read(&cache->ccc_users) - 2;
> + max_scans = refcount_read(&cache->ccc_users) - 2;
> while (--max_scans > 0 &&
> (cli = list_first_entry_or_null(&cache->ccc_lru,
> struct client_obd,
> diff --git a/drivers/staging/lustre/lustre/osc/osc_request.c b/drivers/staging/lustre/lustre/osc/osc_request.c
> index 9e72fa8f68b3..0dfc506f6d01 100644
> --- a/drivers/staging/lustre/lustre/osc/osc_request.c
> +++ b/drivers/staging/lustre/lustre/osc/osc_request.c
> @@ -2959,7 +2959,7 @@ static int osc_cleanup(struct obd_device *obd)
>
> /* lru cleanup */
> if (cli->cl_cache) {
> - LASSERT(atomic_read(&cli->cl_cache->ccc_users) > 0);
> + LASSERT(refcount_read(&cli->cl_cache->ccc_users) > 0);
> spin_lock(&cli->cl_cache->ccc_lru_lock);
> list_del_init(&cli->cl_lru_osc);
> spin_unlock(&cli->cl_cache->ccc_lru_lock);
>
>
>
More information about the lustre-devel
mailing list