From 9e55da3353193247f1549f1b2964a9f04c738ee4 Mon Sep 17 00:00:00 2001 From: Tomasz Gromadzki Date: Mon, 23 Oct 2023 18:15:10 +0200 Subject: [PATCH] common: limit the size of stack memory by replacing with Malloc Signed-off-by: Tomasz Gromadzki --- ChangeLog | 2 + src/core/out.c | 18 ++++++- src/libpmem2/auto_flush_linux.c | 14 +++++- src/libpmem2/deep_flush_linux.c | 30 ++++++++---- src/libpmem2/pmem2_utils_linux.c | 43 +++++++++++++---- src/libpmem2/region_namespace_ndctl.c | 67 ++++++++++++++++++++------- src/stat/stack-usage-debug.txt | 60 ++++++++++++------------ src/stat/stack-usage-nondebug.txt | 55 ++++++++-------------- 8 files changed, 187 insertions(+), 102 deletions(-) diff --git a/ChangeLog b/ChangeLog index b2df03d8f63..468149a4d5b 100644 --- a/ChangeLog +++ b/ChangeLog @@ -2,6 +2,8 @@ This release: - Significantly reduces the libpmem's stack usage. + - Decrease stack usage by allocating paths' buffers on heap + Tue Aug 8 2023 Oksana Sałyk diff --git a/src/core/out.c b/src/core/out.c index a7f5f6eb340..eb84fd76864 100644 --- a/src/core/out.c +++ b/src/core/out.c @@ -20,6 +20,7 @@ #include "os_thread.h" #include "valgrind_internal.h" #include "util.h" +#include "alloc.h" static const char *Log_prefix; static int Log_level; @@ -161,12 +162,18 @@ out_init(const char *log_prefix, const char *log_level_var, log_file[0] != '\0') { /* reserve more than enough space for a PID + '\0' */ - char log_file_pid[PATH_MAX]; + char *log_file_pid; + log_file_pid = Malloc(PATH_MAX); + if (log_file_pid == NULL) { + fprintf(stderr, "out_init !Malloc\n"); + abort(); + } size_t len = strlen(log_file); if (len > 0 && log_file[len - 1] == '-') { if (util_snprintf(log_file_pid, PATH_MAX, "%s%d", log_file, getpid()) < 0) { ERR("snprintf: %d", errno); + Free(log_file_pid); abort(); } log_file = log_file_pid; @@ -178,8 +185,10 @@ out_init(const char *log_prefix, const char *log_level_var, fprintf(stderr, "Error (%s): %s=%s: %s\n", log_prefix, log_file_var, log_file, buff); + Free(log_file_pid); abort(); } + Free(log_file_pid); } #endif /* DEBUG */ @@ -196,7 +205,12 @@ out_init(const char *log_prefix, const char *log_level_var, setlinebuf(Out_fp); #ifdef DEBUG - static char namepath[PATH_MAX]; + char *namepath; + namepath = Malloc(PATH_MAX); + if (namepath == NULL) { + fprintf(stderr, "out_init !Malloc\n"); + abort(); + } LOG(1, "pid %d: program: %s", getpid(), util_getexecname(namepath, PATH_MAX)); #endif diff --git a/src/libpmem2/auto_flush_linux.c b/src/libpmem2/auto_flush_linux.c index ca12e348b4e..073e0d44e29 100644 --- a/src/libpmem2/auto_flush_linux.c +++ b/src/libpmem2/auto_flush_linux.c @@ -1,5 +1,5 @@ // SPDX-License-Identifier: BSD-3-Clause -/* Copyright 2018-2020, Intel Corporation */ +/* Copyright 2018-2023, Intel Corporation */ /* * auto_flush_linux.c -- Linux auto flush detection @@ -16,6 +16,7 @@ #include "os.h" #include "fs.h" #include "auto_flush.h" +#include "alloc.h" #define BUS_DEVICE_PATH "/sys/bus/nd/devices" #define PERSISTENCE_DOMAIN "persistence_domain" @@ -87,9 +88,16 @@ check_domain_in_region(const char *region_path) struct fs *reg = NULL; struct fs_entry *reg_entry; - char domain_path[PATH_MAX]; + char *domain_path = NULL; int cpu_cache = 0; + domain_path = Malloc(PATH_MAX); + if (domain_path == NULL) { + ERR("!Malloc"); + cpu_cache = -1; + goto end; + } + reg = fs_new(region_path); if (reg == NULL) { ERR("!fs_new: \"%s\"", region_path); @@ -122,6 +130,8 @@ check_domain_in_region(const char *region_path) end: if (reg) fs_delete(reg); + if (domain_path) + Free(domain_path); return cpu_cache; } diff --git a/src/libpmem2/deep_flush_linux.c b/src/libpmem2/deep_flush_linux.c index 567174b4253..336c3de78f7 100644 --- a/src/libpmem2/deep_flush_linux.c +++ b/src/libpmem2/deep_flush_linux.c @@ -1,5 +1,5 @@ // SPDX-License-Identifier: BSD-3-Clause -/* Copyright 2020, Intel Corporation */ +/* Copyright 2020-2023, Intel Corporation */ /* * deep_flush_linux.c -- deep_flush functionality @@ -18,6 +18,7 @@ #include "persist.h" #include "pmem2_utils.h" #include "region_namespace.h" +#include "alloc.h" /* * pmem2_deep_flush_write -- perform write to deep_flush file @@ -28,19 +29,28 @@ pmem2_deep_flush_write(unsigned region_id) { LOG(3, "region_id %d", region_id); - char deep_flush_path[PATH_MAX]; - int deep_flush_fd; + int ret = 0; + char *deep_flush_path = NULL; + int deep_flush_fd = -1; char rbuf[2]; + deep_flush_path = Malloc(PATH_MAX); + if (deep_flush_path == NULL) { + ERR("!Malloc"); + ret = -1; + goto end; + } + if (util_snprintf(deep_flush_path, PATH_MAX, "/sys/bus/nd/devices/region%u/deep_flush", region_id) < 0) { ERR("!snprintf"); - return PMEM2_E_ERRNO; + ret = PMEM2_E_ERRNO; + goto end; } if ((deep_flush_fd = os_open(deep_flush_path, O_RDONLY)) < 0) { LOG(1, "!os_open(\"%s\", O_RDONLY)", deep_flush_path); - return 0; + goto end; } if (read(deep_flush_fd, rbuf, sizeof(rbuf)) != 2) { @@ -54,11 +64,12 @@ pmem2_deep_flush_write(unsigned region_id) } os_close(deep_flush_fd); + deep_flush_fd = -1; if ((deep_flush_fd = os_open(deep_flush_path, O_WRONLY)) < 0) { LOG(1, "Cannot open deep_flush file %s to write", deep_flush_path); - return 0; + goto end; } if (write(deep_flush_fd, "1", 1) != 1) { @@ -67,8 +78,11 @@ pmem2_deep_flush_write(unsigned region_id) } end: - os_close(deep_flush_fd); - return 0; + if (deep_flush_fd > -1) + os_close(deep_flush_fd); + if (deep_flush_path) + Free(deep_flush_path); + return ret; } /* diff --git a/src/libpmem2/pmem2_utils_linux.c b/src/libpmem2/pmem2_utils_linux.c index 57cc432ff9d..fa15d1ef5c4 100644 --- a/src/libpmem2/pmem2_utils_linux.c +++ b/src/libpmem2/pmem2_utils_linux.c @@ -1,5 +1,5 @@ // SPDX-License-Identifier: BSD-3-Clause -/* Copyright 2014-2020, Intel Corporation */ +/* Copyright 2014-2023, Intel Corporation */ #include #include @@ -14,6 +14,7 @@ #include "pmem2_utils.h" #include "region_namespace.h" #include "source.h" +#include "alloc.h" /* * pmem2_get_type_from_stat -- determine type of file based on output of stat @@ -37,8 +38,18 @@ pmem2_get_type_from_stat(const os_stat_t *st, enum pmem2_file_type *type) return PMEM2_E_INVALID_FILE_TYPE; } - char spath[PATH_MAX]; - int ret = util_snprintf(spath, PATH_MAX, + int ret = 0; + char *spath = NULL; + char *npath = NULL; + + spath = Malloc(PATH_MAX); + if (spath == NULL) { + errno = ENOMEM; + ERR("!Malloc"); + return PMEM2_E_ERRNO; + } + + ret = util_snprintf(spath, PATH_MAX, "/sys/dev/char/%u:%u/subsystem", os_major(st->st_rdev), os_minor(st->st_rdev)); @@ -46,25 +57,41 @@ pmem2_get_type_from_stat(const os_stat_t *st, enum pmem2_file_type *type) /* impossible */ ERR("!snprintf"); ASSERTinfo(0, "snprintf failed"); - return PMEM2_E_ERRNO; + ret = PMEM2_E_ERRNO; + goto end; } LOG(4, "device subsystem path \"%s\"", spath); - char npath[PATH_MAX]; + npath = Malloc(PATH_MAX); + if (npath == NULL) { + errno = ENOMEM; + ERR("!Malloc"); + ret = PMEM2_E_ERRNO; + goto end; + } + char *rpath = realpath(spath, npath); if (rpath == NULL) { ERR("!realpath \"%s\"", spath); - return PMEM2_E_ERRNO; + ret = PMEM2_E_ERRNO; + goto end; } char *basename = strrchr(rpath, '/'); if (!basename || strcmp("dax", basename + 1) != 0) { LOG(3, "%s path does not match device dax prefix path", rpath); - return PMEM2_E_INVALID_FILE_TYPE; + ret = PMEM2_E_INVALID_FILE_TYPE; + goto end; } *type = PMEM2_FTYPE_DEVDAX; - return 0; +end: + if (spath) + Free(spath); + if (npath) + Free(npath); + + return ret; } diff --git a/src/libpmem2/region_namespace_ndctl.c b/src/libpmem2/region_namespace_ndctl.c index dfdec34de54..7546c84a652 100644 --- a/src/libpmem2/region_namespace_ndctl.c +++ b/src/libpmem2/region_namespace_ndctl.c @@ -1,5 +1,5 @@ // SPDX-License-Identifier: BSD-3-Clause -/* Copyright 2020-2022, Intel Corporation */ +/* Copyright 2020-2023, Intel Corporation */ /* * region_namespace_ndctl.c -- common ndctl functions @@ -16,6 +16,7 @@ #include "region_namespace_ndctl.h" #include "region_namespace.h" #include "out.h" +#include "alloc.h" /* * ndctl_match_devdax -- (internal) returns 0 if the devdax matches @@ -27,30 +28,44 @@ ndctl_match_devdax(dev_t st_rdev, const char *devname) { LOG(3, "st_rdev %lu devname %s", st_rdev, devname); + int ret = 0; + char *path; + os_stat_t stat; + if (*devname == '\0') return 1; - char path[PATH_MAX]; - os_stat_t stat; + path = Malloc(PATH_MAX); + if (path == NULL) { + errno = ENOMEM; + ERR("!Malloc"); + return PMEM2_E_ERRNO; + + } if (util_snprintf(path, PATH_MAX, "/dev/%s", devname) < 0) { ERR("!snprintf"); - return PMEM2_E_ERRNO; + ret = PMEM2_E_ERRNO; + goto end; } if (os_stat(path, &stat)) { ERR("!stat %s", path); - return PMEM2_E_ERRNO; + ret = PMEM2_E_ERRNO; + goto end; } if (st_rdev != stat.st_rdev) { LOG(10, "skipping not matching device: %s", path); - return 1; + ret = 1; + goto end; } LOG(4, "found matching device: %s", path); +end: + Free(path); - return 0; + return ret; } #define BUFF_LENGTH 64 @@ -65,27 +80,38 @@ ndctl_match_fsdax(dev_t st_dev, const char *devname) { LOG(3, "st_dev %lu devname %s", st_dev, devname); + int ret = 0; + char *path; + char dev_id[BUFF_LENGTH]; + if (*devname == '\0') return 1; - char path[PATH_MAX]; - char dev_id[BUFF_LENGTH]; + path = Malloc(PATH_MAX); + if (path == NULL) { + errno = ENOMEM; + ERR("!Malloc"); + return PMEM2_E_ERRNO; + } if (util_snprintf(path, PATH_MAX, "/sys/block/%s/dev", devname) < 0) { ERR("!snprintf"); - return PMEM2_E_ERRNO; + ret = PMEM2_E_ERRNO; + goto end; } if (util_snprintf(dev_id, BUFF_LENGTH, "%d:%d", major(st_dev), minor(st_dev)) < 0) { ERR("!snprintf"); - return PMEM2_E_ERRNO; + ret = PMEM2_E_ERRNO; + goto end; } int fd = os_open(path, O_RDONLY); if (fd < 0) { ERR("!open \"%s\"", path); - return PMEM2_E_ERRNO; + ret = PMEM2_E_ERRNO; + goto end; } char buff[BUFF_LENGTH]; @@ -95,31 +121,38 @@ ndctl_match_fsdax(dev_t st_dev, const char *devname) int oerrno = errno; /* save the errno */ os_close(fd); errno = oerrno; - return PMEM2_E_ERRNO; + ret = PMEM2_E_ERRNO; + goto end; } os_close(fd); if (nread == 0) { ERR("%s is empty", path); - return PMEM2_E_INVALID_DEV_FORMAT; + ret = PMEM2_E_INVALID_DEV_FORMAT; + goto end; } if (buff[nread - 1] != '\n') { ERR("%s doesn't end with new line", path); - return PMEM2_E_INVALID_DEV_FORMAT; + ret = PMEM2_E_INVALID_DEV_FORMAT; + goto end; } buff[nread - 1] = '\0'; if (strcmp(buff, dev_id) != 0) { LOG(10, "skipping not matching device: %s", path); - return 1; + ret = 1; + goto end; } LOG(4, "found matching device: %s", path); - return 0; +end: + Free(path); + + return ret; } /* diff --git a/src/stat/stack-usage-debug.txt b/src/stat/stack-usage-debug.txt index 5b1505963d8..83bd7d71471 100644 --- a/src/stat/stack-usage-debug.txt +++ b/src/stat/stack-usage-debug.txt @@ -129,11 +129,6 @@ 8448 src/debug/libpmemobj/out.su:out.c:out_common dynamic,bounded 8448 src/debug/libpmem2/out.su:out.c:out_common dynamic,bounded 8448 src/debug/core/out.su:out.c:out_common dynamic,bounded -8288 src/debug/libpmempool/pmem2_utils_linux.su:pmem2_utils_linux.c:pmem2_get_type_from_stat dynamic,bounded -8288 src/debug/libpmem/pmem2_utils_linux.su:pmem2_utils_linux.c:pmem2_get_type_from_stat dynamic,bounded -8288 src/debug/libpmemobj/pmem2_utils_linux.su:pmem2_utils_linux.c:pmem2_get_type_from_stat dynamic,bounded -8288 src/debug/libpmem2/pmem2_utils_linux.su:pmem2_utils_linux.c:pmem2_get_type_from_stat dynamic,bounded -8288 src/debug/common/pmem2_utils_linux.su:pmem2_utils_linux.c:pmem2_get_type_from_stat dynamic,bounded 8272 src/debug/libpmempool/replica.su:replica.c:replica_check_store_size dynamic,bounded 6768 src/debug/libpmem/memset_nt_sse2.su:memset_nt_sse2.c:memset_movnt_sse2_clwb_wcbarrier dynamic,bounded 6768 src/debug/libpmem/memset_nt_sse2.su:memset_nt_sse2.c:memset_movnt_sse2_clflushopt_wcbarrier dynamic,bounded @@ -166,39 +161,14 @@ 5936 src/debug/libpmem2/memset_t_avx.su:memset_t_avx.c:memset_mov_avx_empty dynamic,bounded 5936 src/debug/libpmem2/memset_t_avx.su:memset_t_avx.c:memset_mov_avx_noflush dynamic,bounded 4384 src/debug/libpmempool/pool.su:pool.c:pool_params_parse dynamic,bounded -4352 src/debug/libpmempool/out.su:out.c:out_init dynamic,bounded -4352 src/debug/libpmem/out.su:out.c:out_init dynamic,bounded -4352 src/debug/libpmemobj/out.su:out.c:out_init dynamic,bounded -4352 src/debug/libpmem2/out.su:out.c:out_init dynamic,bounded -4352 src/debug/core/out.su:out.c:out_init dynamic,bounded -4320 src/debug/libpmem/region_namespace_ndctl.su:region_namespace_ndctl.c:ndctl_match_fsdax dynamic,bounded -4320 src/debug/libpmempool/region_namespace_ndctl.su:region_namespace_ndctl.c:ndctl_match_fsdax dynamic,bounded -4320 src/debug/libpmemobj/region_namespace_ndctl.su:region_namespace_ndctl.c:ndctl_match_fsdax dynamic,bounded -4320 src/debug/libpmem2/region_namespace_ndctl.su:region_namespace_ndctl.c:ndctl_match_fsdax dynamic,bounded -4320 src/debug/common/region_namespace_ndctl.su:region_namespace_ndctl.c:ndctl_match_fsdax dynamic,bounded -4288 src/debug/libpmem/region_namespace_ndctl.su:region_namespace_ndctl.c:ndctl_match_devdax dynamic,bounded -4288 src/debug/libpmempool/region_namespace_ndctl.su:region_namespace_ndctl.c:ndctl_match_devdax dynamic,bounded 4288 src/debug/libpmempool/pool.su:pool.c:pool_set_map dynamic,bounded -4288 src/debug/libpmemobj/region_namespace_ndctl.su:region_namespace_ndctl.c:ndctl_match_devdax dynamic,bounded -4288 src/debug/libpmem2/region_namespace_ndctl.su:region_namespace_ndctl.c:ndctl_match_devdax dynamic,bounded -4288 src/debug/common/region_namespace_ndctl.su:region_namespace_ndctl.c:ndctl_match_devdax dynamic,bounded 4208 src/debug/libpmempool/set.su:set.c:util_header_check dynamic,bounded 4208 src/debug/libpmemobj/set.su:set.c:util_header_check dynamic,bounded 4208 src/debug/common/set.su:set.c:util_header_check dynamic,bounded 4176 src/debug/libpmempool/feature.su:feature.c:features_check static -4160 src/debug/libpmempool/deep_flush_linux.su:deep_flush_linux.c:pmem2_deep_flush_write static 4160 src/debug/libpmempool/check_pool_hdr.su:check_pool_hdr.c:check_pool_hdr_uuids static 4160 src/debug/libpmempool/check_pool_hdr.su:check_pool_hdr.c:check_pool_hdr static 4160 src/debug/libpmempool/check_pool_hdr.su:check_pool_hdr.c:pool_hdr_default_fix dynamic,bounded -4160 src/debug/libpmempool/auto_flush_linux.su:auto_flush_linux.c:check_domain_in_region static -4160 src/debug/libpmemobj/deep_flush_linux.su:deep_flush_linux.c:pmem2_deep_flush_write static -4160 src/debug/libpmemobj/auto_flush_linux.su:auto_flush_linux.c:check_domain_in_region static -4160 src/debug/libpmem/deep_flush_linux.su:deep_flush_linux.c:pmem2_deep_flush_write static -4160 src/debug/libpmem/auto_flush_linux.su:auto_flush_linux.c:check_domain_in_region static -4160 src/debug/libpmem2/deep_flush_linux.su:deep_flush_linux.c:pmem2_deep_flush_write static -4160 src/debug/libpmem2/auto_flush_linux.su:auto_flush_linux.c:check_domain_in_region static -4160 src/debug/common/deep_flush_linux.su:deep_flush_linux.c:pmem2_deep_flush_write static -4160 src/debug/common/auto_flush_linux.su:auto_flush_linux.c:check_domain_in_region static 4144 src/debug/libpmempool/pool.su:pool.c:pool_set_type static 4144 src/debug/libpmempool/check_pool_hdr.su:check_pool_hdr.c:pool_hdr_default_check static 3200 src/debug/libpmem/memset_t_sse2.su:memset_t_sse2.c:memset_mov_sse2_clwb dynamic,bounded @@ -306,25 +276,30 @@ 272 src/debug/libpmempool/pool.su:pool.c:pool_set_part_copy dynamic,bounded 272 src/debug/libpmempool/out.su:out.c:out_fatal dynamic,bounded 272 src/debug/libpmempool/out.su:out.c:out_log dynamic,bounded +272 src/debug/libpmempool/out.su:out.c:out_init dynamic,bounded 272 src/debug/libpmempool/feature.su:feature.c:buff_concat static 272 src/debug/libpmempool/extent_linux.su:extent_linux.c:pmem2_extents_create_get dynamic,bounded 272 src/debug/libpmem/out.su:out.c:out_fatal dynamic,bounded 272 src/debug/libpmem/out.su:out.c:out_log dynamic,bounded +272 src/debug/libpmem/out.su:out.c:out_init dynamic,bounded 272 src/debug/libpmemobj/ulog.su:ulog.c:ulog_inc_gen_num static 272 src/debug/libpmemobj/tx.su:tx.c:pmemobj_tx_xfree static 272 src/debug/libpmemobj/set.su:set.c:util_replica_map_local dynamic,bounded 272 src/debug/libpmemobj/recycler.su:recycler.c:recycler_recalc static 272 src/debug/libpmemobj/out.su:out.c:out_fatal dynamic,bounded 272 src/debug/libpmemobj/out.su:out.c:out_log dynamic,bounded +272 src/debug/libpmemobj/out.su:out.c:out_init dynamic,bounded 272 src/debug/libpmemobj/list.su:list.c:list_move dynamic,bounded 272 src/debug/libpmemobj/list.su:list.c:list_remove_free dynamic,bounded 272 src/debug/libpmemobj/extent_linux.su:extent_linux.c:pmem2_extents_create_get dynamic,bounded 272 src/debug/libpmemobj/critnib.su:critnib.c:critnib_insert static 272 src/debug/libpmem2/out.su:out.c:out_fatal dynamic,bounded 272 src/debug/libpmem2/out.su:out.c:out_log dynamic,bounded +272 src/debug/libpmem2/out.su:out.c:out_init dynamic,bounded 272 src/debug/libpmem2/extent_linux.su:extent_linux.c:pmem2_extents_create_get dynamic,bounded 272 src/debug/core/out.su:out.c:out_fatal dynamic,bounded 272 src/debug/core/out.su:out.c:out_log dynamic,bounded +272 src/debug/core/out.su:out.c:out_init dynamic,bounded 272 src/debug/common/set.su:set.c:util_replica_map_local dynamic,bounded 272 src/debug/common/extent_linux.su:extent_linux.c:pmem2_extents_create_get dynamic,bounded 256 src/debug/libpmem/util.su:util.c:util_snprintf static @@ -361,19 +336,24 @@ 256 src/debug/common/set.su:set.c:util_header_create dynamic,bounded 256 src/debug/common/file_posix.su:file_posix.c:util_ddax_region_find static 240 src/debug/libpmem/source_posix.su:source_posix.c:pmem2_source_from_fd dynamic,bounded +240 src/debug/libpmem/region_namespace_ndctl.su:region_namespace_ndctl.c:ndctl_match_fsdax dynamic,bounded 240 src/debug/libpmempool/source_posix.su:source_posix.c:pmem2_source_from_fd dynamic,bounded +240 src/debug/libpmempool/region_namespace_ndctl.su:region_namespace_ndctl.c:ndctl_match_fsdax dynamic,bounded 240 src/debug/libpmempool/pool.su:pool.c:pool_copy static 240 src/debug/libpmempool/os_posix.su:os_posix.c:os_open static 240 src/debug/libpmem/os_posix.su:os_posix.c:os_open static 240 src/debug/libpmemobj/source_posix.su:source_posix.c:pmem2_source_from_fd dynamic,bounded +240 src/debug/libpmemobj/region_namespace_ndctl.su:region_namespace_ndctl.c:ndctl_match_fsdax dynamic,bounded 240 src/debug/libpmemobj/os_posix.su:os_posix.c:os_open static 240 src/debug/libpmemobj/memblock.su:memblock.c:huge_ensure_header_type dynamic,bounded 240 src/debug/libpmem2/vm_reservation.su:vm_reservation.c:pmem2_vm_reservation_map_find dynamic,bounded 240 src/debug/libpmem2/source_posix.su:source_posix.c:pmem2_source_from_fd dynamic,bounded +240 src/debug/libpmem2/region_namespace_ndctl.su:region_namespace_ndctl.c:ndctl_match_fsdax dynamic,bounded 240 src/debug/libpmem2/os_posix.su:os_posix.c:os_open static 240 src/debug/libpmem2/errormsg.su:errormsg.c:pmem2_perror static 240 src/debug/core/os_posix.su:os_posix.c:os_open static 240 src/debug/common/source_posix.su:source_posix.c:pmem2_source_from_fd dynamic,bounded +240 src/debug/common/region_namespace_ndctl.su:region_namespace_ndctl.c:ndctl_match_fsdax dynamic,bounded 224 src/debug/libpmempool/sync.su:sync.c:sync_badblocks_find_healthy_replica dynamic,bounded 224 src/debug/libpmempool/sync.su:sync.c:grant_created_parts_perm dynamic,bounded 224 src/debug/libpmempool/set.su:set.c:util_parse_add_element dynamic,bounded @@ -395,18 +375,23 @@ 224 src/debug/common/set.su:set.c:util_poolset_chmod dynamic,bounded 224 src/debug/common/set.su:set.c:util_map_part dynamic,bounded 224 src/debug/common/os_deep_linux.su:os_deep_linux.c:os_part_deep_common dynamic,bounded +208 src/debug/libpmem/region_namespace_ndctl.su:region_namespace_ndctl.c:ndctl_match_devdax dynamic,bounded 208 src/debug/libpmempool/sync.su:sync.c:sync_check_bad_blocks_overlap dynamic,bounded 208 src/debug/libpmempool/sync.su:sync.c:sync_badblocks_assign_healthy_replica dynamic,bounded 208 src/debug/libpmempool/replica.su:replica.c:check_shutdown_state dynamic,bounded +208 src/debug/libpmempool/region_namespace_ndctl.su:region_namespace_ndctl.c:ndctl_match_devdax dynamic,bounded 208 src/debug/libpmempool/pool.su:pool.c:pool_set_file_open static 208 src/debug/libpmem/pmem.su:pmem.c:pmem_init static 208 src/debug/libpmemobj/tx.su:tx.c:tx_realloc_common dynamic,bounded +208 src/debug/libpmemobj/region_namespace_ndctl.su:region_namespace_ndctl.c:ndctl_match_devdax dynamic,bounded 208 src/debug/libpmemobj/palloc.su:palloc.c:palloc_reservation_clear static 208 src/debug/libpmemobj/obj.su:obj.c:constructor_zrealloc_root dynamic,bounded 208 src/debug/libpmemobj/memops.su:memops.c:operation_init static 208 src/debug/libpmemobj/list.su:list.c:list_insert dynamic,bounded 208 src/debug/libpmemobj/bucket.su:bucket.c:bucket_detach_run static +208 src/debug/libpmem2/region_namespace_ndctl.su:region_namespace_ndctl.c:ndctl_match_devdax dynamic,bounded 208 src/debug/libpmem2/map_posix.su:map_posix.c:pmem2_map_delete static +208 src/debug/common/region_namespace_ndctl.su:region_namespace_ndctl.c:ndctl_match_devdax dynamic,bounded 192 src/debug/libpmem/source_posix.su:source_posix.c:pmem2_source_size static 192 src/debug/libpmempool/sync.su:sync.c:sync_recreate_header dynamic,bounded 192 src/debug/libpmempool/source_posix.su:source_posix.c:pmem2_source_size static @@ -885,6 +870,7 @@ 112 src/debug/libpmempool/replica.su:replica.c:replica_check_poolset_health dynamic,bounded 112 src/debug/libpmempool/replica.su:replica.c:replica_badblocks_check_or_clear dynamic,bounded 112 src/debug/libpmempool/replica.su:replica.c:replica_badblocks_get dynamic,bounded +112 src/debug/libpmempool/pmem2_utils_linux.su:pmem2_utils_linux.c:pmem2_get_type_from_stat dynamic,bounded 112 src/debug/libpmempool/mmap.su:mmap.c:util_range_split dynamic,bounded 112 src/debug/libpmempool/mmap.su:mmap.c:util_range_register dynamic,bounded 112 src/debug/libpmempool/file.su:file.c:util_file_open dynamic,bounded @@ -900,6 +886,7 @@ 112 src/debug/libpmem/pmem.su:pmem.c:pmem_flush dynamic,bounded 112 src/debug/libpmem/pmem.su:pmem.c:pmem_deep_flush dynamic,bounded 112 src/debug/libpmem/pmem_posix.su:pmem_posix.c:pmem_map_register dynamic,bounded +112 src/debug/libpmem/pmem2_utils_linux.su:pmem2_utils_linux.c:pmem2_get_type_from_stat dynamic,bounded 112 src/debug/libpmemobj/usc_ndctl.su:usc_ndctl.c:pmem2_source_device_usc dynamic,bounded 112 src/debug/libpmemobj/ulog.su:ulog.c:ulog_clobber_data dynamic,bounded 112 src/debug/libpmemobj/ulog.su:ulog.c:ulog_reserve dynamic,bounded @@ -917,6 +904,7 @@ 112 src/debug/libpmemobj/set.su:set.c:util_unmap_hdr dynamic,bounded 112 src/debug/libpmemobj/set.su:set.c:util_replica_init_headers_local dynamic,bounded 112 src/debug/libpmemobj/set.su:set.c:util_poolset_directory_load dynamic,bounded +112 src/debug/libpmemobj/pmem2_utils_linux.su:pmem2_utils_linux.c:pmem2_get_type_from_stat dynamic,bounded 112 src/debug/libpmemobj/palloc.su:palloc.c:palloc_defer_free_create static 112 src/debug/libpmemobj/palloc.su:palloc.c:palloc_reserve dynamic,bounded 112 src/debug/libpmemobj/palloc.su:palloc.c:palloc_exec_actions dynamic,bounded @@ -959,6 +947,7 @@ 112 src/debug/libpmem/file.su:file.c:util_file_zero dynamic,bounded 112 src/debug/libpmem2/vm_reservation.su:vm_reservation.c:pmem2_vm_reservation_new static 112 src/debug/libpmem2/usc_ndctl.su:usc_ndctl.c:pmem2_source_device_usc dynamic,bounded +112 src/debug/libpmem2/pmem2_utils_linux.su:pmem2_utils_linux.c:pmem2_get_type_from_stat dynamic,bounded 112 src/debug/libpmem2/persist.su:persist.c:pmem2_flush_file_buffers static 112 src/debug/libpmem2/persist.su:persist.c:pmem2_log_flush dynamic,bounded 112 src/debug/libpmem2/mcsafe_ops_posix.su:mcsafe_ops_posix.c:devdax_write dynamic,bounded @@ -975,6 +964,7 @@ 112 src/debug/common/set.su:set.c:util_unmap_hdr dynamic,bounded 112 src/debug/common/set.su:set.c:util_replica_init_headers_local dynamic,bounded 112 src/debug/common/set.su:set.c:util_poolset_directory_load dynamic,bounded +112 src/debug/common/pmem2_utils_linux.su:pmem2_utils_linux.c:pmem2_get_type_from_stat dynamic,bounded 112 src/debug/common/mmap.su:mmap.c:util_range_split dynamic,bounded 112 src/debug/common/mmap.su:mmap.c:util_range_register dynamic,bounded 112 src/debug/common/file.su:file.c:util_file_open dynamic,bounded @@ -1213,6 +1203,7 @@ 80 src/debug/libpmempool/check_backup.su:check_backup.c:backup_poolset static 80 src/debug/libpmempool/bad_blocks.su:vec.h:vec_reserve static 80 src/debug/libpmempool/badblocks_ndctl.su:badblocks_ndctl.c:pmem2_badblock_clear_fsdax dynamic,bounded +80 src/debug/libpmempool/auto_flush_linux.su:auto_flush_linux.c:check_domain_in_region static 80 src/debug/libpmem/pmem.su:pmem.c:fence_empty static 80 src/debug/libpmem/pmem.su:pmem.c:pmem_memset dynamic,bounded 80 src/debug/libpmem/pmem.su:pmem.c:pmem_memcpy dynamic,bounded @@ -1316,6 +1307,7 @@ 80 src/debug/libpmemobj/config.su:config.c:pmem2_config_validate_length dynamic,bounded 80 src/debug/libpmemobj/bad_blocks.su:vec.h:vec_reserve static 80 src/debug/libpmemobj/badblocks_ndctl.su:badblocks_ndctl.c:pmem2_badblock_clear_fsdax dynamic,bounded +80 src/debug/libpmemobj/auto_flush_linux.su:auto_flush_linux.c:check_domain_in_region static 80 src/debug/libpmem/mmap.su:mmap.c:util_range_is_pmem dynamic,bounded 80 src/debug/libpmem/mmap.su:mmap.c:util_range_unregister dynamic,bounded 80 src/debug/libpmem/mmap_posix.su:mmap_posix.c:util_map_hint dynamic,bounded @@ -1326,6 +1318,7 @@ 80 src/debug/libpmem/file.su:file.c:util_file_map_whole dynamic,bounded 80 src/debug/libpmem/file.su:file.c:util_fd_get_size static 80 src/debug/libpmem/config.su:config.c:pmem2_config_validate_length dynamic,bounded +80 src/debug/libpmem/auto_flush_linux.su:auto_flush_linux.c:check_domain_in_region static 80 src/debug/libpmem2/vm_reservation.su:vm_reservation.c:pmem2_vm_reservation_map_find_next dynamic,bounded 80 src/debug/libpmem2/vm_reservation.su:vm_reservation.c:pmem2_vm_reservation_map_find_prev dynamic,bounded 80 src/debug/libpmem2/vm_reservation_posix.su:vm_reservation_posix.c:vm_reservation_reserve_memory static @@ -1349,6 +1342,7 @@ 80 src/debug/libpmem2/init.su:init.c:flush_clflush dynamic,bounded 80 src/debug/libpmem2/config.su:config.c:pmem2_config_validate_length dynamic,bounded 80 src/debug/libpmem2/badblocks_ndctl.su:badblocks_ndctl.c:pmem2_badblock_clear_fsdax dynamic,bounded +80 src/debug/libpmem2/auto_flush_linux.su:auto_flush_linux.c:check_domain_in_region static 80 src/debug/core/util.su:util.c:util_readline static 80 src/debug/core/util.su:util.c:util_checksum_seq static 80 src/debug/core/util.su:util.c:util_checksum_compute static @@ -1384,6 +1378,7 @@ 80 src/debug/common/config.su:config.c:pmem2_config_validate_length dynamic,bounded 80 src/debug/common/bad_blocks.su:vec.h:vec_reserve static 80 src/debug/common/badblocks_ndctl.su:badblocks_ndctl.c:pmem2_badblock_clear_fsdax dynamic,bounded +80 src/debug/common/auto_flush_linux.su:auto_flush_linux.c:check_domain_in_region static 64 src/debug/libpmem/util.su:util.c:util_concat_str static 64 src/debug/libpmem/util.su:util.c:util_fgets static 64 src/debug/libpmem/util_posix.su:util_posix.c:util_aligned_malloc static @@ -1475,6 +1470,7 @@ 64 src/debug/libpmempool/feature.su:feature.c:enable_shutdown_state dynamic,bounded 64 src/debug/libpmempool/feature.su:feature.c:disable_checksum_2k dynamic,bounded 64 src/debug/libpmempool/feature.su:feature.c:feature_set static +64 src/debug/libpmempool/deep_flush_linux.su:deep_flush_linux.c:pmem2_deep_flush_write static 64 src/debug/libpmempool/ctl.su:ctl.c:ctl_arg_integer static 64 src/debug/libpmempool/ctl.su:ctl.c:ctl_arg_boolean static 64 src/debug/libpmempool/ctl.su:ctl.c:ctl_parse_ll static @@ -1640,6 +1636,7 @@ 64 src/debug/libpmemobj/file.su:file.c:util_write_all static 64 src/debug/libpmemobj/file_posix.su:file_posix.c:util_file_dir_next dynamic,bounded 64 src/debug/libpmemobj/file_posix.su:file_posix.c:device_dax_alignment static +64 src/debug/libpmemobj/deep_flush_linux.su:deep_flush_linux.c:pmem2_deep_flush_write static 64 src/debug/libpmemobj/ctl.su:ctl.c:ctl_arg_integer static 64 src/debug/libpmemobj/ctl.su:ctl.c:ctl_arg_boolean static 64 src/debug/libpmemobj/ctl.su:ctl.c:ctl_parse_ll static @@ -1678,6 +1675,7 @@ 64 src/debug/libpmem/file.su:file.c:util_write_all static 64 src/debug/libpmem/file_posix.su:file_posix.c:util_file_dir_next dynamic,bounded 64 src/debug/libpmem/file_posix.su:file_posix.c:device_dax_alignment static +64 src/debug/libpmem/deep_flush_linux.su:deep_flush_linux.c:pmem2_deep_flush_write static 64 src/debug/libpmem/cpu.su:cpu.c:is_cpu_genuine_intel static 64 src/debug/libpmem/config.su:config.c:pmem2_config_new dynamic,bounded 64 src/debug/libpmem/config.su:config.c:pmem2_config_set_vm_reservation static @@ -1711,6 +1709,7 @@ 64 src/debug/libpmem2/init.su:init.c:pmem_memset_nodrain_eadr static 64 src/debug/libpmem2/init.su:init.c:pmem_memset_nodrain static 64 src/debug/libpmem2/fs_posix.su:fs_posix.c:fs_new static +64 src/debug/libpmem2/deep_flush_linux.su:deep_flush_linux.c:pmem2_deep_flush_write static 64 src/debug/libpmem2/cpu.su:cpu.c:is_cpu_genuine_intel static 64 src/debug/libpmem2/config.su:config.c:pmem2_config_new dynamic,bounded 64 src/debug/libpmem2/config.su:config.c:pmem2_config_set_vm_reservation static @@ -1765,6 +1764,7 @@ 64 src/debug/common/file.su:file.c:util_write_all static 64 src/debug/common/file_posix.su:file_posix.c:util_file_dir_next dynamic,bounded 64 src/debug/common/file_posix.su:file_posix.c:device_dax_alignment static +64 src/debug/common/deep_flush_linux.su:deep_flush_linux.c:pmem2_deep_flush_write static 64 src/debug/common/ctl.su:ctl.c:ctl_arg_integer static 64 src/debug/common/ctl.su:ctl.c:ctl_arg_boolean static 64 src/debug/common/ctl.su:ctl.c:ctl_parse_ll static diff --git a/src/stat/stack-usage-nondebug.txt b/src/stat/stack-usage-nondebug.txt index b7b07db9944..6242ecd88a0 100644 --- a/src/stat/stack-usage-nondebug.txt +++ b/src/stat/stack-usage-nondebug.txt @@ -5,42 +5,17 @@ 8432 src/nondebug/libpmem2/out.su:out.c:out_common dynamic,bounded 8432 src/nondebug/core/out.su:out.c:out_common dynamic,bounded 8240 src/nondebug/libpmempool/replica.su:replica.c:replica_check_store_size static -8224 src/nondebug/libpmempool/pmem2_utils_linux.su:pmem2_utils_linux.c:pmem2_get_type_from_stat static -8224 src/nondebug/libpmem/pmem2_utils_linux.su:pmem2_utils_linux.c:pmem2_get_type_from_stat static -8224 src/nondebug/libpmemobj/pmem2_utils_linux.su:pmem2_utils_linux.c:pmem2_get_type_from_stat static -8224 src/nondebug/libpmem2/pmem2_utils_linux.su:pmem2_utils_linux.c:pmem2_get_type_from_stat static -8224 src/nondebug/common/pmem2_utils_linux.su:pmem2_utils_linux.c:pmem2_get_type_from_stat static 7424 src/nondebug/libpmem/memcpy_t_avx512f.su:memcpy_t_avx512f.c:memmove_mov_avx512f_empty static 7424 src/nondebug/libpmem2/memcpy_t_avx512f.su:memcpy_t_avx512f.c:memmove_mov_avx512f_empty static 4352 src/nondebug/libpmempool/pool.su:pool.c:pool_params_parse.isra.2.constprop dynamic,bounded -4272 src/nondebug/libpmem/region_namespace_ndctl.su:region_namespace_ndctl.c:ndctl_match_fsdax static -4272 src/nondebug/libpmem/region_namespace_ndctl.su:region_namespace_ndctl.c:ndctl_match_devdax static -4272 src/nondebug/libpmempool/region_namespace_ndctl.su:region_namespace_ndctl.c:ndctl_match_fsdax static -4272 src/nondebug/libpmempool/region_namespace_ndctl.su:region_namespace_ndctl.c:ndctl_match_devdax static -4272 src/nondebug/libpmemobj/region_namespace_ndctl.su:region_namespace_ndctl.c:ndctl_match_fsdax static -4272 src/nondebug/libpmemobj/region_namespace_ndctl.su:region_namespace_ndctl.c:ndctl_match_devdax static -4272 src/nondebug/libpmem2/region_namespace_ndctl.su:region_namespace_ndctl.c:ndctl_match_fsdax static -4272 src/nondebug/libpmem2/region_namespace_ndctl.su:region_namespace_ndctl.c:ndctl_match_devdax static -4272 src/nondebug/common/region_namespace_ndctl.su:region_namespace_ndctl.c:ndctl_match_fsdax static -4272 src/nondebug/common/region_namespace_ndctl.su:region_namespace_ndctl.c:ndctl_match_devdax static -4224 src/nondebug/libpmempool/auto_flush_linux.su:auto_flush_linux.c:check_domain_in_region dynamic,bounded -4224 src/nondebug/libpmemobj/auto_flush_linux.su:auto_flush_linux.c:check_domain_in_region dynamic,bounded -4224 src/nondebug/libpmem/auto_flush_linux.su:auto_flush_linux.c:check_domain_in_region dynamic,bounded -4224 src/nondebug/libpmem2/auto_flush_linux.su:auto_flush_linux.c:check_domain_in_region dynamic,bounded -4224 src/nondebug/common/auto_flush_linux.su:auto_flush_linux.c:check_domain_in_region dynamic,bounded 4176 src/nondebug/libpmempool/set.su:set.c:util_header_check static 4176 src/nondebug/libpmempool/feature.su:feature.c:features_check static 4176 src/nondebug/libpmempool/check_pool_hdr.su:check_pool_hdr.c:check_pool_hdr_uuids static 4176 src/nondebug/libpmempool/check_pool_hdr.su:check_pool_hdr.c:check_pool_hdr static 4176 src/nondebug/libpmemobj/set.su:set.c:util_header_check static 4176 src/nondebug/common/set.su:set.c:util_header_check static -4144 src/nondebug/libpmempool/deep_flush_linux.su:deep_flush_linux.c:pmem2_deep_flush_write static 4144 src/nondebug/libpmempool/check_pool_hdr.su:check_pool_hdr.c:pool_hdr_default_fix static 4144 src/nondebug/libpmempool/check_pool_hdr.su:check_pool_hdr.c:pool_hdr_default_check static -4144 src/nondebug/libpmemobj/deep_flush_linux.su:deep_flush_linux.c:pmem2_deep_flush_write static -4144 src/nondebug/libpmem/deep_flush_linux.su:deep_flush_linux.c:pmem2_deep_flush_write static -4144 src/nondebug/libpmem2/deep_flush_linux.su:deep_flush_linux.c:pmem2_deep_flush_write static -4144 src/nondebug/common/deep_flush_linux.su:deep_flush_linux.c:pmem2_deep_flush_write static 4112 src/nondebug/libpmempool/pool.su:pool.c:pool_set_type static 3840 src/nondebug/libpmem/memset_t_avx512f.su:memset_t_avx512f.c:memset_mov_avx512f_empty static 3840 src/nondebug/libpmem2/memset_t_avx512f.su:memset_t_avx512f.c:memset_mov_avx512f_empty static @@ -119,22 +94,27 @@ 336 src/nondebug/core/util.su:util.c:util_parse_size static 336 src/nondebug/core/util_posix.su:util_posix.c:util_tmpfile_mkstemp dynamic 320 src/nondebug/libpmem/util_posix.su:util_posix.c:util_compare_file_inodes static +320 src/nondebug/libpmem/region_namespace_ndctl.su:region_namespace_ndctl.c:pmem2_region_namespace static 320 src/nondebug/libpmempool/util_posix.su:util_posix.c:util_compare_file_inodes static 320 src/nondebug/libpmempool/replica.su:replica.c:replica_check_poolset_health dynamic,bounded +320 src/nondebug/libpmempool/region_namespace_ndctl.su:region_namespace_ndctl.c:pmem2_region_namespace static 320 src/nondebug/libpmemobj/util_posix.su:util_posix.c:util_compare_file_inodes static 320 src/nondebug/libpmemobj/sync.su:sync.c:pmemobj_volatile static +320 src/nondebug/libpmemobj/region_namespace_ndctl.su:region_namespace_ndctl.c:pmem2_region_namespace static 320 src/nondebug/libpmem/memset_nt_avx.su:memset_nt_avx.c:memset_movnt_avx_empty_wcbarrier static 320 src/nondebug/libpmem/memset_nt_avx.su:memset_nt_avx.c:memset_movnt_avx_empty_nobarrier static 320 src/nondebug/libpmem/memset_nt_avx512f.su:memset_nt_avx512f.c:memset_movnt_avx512f_clwb static 320 src/nondebug/libpmem/memset_nt_avx512f.su:memset_nt_avx512f.c:memset_movnt_avx512f_clflushopt static 320 src/nondebug/libpmem/memset_nt_avx512f.su:memset_nt_avx512f.c:memset_movnt_avx512f_clflush static 320 src/nondebug/libpmem2/util_posix.su:util_posix.c:util_compare_file_inodes static +320 src/nondebug/libpmem2/region_namespace_ndctl.su:region_namespace_ndctl.c:pmem2_region_namespace static 320 src/nondebug/libpmem2/memset_nt_avx.su:memset_nt_avx.c:memset_movnt_avx_empty_wcbarrier static 320 src/nondebug/libpmem2/memset_nt_avx.su:memset_nt_avx.c:memset_movnt_avx_empty_nobarrier static 320 src/nondebug/libpmem2/memset_nt_avx512f.su:memset_nt_avx512f.c:memset_movnt_avx512f_clwb static 320 src/nondebug/libpmem2/memset_nt_avx512f.su:memset_nt_avx512f.c:memset_movnt_avx512f_clflushopt static 320 src/nondebug/libpmem2/memset_nt_avx512f.su:memset_nt_avx512f.c:memset_movnt_avx512f_clflush static 320 src/nondebug/core/util_posix.su:util_posix.c:util_compare_file_inodes static +320 src/nondebug/common/region_namespace_ndctl.su:region_namespace_ndctl.c:pmem2_region_namespace static 304 src/nondebug/libpmempool/transform.su:transform.c:replica_transform static 304 src/nondebug/libpmempool/set.su:set.c:util_replica_open static 304 src/nondebug/libpmemobj/set.su:set.c:util_replica_open static @@ -146,13 +126,18 @@ 288 src/nondebug/libpmem2/persist_posix.su:persist_posix.c:pmem2_flush_file_buffers_os static 288 src/nondebug/common/persist_posix.su:persist_posix.c:pmem2_flush_file_buffers_os static 272 src/nondebug/libpmempool/set.su:set.c:util_replica_map_local.constprop static +272 src/nondebug/libpmempool/auto_flush_linux.su:auto_flush_linux.c:pmem2_auto_flush dynamic,bounded 272 src/nondebug/libpmemobj/set.su:set.c:util_replica_map_local.constprop static 272 src/nondebug/libpmemobj/obj.su:obj.c:obj_runtime_init.constprop static 272 src/nondebug/libpmemobj/list.su:list.c:list_move static 272 src/nondebug/libpmemobj/list.su:list.c:list_fill_entry_redo_log static 272 src/nondebug/libpmemobj/heap.su:heap.c:heap_free_chunk_reuse static +272 src/nondebug/libpmemobj/auto_flush_linux.su:auto_flush_linux.c:pmem2_auto_flush dynamic,bounded +272 src/nondebug/libpmem/auto_flush_linux.su:auto_flush_linux.c:pmem2_auto_flush dynamic,bounded 272 src/nondebug/libpmem2/map_posix.su:map_posix.c:pmem2_map_new dynamic,bounded +272 src/nondebug/libpmem2/auto_flush_linux.su:auto_flush_linux.c:pmem2_auto_flush dynamic,bounded 272 src/nondebug/common/set.su:set.c:util_replica_map_local.constprop static +272 src/nondebug/common/auto_flush_linux.su:auto_flush_linux.c:pmem2_auto_flush dynamic,bounded 256 src/nondebug/libpmemobj/memblock.su:memblock.c:huge_vg_init static 256 src/nondebug/libpmemobj/list.su:list.c:list_remove_free_user static 256 src/nondebug/libpmemobj/container_ravl.su:container_ravl.c:container_ravl_insert_block static @@ -236,12 +221,10 @@ 192 src/nondebug/libpmempool/rm.su:rm.c:rm_local static 192 src/nondebug/libpmempool/rm.su:rm.c:pmempool_rm static 192 src/nondebug/libpmempool/pool.su:pool.c:pool_copy static -192 src/nondebug/libpmempool/auto_flush_linux.su:auto_flush_linux.c:pmem2_auto_flush static 192 src/nondebug/libpmemobj/ulog.su:ulog.c:ulog_construct static 192 src/nondebug/libpmemobj/source_posix.su:source_posix.c:pmem2_source_from_fd static 192 src/nondebug/libpmemobj/set.su:set.c:util_map_part dynamic,bounded 192 src/nondebug/libpmemobj/heap.su:heap.c:heap_get_bestfit_block static -192 src/nondebug/libpmemobj/auto_flush_linux.su:auto_flush_linux.c:pmem2_auto_flush static 192 src/nondebug/libpmem/memset_t_avx512f.su:memset_t_avx512f.c:memset_mov_avx512f_clwb static 192 src/nondebug/libpmem/memset_t_avx512f.su:memset_t_avx512f.c:memset_mov_avx512f_clflushopt static 192 src/nondebug/libpmem/memset_t_avx512f.su:memset_t_avx512f.c:memset_mov_avx512f_clflush static @@ -258,7 +241,6 @@ 192 src/nondebug/libpmem/memcpy_nt_avx512f.su:memcpy_nt_avx512f.c:memmove_movnt_avx512f_clflushopt static 192 src/nondebug/libpmem/memcpy_nt_avx512f.su:memcpy_nt_avx512f.c:memmove_movnt_avx512f_clflush static 192 src/nondebug/libpmem/memcpy_nt_avx512f.su:memcpy_nt_avx512f.c:memmove_movnt_avx512f_noflush static -192 src/nondebug/libpmem/auto_flush_linux.su:auto_flush_linux.c:pmem2_auto_flush static 192 src/nondebug/libpmem2/source_posix.su:source_posix.c:pmem2_source_from_fd static 192 src/nondebug/libpmem2/memset_t_avx512f.su:memset_t_avx512f.c:memset_mov_avx512f_clwb static 192 src/nondebug/libpmem2/memset_t_avx512f.su:memset_t_avx512f.c:memset_mov_avx512f_clflushopt static @@ -277,10 +259,8 @@ 192 src/nondebug/libpmem2/memcpy_nt_avx512f.su:memcpy_nt_avx512f.c:memmove_movnt_avx512f_clflush static 192 src/nondebug/libpmem2/memcpy_nt_avx512f.su:memcpy_nt_avx512f.c:memmove_movnt_avx512f_noflush static 192 src/nondebug/libpmem2/map_posix.su:map_posix.c:pmem2_map_delete static -192 src/nondebug/libpmem2/auto_flush_linux.su:auto_flush_linux.c:pmem2_auto_flush static 192 src/nondebug/common/source_posix.su:source_posix.c:pmem2_source_from_fd static 192 src/nondebug/common/set.su:set.c:util_map_part dynamic,bounded -192 src/nondebug/common/auto_flush_linux.su:auto_flush_linux.c:pmem2_auto_flush static 184 src/nondebug/libpmemobj/memops.su:memops.c:operation_init static 176 src/nondebug/libpmem/source_posix.su:source_posix.c:pmem2_source_size static 176 src/nondebug/libpmempool/source_posix.su:source_posix.c:pmem2_source_size static @@ -523,7 +503,6 @@ 96 src/nondebug/common/ctl.su:ctl.c:ctl_exec_query_write static 96 src/nondebug/common/bad_blocks.su:bad_blocks.c:badblocks_clear_all static 80 src/nondebug/libpmem/region_namespace_ndctl.su:region_namespace_ndctl.c:pmem2_get_region_id static -80 src/nondebug/libpmem/region_namespace_ndctl.su:region_namespace_ndctl.c:pmem2_region_namespace static 80 src/nondebug/libpmempool/uuid_linux.su:uuid_linux.c:util_uuid_generate static 80 src/nondebug/libpmempool/set.su:set.c:util_unmap_part static 80 src/nondebug/libpmempool/set.su:set.c:util_pool_create_uuids static @@ -534,7 +513,6 @@ 80 src/nondebug/libpmempool/replica.su:replica.c:replica_free_poolset_health_status static 80 src/nondebug/libpmempool/replica.su:replica.c:replica_remove_part static 80 src/nondebug/libpmempool/region_namespace_ndctl.su:region_namespace_ndctl.c:pmem2_get_region_id static -80 src/nondebug/libpmempool/region_namespace_ndctl.su:region_namespace_ndctl.c:pmem2_region_namespace static 80 src/nondebug/libpmempool/ravl.su:ravl.c:ravl_find static 80 src/nondebug/libpmempool/ravl_interval.su:ravl_interval.c:ravl_interval_find static 80 src/nondebug/libpmempool/pool.su:pool.c:pool_set_file_map_headers static @@ -579,7 +557,6 @@ 80 src/nondebug/libpmemobj/set.su:set.c:util_part_open dynamic,bounded 80 src/nondebug/libpmemobj/set.su:set.c:util_poolset_single static 80 src/nondebug/libpmemobj/region_namespace_ndctl.su:region_namespace_ndctl.c:pmem2_get_region_id static -80 src/nondebug/libpmemobj/region_namespace_ndctl.su:region_namespace_ndctl.c:pmem2_region_namespace static 80 src/nondebug/libpmemobj/ravl.su:ravl.c:ravl_find static 80 src/nondebug/libpmemobj/ravl_interval.su:ravl_interval.c:ravl_interval_find static 80 src/nondebug/libpmemobj/pool_hdr.su:pool_hdr.c:util_str2feature static @@ -607,7 +584,6 @@ 80 src/nondebug/libpmem/mmap_posix.su:mmap_posix.c:util_map_sync static 80 src/nondebug/libpmem/memops_generic.su:memops_generic.c:memset_nodrain_generic static 80 src/nondebug/libpmem2/region_namespace_ndctl.su:region_namespace_ndctl.c:pmem2_get_region_id static -80 src/nondebug/libpmem2/region_namespace_ndctl.su:region_namespace_ndctl.c:pmem2_region_namespace static 80 src/nondebug/libpmem2/ravl.su:ravl.c:ravl_find static 80 src/nondebug/libpmem2/ravl_interval.su:ravl_interval.c:ravl_interval_find static 80 src/nondebug/libpmem2/persist.su:persist.c:pmem2_flush_cpu_cache static @@ -625,7 +601,6 @@ 80 src/nondebug/common/set.su:set.c:util_part_open dynamic,bounded 80 src/nondebug/common/set.su:set.c:util_poolset_single static 80 src/nondebug/common/region_namespace_ndctl.su:region_namespace_ndctl.c:pmem2_get_region_id static -80 src/nondebug/common/region_namespace_ndctl.su:region_namespace_ndctl.c:pmem2_region_namespace static 80 src/nondebug/common/pool_hdr.su:pool_hdr.c:util_str2feature static 80 src/nondebug/common/mmap_posix.su:mmap_posix.c:util_map_sync static 80 src/nondebug/common/ctl.su:ctl.c:ctl_load_config_from_file static @@ -804,6 +779,7 @@ 48 src/nondebug/libpmempool/pool_hdr.su:pool_hdr.c:util_feature2str static 48 src/nondebug/libpmempool/pool_hdr.su:pool_hdr.c:util_feature2pmempool_feature static 48 src/nondebug/libpmempool/pool_hdr.su:pool_hdr.c:util_feature_check static +48 src/nondebug/libpmempool/pmem2_utils_linux.su:pmem2_utils_linux.c:pmem2_get_type_from_stat static 48 src/nondebug/libpmempool/os_posix.su:os_posix.c:os_posix_fallocate static 48 src/nondebug/libpmempool/os_deep_linux.su:os_deep_linux.c:os_range_deep_common static 48 src/nondebug/libpmempool/mmap.su:mmap.c:util_mmap_init static @@ -818,6 +794,7 @@ 48 src/nondebug/libpmempool/file_posix.su:file_posix.c:util_file_device_dax_alignment static 48 src/nondebug/libpmempool/feature.su:feature.c:poolset_close static 48 src/nondebug/libpmempool/feature.su:feature.c:query_feature static +48 src/nondebug/libpmempool/deep_flush_linux.su:deep_flush_linux.c:pmem2_deep_flush_write static 48 src/nondebug/libpmempool/check_util.su:check_util.c:status_push static 48 src/nondebug/libpmempool/check_sds.su:check_sds.c:sds_check static 48 src/nondebug/libpmempool/check_pool_hdr.su:check_pool_hdr.c:init_location_data.isra.4 static @@ -833,6 +810,7 @@ 48 src/nondebug/libpmem/pmem.su:pmem.c:pmem_memmove_persist static 48 src/nondebug/libpmem/pmem.su:pmem.c:pmem_memcpy_nodrain static 48 src/nondebug/libpmem/pmem.su:pmem.c:pmem_memmove_nodrain static +48 src/nondebug/libpmem/pmem2_utils_linux.su:pmem2_utils_linux.c:pmem2_get_type_from_stat static 48 src/nondebug/libpmem/os_posix.su:os_posix.c:os_posix_fallocate static 48 src/nondebug/libpmem/os_deep_linux.su:os_deep_linux.c:os_range_deep_common static 48 src/nondebug/libpmemobj/util.su:util.c:util_readline static @@ -866,6 +844,7 @@ 48 src/nondebug/libpmemobj/pool_hdr.su:pool_hdr.c:util_feature2str static 48 src/nondebug/libpmemobj/pool_hdr.su:pool_hdr.c:util_feature2pmempool_feature static 48 src/nondebug/libpmemobj/pool_hdr.su:pool_hdr.c:util_feature_check static +48 src/nondebug/libpmemobj/pmem2_utils_linux.su:pmem2_utils_linux.c:pmem2_get_type_from_stat static 48 src/nondebug/libpmemobj/pmalloc.su:pmalloc.c:ctl__size_read static 48 src/nondebug/libpmemobj/palloc.su:palloc.c:palloc_cancel static 48 src/nondebug/libpmemobj/os_posix.su:os_posix.c:os_posix_fallocate static @@ -913,6 +892,7 @@ 48 src/nondebug/libpmemobj/file.su:file.c:util_file_pwrite static 48 src/nondebug/libpmemobj/file.su:file.c:util_fd_get_size static 48 src/nondebug/libpmemobj/file_posix.su:file_posix.c:util_file_device_dax_alignment static +48 src/nondebug/libpmemobj/deep_flush_linux.su:deep_flush_linux.c:pmem2_deep_flush_write static 48 src/nondebug/libpmemobj/critnib.su:critnib.c:critnib_remove static 48 src/nondebug/libpmemobj/critnib.su:critnib.c:critnib_delete static 48 src/nondebug/libpmemobj/container_seglists.su:container_seglists.c:container_seglists_destroy static @@ -933,6 +913,7 @@ 48 src/nondebug/libpmem/file.su:file.c:util_file_pwrite static 48 src/nondebug/libpmem/file.su:file.c:util_fd_get_size static 48 src/nondebug/libpmem/file_posix.su:file_posix.c:util_file_device_dax_alignment static +48 src/nondebug/libpmem/deep_flush_linux.su:deep_flush_linux.c:pmem2_deep_flush_write static 48 src/nondebug/libpmem2/vm_reservation.su:vm_reservation.c:pmem2_vm_reservation_extend static 48 src/nondebug/libpmem2/vm_reservation.su:vm_reservation.c:pmem2_vm_reservation_delete static 48 src/nondebug/libpmem2/vm_reservation_posix.su:vm_reservation_posix.c:vm_reservation_reserve_memory static @@ -946,6 +927,7 @@ 48 src/nondebug/libpmem2/ravl_interval.su:ravl_interval.c:ravl_interval_find_next static 48 src/nondebug/libpmem2/ravl_interval.su:ravl_interval.c:ravl_interval_find_equal static 48 src/nondebug/libpmem2/ravl_interval.su:ravl_interval.c:ravl_interval_insert static +48 src/nondebug/libpmem2/pmem2_utils_linux.su:pmem2_utils_linux.c:pmem2_get_type_from_stat static 48 src/nondebug/libpmem2/persist.su:persist.c:memset_nodrain_libc static 48 src/nondebug/libpmem2/persist.su:persist.c:pmem2_memset_nonpmem static 48 src/nondebug/libpmem2/persist.su:persist.c:pmem2_memmove_nonpmem static @@ -962,6 +944,7 @@ 48 src/nondebug/libpmem2/mcsafe_ops_posix.su:mcsafe_ops_posix.c:pmem2_source_pwrite_mcsafe static 48 src/nondebug/libpmem2/mcsafe_ops_posix.su:mcsafe_ops_posix.c:pmem2_source_pread_mcsafe static 48 src/nondebug/libpmem2/fs_posix.su:fs_posix.c:fs_new static +48 src/nondebug/libpmem2/deep_flush_linux.su:deep_flush_linux.c:pmem2_deep_flush_write static 48 src/nondebug/libpmem2/badblocks_ndctl.su:badblocks_ndctl.c:pmem2_badblock_next_region static 48 src/nondebug/core/util.su:util.c:util_readline static 48 src/nondebug/core/util.su:util.c:util_localtime static @@ -988,6 +971,7 @@ 48 src/nondebug/common/pool_hdr.su:pool_hdr.c:util_feature2str static 48 src/nondebug/common/pool_hdr.su:pool_hdr.c:util_feature2pmempool_feature static 48 src/nondebug/common/pool_hdr.su:pool_hdr.c:util_feature_check static +48 src/nondebug/common/pmem2_utils_linux.su:pmem2_utils_linux.c:pmem2_get_type_from_stat static 48 src/nondebug/common/os_deep_linux.su:os_deep_linux.c:os_range_deep_common static 48 src/nondebug/common/mmap.su:mmap.c:util_mmap_init static 48 src/nondebug/common/file.su:file.c:util_stat_get_type static @@ -998,6 +982,7 @@ 48 src/nondebug/common/file.su:file.c:util_file_pwrite static 48 src/nondebug/common/file.su:file.c:util_fd_get_size static 48 src/nondebug/common/file_posix.su:file_posix.c:util_file_device_dax_alignment static +48 src/nondebug/common/deep_flush_linux.su:deep_flush_linux.c:pmem2_deep_flush_write static 48 src/nondebug/common/badblocks_ndctl.su:badblocks_ndctl.c:pmem2_badblock_next_region static 32 src/nondebug/libpmem/util.su:util.c:util_checksum static 32 src/nondebug/libpmem/util_posix.su:util_posix.c:util_getexecname static