X-Git-Url: http://git.lttng.org/?a=blobdiff_plain;f=lib%2Fringbuffer%2Fring_buffer_backend.c;h=d6547d7de9c9cef6f45a6fb426c864a1b8ee3347;hb=cd4486798c2b046ea93b89439cd705e93c40b349;hp=8207f764377a34f5cb0fda0e41da8e56985dbd45;hpb=1f0ab1eb0409d23de5f67cc588c3ea4cee4d10e0;p=lttng-modules.git diff --git a/lib/ringbuffer/ring_buffer_backend.c b/lib/ringbuffer/ring_buffer_backend.c index 8207f764..d6547d7d 100644 --- a/lib/ringbuffer/ring_buffer_backend.c +++ b/lib/ringbuffer/ring_buffer_backend.c @@ -1,4 +1,4 @@ -/* SPDX-License-Identifier: (GPL-2.0 OR LGPL-2.1) +/* SPDX-License-Identifier: (GPL-2.0-only OR LGPL-2.1-only) * * ring_buffer_backend.c * @@ -12,15 +12,15 @@ #include #include #include -#include #include #include #include -#include /* for wrapper_vmalloc_sync_all() */ -#include -#include -#include +#include +#include /* for wrapper_vmalloc_sync_mappings() */ +#include +#include +#include /** * lib_ring_buffer_backend_allocate - allocate a channel buffer @@ -46,11 +46,13 @@ int lib_ring_buffer_backend_allocate(const struct lib_ring_buffer_config *config num_pages = size >> PAGE_SHIFT; /* - * Verify that the number of pages requested for that buffer is smaller - * than the number of available pages on the system. si_mem_available() - * returns an _estimate_ of the number of available pages. + * Verify that there is enough free pages available on the system for + * the current allocation request. + * wrapper_check_enough_free_pages uses si_mem_available() if available + * and returns if there should be enough free pages based on the + * current estimate. */ - if (num_pages > si_mem_available()) + if (!wrapper_check_enough_free_pages(num_pages)) goto not_enough_pages; /* @@ -59,7 +61,7 @@ int lib_ring_buffer_backend_allocate(const struct lib_ring_buffer_config *config * end up running out of memory because of this buffer allocation, we * want to kill the offending app first. */ - set_current_oom_origin(); + wrapper_set_current_oom_origin(); num_pages_per_subbuf = num_pages >> get_count_order(num_subbuf); subbuf_size = chanb->subbuf_size; @@ -154,8 +156,8 @@ int lib_ring_buffer_backend_allocate(const struct lib_ring_buffer_config *config * If kmalloc ever uses vmalloc underneath, make sure the buffer pages * will not fault. */ - wrapper_vmalloc_sync_all(); - clear_current_oom_origin(); + wrapper_vmalloc_sync_mappings(); + wrapper_clear_current_oom_origin(); vfree(pages); return 0; @@ -172,7 +174,7 @@ depopulate: array_error: vfree(pages); pages_error: - clear_current_oom_origin(); + wrapper_clear_current_oom_origin(); not_enough_pages: return -ENOMEM; }