|
@@ -940,10 +940,11 @@ static void __get_memory_limit(struct dm_bufio_client *c,
|
|
|
{
|
|
|
unsigned long buffers;
|
|
|
|
|
|
- if (ACCESS_ONCE(dm_bufio_cache_size) != dm_bufio_cache_size_latch) {
|
|
|
- mutex_lock(&dm_bufio_clients_lock);
|
|
|
- __cache_size_refresh();
|
|
|
- mutex_unlock(&dm_bufio_clients_lock);
|
|
|
+ if (unlikely(ACCESS_ONCE(dm_bufio_cache_size) != dm_bufio_cache_size_latch)) {
|
|
|
+ if (mutex_trylock(&dm_bufio_clients_lock)) {
|
|
|
+ __cache_size_refresh();
|
|
|
+ mutex_unlock(&dm_bufio_clients_lock);
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
buffers = dm_bufio_cache_size_per_client >>
|