typedef struct percpu_counter lcounter_t;
+#define lcounter_read_positive(counter) percpu_counter_read_positive(counter)
#define lcounter_read(counter) (int)percpu_counter_read(counter)
#define lcounter_inc(counter) percpu_counter_inc(counter)
#define lcounter_dec(counter) percpu_counter_dec(counter)
typedef struct { atomic_t count; } lcounter_t;
#define lcounter_read(counter) atomic_read(&counter->count)
+#define lcounter_read_positive(counter) lcounter_read(counter)
#define lcounter_inc(counter) atomic_inc(&counter->count)
#define lcounter_dec(counter) atomic_dec(&counter->count)
#define lcounter_init(counter) atomic_set(&counter->count, 0)
LL_PGLIST_DATA_CPU(sbi, cpu)->llpd_budget = budget;
spin_unlock(&sbi->ll_async_page_reblnc_lock);
- if (lcounter_read(&sbi->ll_async_page_count) >= sbi->ll_async_page_max)
+ if (lcounter_read_positive(&sbi->ll_async_page_count) >=
+ sbi->ll_async_page_max)
llap_shrink_cache(sbi, -1);
return count;
unsigned long total, want, percpu_want, count = 0;
int cpu, nr_cpus;
- total = lcounter_read(&sbi->ll_async_page_count);
+ total = lcounter_read_positive(&sbi->ll_async_page_count);
if (total == 0)
return 0;
count, want, total);
#ifdef HAVE_SHRINKER_CACHE
- return lcounter_read(&sbi->ll_async_page_count);
+ return lcounter_read_positive(&sbi->ll_async_page_count);
#else
return count;
#endif