|
@@ -974,7 +974,8 @@ static void __get_memory_limit(struct dm_bufio_client *c,
|
|
|
buffers = c->minimum_buffers;
|
|
|
|
|
|
*limit_buffers = buffers;
|
|
|
- *threshold_buffers = buffers * DM_BUFIO_WRITEBACK_PERCENT / 100;
|
|
|
+ *threshold_buffers = mult_frac(buffers,
|
|
|
+ DM_BUFIO_WRITEBACK_PERCENT, 100);
|
|
|
}
|
|
|
|
|
|
/*
|
|
@@ -1910,19 +1911,15 @@ static int __init dm_bufio_init(void)
|
|
|
memset(&dm_bufio_caches, 0, sizeof dm_bufio_caches);
|
|
|
memset(&dm_bufio_cache_names, 0, sizeof dm_bufio_cache_names);
|
|
|
|
|
|
- mem = (__u64)((totalram_pages - totalhigh_pages) *
|
|
|
- DM_BUFIO_MEMORY_PERCENT / 100) << PAGE_SHIFT;
|
|
|
+ mem = (__u64)mult_frac(totalram_pages - totalhigh_pages,
|
|
|
+ DM_BUFIO_MEMORY_PERCENT, 100) << PAGE_SHIFT;
|
|
|
|
|
|
if (mem > ULONG_MAX)
|
|
|
mem = ULONG_MAX;
|
|
|
|
|
|
#ifdef CONFIG_MMU
|
|
|
- /*
|
|
|
- * Get the size of vmalloc space the same way as VMALLOC_TOTAL
|
|
|
- * in fs/proc/internal.h
|
|
|
- */
|
|
|
- if (mem > (VMALLOC_END - VMALLOC_START) * DM_BUFIO_VMALLOC_PERCENT / 100)
|
|
|
- mem = (VMALLOC_END - VMALLOC_START) * DM_BUFIO_VMALLOC_PERCENT / 100;
|
|
|
+ if (mem > mult_frac(VMALLOC_TOTAL, DM_BUFIO_VMALLOC_PERCENT, 100))
|
|
|
+ mem = mult_frac(VMALLOC_TOTAL, DM_BUFIO_VMALLOC_PERCENT, 100);
|
|
|
#endif
|
|
|
|
|
|
dm_bufio_default_cache_size = mem;
|