From 149320c1314d96d0488ec1b492e35534a3488476 Mon Sep 17 00:00:00 2001 From: Tomasz Gromadzki Date: Tue, 13 Aug 2024 08:18:01 +0200 Subject: [PATCH 01/17] Integrate PMDK logging system w/ VOS logging system. To enable new message in log in NLT. Allow-unstable-test: true Priority: 2 Required-githooks: true Co-authored-by: Jan Michalski Co-authored-by: Tomasz Gromadzki Signed-off-by: Tomasz Gromadzki --- debian/changelog | 5 ++ debian/control | 2 +- site_scons/components/__init__.py | 2 + src/include/daos/debug.h | 3 +- src/vos/SConscript | 2 +- src/vos/pmdk_log.c | 99 +++++++++++++++++++++++++++++++ src/vos/pmdk_log.h | 17 ++++++ src/vos/vos_common.c | 7 +++ utils/build.config | 2 +- utils/rpms/daos.spec | 11 ++-- 10 files changed, 142 insertions(+), 8 deletions(-) create mode 100644 src/vos/pmdk_log.c create mode 100644 src/vos/pmdk_log.h diff --git a/debian/changelog b/debian/changelog index bddf3f36d0b..14830a3da8c 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,4 +1,9 @@ daos (2.7.100-5) unstable; urgency=medium + [ Tomasz Gromadzki ] + * pmemobj errors and warnings reported via DAOS logging system + + -- Tomasz Gromadzki Tue, 03 Sep 2024 12:00:00 +0200 + [ Michael MacDonald ] * Add libdaos_self_test.so to client package diff --git a/debian/control b/debian/control index bdc377e6d94..ddfbcb183d1 100644 --- a/debian/control +++ b/debian/control @@ -18,7 +18,7 @@ Build-Depends: debhelper (>= 10), python3-distro, libabt-dev, libucx-dev, - libpmemobj-dev (>= 2.0.0), + libpmemobj-dev (>= 2.1.0), libfuse3-dev, libprotobuf-c-dev, libjson-c-dev, diff --git a/site_scons/components/__init__.py b/site_scons/components/__init__.py index ed50b80461b..6701baf9cae 100644 --- a/site_scons/components/__init__.py +++ b/site_scons/components/__init__.py @@ -267,6 +267,8 @@ def define_components(reqs): commands=[['make', 'all', 'NDCTL_ENABLE=n', + 'PMEMOBJ_IGNORE_DIRTY_SHUTDOWN=y', + 'PMEMOBJ_IGNORE_BAD_BLOCKS=y', 'BUILD_EXAMPLES=n', 'BUILD_BENCHMARKS=n', 'DOC=n', diff --git a/src/include/daos/debug.h b/src/include/daos/debug.h index bcf8834c517..89d2a3d8d71 100644 --- a/src/include/daos/debug.h +++ b/src/include/daos/debug.h @@ -1,5 +1,5 @@ /** - * (C) Copyright 2015-2023 Intel Corporation. + * (C) Copyright 2015-2024 Intel Corporation. * * SPDX-License-Identifier: BSD-2-Clause-Patent */ @@ -30,6 +30,7 @@ ACTION(common, common, arg) \ ACTION(tree, tree, arg) \ ACTION(vos, vos, arg) \ + ACTION(pmdk, pmdk, arg) \ ACTION(client, client, arg) \ ACTION(server, server, arg) \ ACTION(rdb, rdb, arg) \ diff --git a/src/vos/SConscript b/src/vos/SConscript index d91a2f3028a..0e4d69bbf9f 100644 --- a/src/vos/SConscript +++ b/src/vos/SConscript @@ -6,7 +6,7 @@ FILES = ["evt_iter.c", "vos_common.c", "vos_iterator.c", "vos_io.c", "vos_dtx.c", "vos_query.c", "vos_overhead.c", "vos_dtx_iter.c", "vos_gc.c", "vos_ilog.c", "ilog.c", "vos_ts.c", "lru_array.c", "vos_space.c", "sys_db.c", - "vos_csum_recalc.c", "vos_pool_scrub.c"] + "vos_csum_recalc.c", "vos_pool_scrub.c", "pmdk_log.c"] def build_vos(env, standalone): diff --git a/src/vos/pmdk_log.c b/src/vos/pmdk_log.c new file mode 100644 index 00000000000..29b8ea3ed61 --- /dev/null +++ b/src/vos/pmdk_log.c @@ -0,0 +1,99 @@ +/** + * (C) Copyright 2024 Intel Corporation. + * + * SPDX-License-Identifier: BSD-2-Clause-Patent + */ +/** + * Connecting the PMDK's logging to DAOS logging. + * + * vos/pmdk_log.c + */ +#define D_LOGFAC DD_FAC(pmdk) + +#ifdef DAOS_PMEM_BUILD +#include +#include +#include +#include + +static uint64_t pmemobj_log_level_2_dlog_prio[] = { + [PMEMOBJ_LOG_LEVEL_HARK] = DLOG_EMIT, [PMEMOBJ_LOG_LEVEL_FATAL] = DLOG_CRIT, + [PMEMOBJ_LOG_LEVEL_ERROR] = DLOG_ERR, [PMEMOBJ_LOG_LEVEL_WARNING] = DLOG_WARN, + [PMEMOBJ_LOG_LEVEL_NOTICE] = DLOG_NOTE, [PMEMOBJ_LOG_LEVEL_INFO] = DLOG_INFO, + [PMEMOBJ_LOG_LEVEL_DEBUG] = DLOG_DBG, +}; + +static void +pmdk_log_function(enum pmemobj_log_level level, const char *file_name, + unsigned line_no, const char *function_name, const char *message) +{ + uint64_t dlog_prio = pmemobj_log_level_2_dlog_prio[level]; + +/* + * There is a set of handy macros for each of the message priorities + * that are used normally to report a message. They can't be used here + * directly since the file name, line number and the function name + * are provided via arguments to this callback function instead of + * via macro definitions (__FILE__, __LINE__, and __func__) as + * _D_LOG_NOCHECK() would like to consume them. So, the message here is + * provided a few macro-calls later via _D_DEBUG() macro which allows + * to swap the _D_LOG_NOCHECK macro for a custom macro. + * + * D_ERROR(...) -> D_DEBUG(DLOG_ERR, ...) -> + * _D_DEBUG(_D_LOG_NOCHECK, DLOG_ERR, ...) + */ + +/* + * A custom variant of _D_LOG_NOCHECK() which passes the file name, + * line number and the function name from the local variables. + */ +#define PMDK_LOG_NOCHECK(mask, fmt, ...) \ + d_log(mask, "%s:%d %s() " fmt, file_name, line_no, function_name, ##__VA_ARGS__) + +/* + * The calculated message priority can't be passed as an argument to + * the _D_DEBUG() since the argument's name is used to construct + * a variable name. + */ +#define PMDK_DLOG_CASE(DLOG_PRIO) \ + case DLOG_PRIO: \ + _D_DEBUG(PMDK_LOG_NOCHECK, DLOG_PRIO, "%s\n", message); \ + break + + switch (dlog_prio) { + PMDK_DLOG_CASE(DLOG_EMIT); + PMDK_DLOG_CASE(DLOG_CRIT); + PMDK_DLOG_CASE(DLOG_ERR); + PMDK_DLOG_CASE(DLOG_WARN); + PMDK_DLOG_CASE(DLOG_NOTE); + PMDK_DLOG_CASE(DLOG_INFO); + PMDK_DLOG_CASE(DLOG_DBG); + default: + D_ERROR("Not implemented dlog priority: %#x\n", (unsigned)dlog_prio); + _D_DEBUG(PMDK_LOG_NOCHECK, DLOG_EMIT, "%s\n", message); + } + +#undef PMDK_DLOG_CASE +#undef PMDK_LOG_NOCHECK +} + +int +pmdk_log_attach(void) +{ + int rc = pmemobj_log_set_function(pmdk_log_function); + if (rc == 0) { + return 0; + } else { + return daos_errno2der(errno); + } +} + +#else + +int +pmdk_log_attach(void) +{ + ; +} + +#endif /* DAOS_PMEM_BUILD */ diff --git a/src/vos/pmdk_log.h b/src/vos/pmdk_log.h new file mode 100644 index 00000000000..b66c1c55dc4 --- /dev/null +++ b/src/vos/pmdk_log.h @@ -0,0 +1,17 @@ +/** + * (C) Copyright 2024 Intel Corporation. + * + * SPDX-License-Identifier: BSD-2-Clause-Patent + */ +/** + * Connecting the PMDK's logging to DAOS logging. + * vos/pmdk_log.h + */ + +#ifndef __PMDK_LOG__ +#define __PMDK_LOG__ + +int +pmdk_log_attach(void); + +#endif /* __PMDK_LOG__ */ diff --git a/src/vos/vos_common.c b/src/vos/vos_common.c index e9389deea2f..05304dab058 100644 --- a/src/vos/vos_common.c +++ b/src/vos/vos_common.c @@ -23,6 +23,7 @@ #include #include #include "vos_internal.h" +#include "pmdk_log.h" struct vos_self_mode { struct vos_tls *self_tls; @@ -634,6 +635,12 @@ vos_mod_init(void) if (vos_start_epoch == DAOS_EPOCH_MAX) vos_start_epoch = d_hlc_get(); + rc = pmdk_log_attach(); + if (rc != 0) { + D_ERROR("PMDK log initialization error\n"); + return rc; + } + rc = vos_pool_settings_init(bio_nvme_configured(SMD_DEV_TYPE_META)); if (rc != 0) { D_ERROR("VOS pool setting initialization error\n"); diff --git a/utils/build.config b/utils/build.config index 174df687036..178dcfc7301 100644 --- a/utils/build.config +++ b/utils/build.config @@ -4,7 +4,7 @@ component=daos [commit_versions] argobots=v1.1 fuse=fuse-3.16.2 -pmdk=2.0.0 +pmdk=2.1.0 isal=v2.30.0 isal_crypto=v2.23.0 spdk=v22.01.2 diff --git a/utils/rpms/daos.spec b/utils/rpms/daos.spec index f90e6d7010f..23ff54a0214 100644 --- a/utils/rpms/daos.spec +++ b/utils/rpms/daos.spec @@ -15,7 +15,7 @@ Name: daos Version: 2.7.100 -Release: 5%{?relval}%{?dist} +Release: 6%{?relval}%{?dist} Summary: DAOS Storage Engine License: BSD-2-Clause-Patent @@ -49,7 +49,7 @@ BuildRequires: libabt-devel >= 1.0rc1 BuildRequires: libjson-c-devel BuildRequires: boost-devel %endif -BuildRequires: libpmemobj-devel >= 2.0.0 +BuildRequires: libpmemobj-devel >= 2.1.0 %if (0%{?rhel} >= 8) BuildRequires: fuse3-devel >= 3 %else @@ -147,11 +147,11 @@ Requires: ndctl # needed to set PMem configuration goals in BIOS through control-plane %if (0%{?suse_version} >= 1500) Requires: ipmctl >= 03.00.00.0423 -Requires: libpmemobj1 >= 2.0.0-1.suse1500 +Requires: libpmemobj1 >= 2.1.0-1.suse1500 Requires: libfabric1 >= %{libfabric_version} %else Requires: ipmctl >= 03.00.00.0468 -Requires: libpmemobj >= 2.0.0-1%{?dist} +Requires: libpmemobj >= 2.1.0-1%{?dist} %endif Requires: libfabric >= %{libfabric_version} Requires: mercury >= %{mercury_version} @@ -592,6 +592,9 @@ getent passwd daos_agent >/dev/null || useradd -s /sbin/nologin -r -g daos_agent # No files in a shim package %changelog +* Tue Sep 03 2024 Tomasz Gromadzki 2.7.100-6 +- pmemobj errors and warnings reported via DAOS logging system + * Thu Aug 15 2024 Michael MacDonald 2.7.100-5 - Add libdaos_self_test.so to client RPM From 1011420bba06af0ad2b4ac029ea6835665b75f12 Mon Sep 17 00:00:00 2001 From: Tomasz Gromadzki Date: Tue, 3 Sep 2024 22:25:36 +0200 Subject: [PATCH 02/17] HARK is reported as INFO To enable new message in log in NLT. Allow-unstable-test: true Priority: 2 Required-githooks: true Signed-off-by: Tomasz Gromadzki --- debian/changelog | 3 ++- src/vos/pmdk_log.c | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/debian/changelog b/debian/changelog index 14830a3da8c..a0c9a1c98f9 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,9 +1,10 @@ -daos (2.7.100-5) unstable; urgency=medium +daos (2.7.100-6) unstable; urgency=medium [ Tomasz Gromadzki ] * pmemobj errors and warnings reported via DAOS logging system -- Tomasz Gromadzki Tue, 03 Sep 2024 12:00:00 +0200 +daos (2.7.100-5) unstable; urgency=medium [ Michael MacDonald ] * Add libdaos_self_test.so to client package diff --git a/src/vos/pmdk_log.c b/src/vos/pmdk_log.c index 29b8ea3ed61..3e1866c04ee 100644 --- a/src/vos/pmdk_log.c +++ b/src/vos/pmdk_log.c @@ -17,7 +17,7 @@ #include static uint64_t pmemobj_log_level_2_dlog_prio[] = { - [PMEMOBJ_LOG_LEVEL_HARK] = DLOG_EMIT, [PMEMOBJ_LOG_LEVEL_FATAL] = DLOG_CRIT, + [PMEMOBJ_LOG_LEVEL_HARK] = DLOG_INFO, [PMEMOBJ_LOG_LEVEL_FATAL] = DLOG_CRIT, [PMEMOBJ_LOG_LEVEL_ERROR] = DLOG_ERR, [PMEMOBJ_LOG_LEVEL_WARNING] = DLOG_WARN, [PMEMOBJ_LOG_LEVEL_NOTICE] = DLOG_NOTE, [PMEMOBJ_LOG_LEVEL_INFO] = DLOG_INFO, [PMEMOBJ_LOG_LEVEL_DEBUG] = DLOG_DBG, From f9b926d1be05d7aba42bb0a462b748e453f8db67 Mon Sep 17 00:00:00 2001 From: Tomasz Gromadzki Date: Wed, 4 Sep 2024 09:19:57 +0200 Subject: [PATCH 03/17] Fix - force build Priority: 2 Allow-unstable-test: true Skip-func-hw-test: false Required-githooks: true Signed-off-by: Tomasz Gromadzki From 45e6548057f101b8d67ffb8ccf447e06626f853e Mon Sep 17 00:00:00 2001 From: Tomasz Gromadzki Date: Wed, 4 Sep 2024 12:53:56 +0200 Subject: [PATCH 04/17] Skip NLT tests as they blocks functional validation. Skip-nlt: true Priority: 2 Allow-unstable-test: true Skip-func-hw-test: false Required-githooks: true Signed-off-by: Tomasz Gromadzki From 76fe5c69c27334ee55d4b035edcd766b8c295249 Mon Sep 17 00:00:00 2001 From: Tomasz Gromadzki Date: Fri, 20 Sep 2024 09:11:53 +0200 Subject: [PATCH 05/17] Fix: apply git-format-clang chanhes Skip-nlt: true Priority: 2 Allow-unstable-test: true Required-githooks: true Signed-off-by: Tomasz Gromadzki --- src/include/daos/debug.h | 63 ++++++++++++++++++++-------------------- src/vos/pmdk_log.c | 4 +-- 2 files changed, 33 insertions(+), 34 deletions(-) diff --git a/src/include/daos/debug.h b/src/include/daos/debug.h index 89d2a3d8d71..ec7653e830f 100644 --- a/src/include/daos/debug.h +++ b/src/include/daos/debug.h @@ -23,38 +23,37 @@ * predefined debug facilities (subsystems/modules), they have to be declared * before including any libgurt headers */ -#define DAOS_FOREACH_LOG_FAC(ACTION, arg) \ - ACTION(daos, daos, arg) \ - ACTION(array, array, arg) \ - ACTION(kv, kv, arg) \ - ACTION(common, common, arg) \ - ACTION(tree, tree, arg) \ - ACTION(vos, vos, arg) \ - ACTION(pmdk, pmdk, arg) \ - ACTION(client, client, arg) \ - ACTION(server, server, arg) \ - ACTION(rdb, rdb, arg) \ - ACTION(rsvc, rsvc, arg) \ - ACTION(pool, pool, arg) \ - ACTION(container, container, arg) \ - ACTION(object, object, arg) \ - ACTION(placement, placement, arg) \ - ACTION(rebuild, rebuild, arg) \ - ACTION(mgmt, mgmt, arg) \ - ACTION(bio, bio, arg) \ - ACTION(tests, tests, arg) \ - ACTION(dfs, dfs, arg) \ - ACTION(duns, duns, arg) \ - ACTION(drpc, drpc, arg) \ - ACTION(security, security, arg) \ - ACTION(dtx, dtx, arg) \ - ACTION(chk, chk, arg) \ - ACTION(dfuse, dfuse, arg) \ - ACTION(il, il, arg) \ - ACTION(csum, csum, arg) \ - ACTION(pipeline, pipeline, arg) \ - ACTION(stack, stack, arg) - +#define DAOS_FOREACH_LOG_FAC(ACTION, arg) \ + ACTION(daos, daos, arg) \ + ACTION(array, array, arg) \ + ACTION(kv, kv, arg) \ + ACTION(common, common, arg) \ + ACTION(tree, tree, arg) \ + ACTION(vos, vos, arg) \ + ACTION(pmdk, pmdk, arg) \ + ACTION(client, client, arg) \ + ACTION(server, server, arg) \ + ACTION(rdb, rdb, arg) \ + ACTION(rsvc, rsvc, arg) \ + ACTION(pool, pool, arg) \ + ACTION(container, container, arg) \ + ACTION(object, object, arg) \ + ACTION(placement, placement, arg) \ + ACTION(rebuild, rebuild, arg) \ + ACTION(mgmt, mgmt, arg) \ + ACTION(bio, bio, arg) \ + ACTION(tests, tests, arg) \ + ACTION(dfs, dfs, arg) \ + ACTION(duns, duns, arg) \ + ACTION(drpc, drpc, arg) \ + ACTION(security, security, arg) \ + ACTION(dtx, dtx, arg) \ + ACTION(chk, chk, arg) \ + ACTION(dfuse, dfuse, arg) \ + ACTION(il, il, arg) \ + ACTION(csum, csum, arg) \ + ACTION(pipeline, pipeline, arg) \ + ACTION(stack, stack, arg) #define DAOS_FOREACH_DB(ACTION, arg) \ /** metadata operation */ \ diff --git a/src/vos/pmdk_log.c b/src/vos/pmdk_log.c index 3e1866c04ee..a0cdc74cdd9 100644 --- a/src/vos/pmdk_log.c +++ b/src/vos/pmdk_log.c @@ -24,8 +24,8 @@ static uint64_t pmemobj_log_level_2_dlog_prio[] = { }; static void -pmdk_log_function(enum pmemobj_log_level level, const char *file_name, - unsigned line_no, const char *function_name, const char *message) +pmdk_log_function(enum pmemobj_log_level level, const char *file_name, unsigned line_no, + const char *function_name, const char *message) { uint64_t dlog_prio = pmemobj_log_level_2_dlog_prio[level]; From a5169439b73468754479d0f1e39b0763ee292afe Mon Sep 17 00:00:00 2001 From: Tomasz Gromadzki Date: Wed, 25 Sep 2024 07:02:15 +0200 Subject: [PATCH 06/17] Test: re-run to remove failed Trivy build Skip-nlt: true Priority: 2 Allow-unstable-test: true Required-githooks: true Signed-off-by: Tomasz Gromadzki From c445554f8826a77b50cdff7a4f6f82856046a5d7 Mon Sep 17 00:00:00 2001 From: Tomasz Gromadzki Date: Fri, 4 Oct 2024 13:12:24 +0200 Subject: [PATCH 07/17] No error message on intentional pmemobj transaction abort PR-repos: pmdk@PR-43:1 Skip-list: test_dfuse_daos_build_wt_pil4dfs:DAOS-16556 Allow-unstable-test: true Priority: 2 Required-githooks: true Signed-off-by: Tomasz Gromadzki From 8f2b121b255234705d532ed416d4692261ef3170 Mon Sep 17 00:00:00 2001 From: Tomasz Gromadzki Date: Thu, 24 Oct 2024 20:02:18 +0200 Subject: [PATCH 08/17] Fix merge PR-repos: pmdk@PR-43:2 Skip-list: test_ior_intercept_libpil4dfs:DAOS-16260 test_daos_degraded_ec:DAOS-16503 test_dfuse_daos_build_wt_pil4dfs:DAOS-16732 Allow-unstable-test: true Priority: 2 Required-githooks: true Signed-off-by: Tomasz Gromadzki --- debian/control | 5 ----- 1 file changed, 5 deletions(-) diff --git a/debian/control b/debian/control index c0375e2fba8..09876a93075 100644 --- a/debian/control +++ b/debian/control @@ -16,12 +16,7 @@ Build-Depends: debhelper (>= 10), pkg-config, python3-dev, python3-distro, -<<<<<<< HEAD - libabt-dev, - libucx-dev, -======= libabt-dev (>= 1.2), ->>>>>>> origin/master libpmemobj-dev (>= 2.1.0), libfuse3-dev, libprotobuf-c-dev, From 6a85d36fd06a92cda9443cd86e38d965c4952bd3 Mon Sep 17 00:00:00 2001 From: Tomasz Gromadzki Date: Fri, 25 Oct 2024 08:27:58 +0200 Subject: [PATCH 09/17] Fix: apply fix for https://github.com/pmem/pmdk/issues/6107 Annoying error message on user intentional transaction abort. PR-repos: pmdk@PR-43:2 Skip-list: test_ior_intercept_libpil4dfs:DAOS-16260 test_daos_degraded_ec:DAOS-16503 test_dfuse_daos_build_wt_pil4dfs:DAOS-16732 Allow-unstable-test: true Priority: 2 Required-githooks: true Signed-off-by: Tomasz Gromadzki --- utils/build.config | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/utils/build.config b/utils/build.config index 5b039750a9b..8f5acf2fc93 100644 --- a/utils/build.config +++ b/utils/build.config @@ -30,5 +30,5 @@ spdk=https://github.com/spdk/spdk/commit/b0aba3fcd5aceceea530a702922153bc7566497 ofi=https://github.com/ofiwg/libfabric/commit/d827c6484cc5bf67dfbe395890e258860c3f0979.diff fuse=https://github.com/libfuse/libfuse/commit/c9905341ea34ff9acbc11b3c53ba8bcea35eeed8.diff mercury=https://raw.githubusercontent.com/daos-stack/mercury/f3dc286fb40ec1a3a38a2e17c45497bc2aa6290d/na_ucx.patch -pmdk=https://github.com/pmem/pmdk/commit/2abe15ac0b4eed894b6768cd82a3b0a7c4336284.diff +pmdk=https://github.com/pmem/pmdk/commit/2abe15ac0b4eed894b6768cd82a3b0a7c4336284.diff,https://github.com/pmem/pmdk/commit/61e32285370e629e2b36bbb991b919e44f87d915.patch argobots=https://github.com/pmodels/argobots/pull/397/commits/411e5b344642ebc82190fd8b125db512e5b449d1.diff,https://github.com/pmodels/argobots/commit/bb0c908abfac4bfe37852eee621930634183c6aa.diff From c5935f162c76fce3ab37f76ea0662284cea2f815 Mon Sep 17 00:00:00 2001 From: Tomasz Gromadzki Date: Mon, 28 Oct 2024 12:17:39 +0100 Subject: [PATCH 10/17] fix: skip NLT tests for full HW validation Skip-NLT: true PR-repos: pmdk@PR-43:2 Skip-list: test_ior_intercept_libpil4dfs:DAOS-16260 test_daos_degraded_ec:DAOS-16503 test_dfuse_daos_build_wt_pil4dfs:DAOS-16732 Allow-unstable-test: true Priority: 2 Required-githooks: true Signed-off-by: Tomasz Gromadzki From ec17be3c12f1e919fb1f6937e6ea9bb47b5c1300 Mon Sep 17 00:00:00 2001 From: Tomasz Gromadzki Date: Thu, 31 Oct 2024 14:39:40 +0100 Subject: [PATCH 11/17] Fix: apply fix for https://github.com/pmem/pmdk/issues/6126 Unnecessary warning: "Cannot find any matching device, no bad blocks found" for non-pmem HW skip NLT tests for full HW validation Skip-NLT: true PR-repos: pmdk@PR-43:5 Skip-list: test_ior_intercept_libpil4dfs:DAOS-16260 test_daos_degraded_ec:DAOS-16503 test_dfuse_daos_build_wt_pil4dfs:DAOS-16732 Allow-unstable-test: true Priority: 2 Required-githooks: true Signed-off-by: Tomasz Gromadzki --- utils/build.config | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/utils/build.config b/utils/build.config index 8f5acf2fc93..57faa8578f1 100644 --- a/utils/build.config +++ b/utils/build.config @@ -30,5 +30,5 @@ spdk=https://github.com/spdk/spdk/commit/b0aba3fcd5aceceea530a702922153bc7566497 ofi=https://github.com/ofiwg/libfabric/commit/d827c6484cc5bf67dfbe395890e258860c3f0979.diff fuse=https://github.com/libfuse/libfuse/commit/c9905341ea34ff9acbc11b3c53ba8bcea35eeed8.diff mercury=https://raw.githubusercontent.com/daos-stack/mercury/f3dc286fb40ec1a3a38a2e17c45497bc2aa6290d/na_ucx.patch -pmdk=https://github.com/pmem/pmdk/commit/2abe15ac0b4eed894b6768cd82a3b0a7c4336284.diff,https://github.com/pmem/pmdk/commit/61e32285370e629e2b36bbb991b919e44f87d915.patch +pmdk=https://github.com/pmem/pmdk/commit/2abe15ac0b4eed894b6768cd82a3b0a7c4336284.patch,https://github.com/pmem/pmdk/commit/61e32285370e629e2b36bbb991b919e44f87d915.patch,https://github.com/pmem/pmdk/pull/6127/commits/be24d402e2355196ba389e8c57644ef5c1996a61.patch argobots=https://github.com/pmodels/argobots/pull/397/commits/411e5b344642ebc82190fd8b125db512e5b449d1.diff,https://github.com/pmodels/argobots/commit/bb0c908abfac4bfe37852eee621930634183c6aa.diff From 9c1a53e556ce1c981964d0be63c994029d1784bb Mon Sep 17 00:00:00 2001 From: Tomasz Gromadzki Date: Tue, 5 Nov 2024 14:36:15 +0100 Subject: [PATCH 12/17] Fix: apply final fix for https://github.com/pmem/pmdk/issues/6126 Unnecessary warning: "Cannot find any matching device, no bad blocks found" for non-pmem HW skip NLT tests for full HW validation Skip-NLT: true PR-repos: pmdk@PR-43:6 Skip-list: test_ior_intercept_libpil4dfs:DAOS-16260 test_daos_degraded_ec:DAOS-16503 test_dfuse_daos_build_wt_pil4dfs:DAOS-16732 Allow-unstable-test: true Priority: 2 Required-githooks: true Signed-off-by: Tomasz Gromadzki --- utils/build.config | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/utils/build.config b/utils/build.config index 57faa8578f1..4d0f3d580df 100644 --- a/utils/build.config +++ b/utils/build.config @@ -30,5 +30,5 @@ spdk=https://github.com/spdk/spdk/commit/b0aba3fcd5aceceea530a702922153bc7566497 ofi=https://github.com/ofiwg/libfabric/commit/d827c6484cc5bf67dfbe395890e258860c3f0979.diff fuse=https://github.com/libfuse/libfuse/commit/c9905341ea34ff9acbc11b3c53ba8bcea35eeed8.diff mercury=https://raw.githubusercontent.com/daos-stack/mercury/f3dc286fb40ec1a3a38a2e17c45497bc2aa6290d/na_ucx.patch -pmdk=https://github.com/pmem/pmdk/commit/2abe15ac0b4eed894b6768cd82a3b0a7c4336284.patch,https://github.com/pmem/pmdk/commit/61e32285370e629e2b36bbb991b919e44f87d915.patch,https://github.com/pmem/pmdk/pull/6127/commits/be24d402e2355196ba389e8c57644ef5c1996a61.patch +pmdk=https://github.com/pmem/pmdk/commit/2abe15ac0b4eed894b6768cd82a3b0a7c4336284.patch,https://github.com/pmem/pmdk/commit/61e32285370e629e2b36bbb991b919e44f87d915.patch,https://github.com/pmem/pmdk/commit/518b7426a13b21f98b2d2c435fa645770899446a.patch argobots=https://github.com/pmodels/argobots/pull/397/commits/411e5b344642ebc82190fd8b125db512e5b449d1.diff,https://github.com/pmodels/argobots/commit/bb0c908abfac4bfe37852eee621930634183c6aa.diff From bd924f61e887201ba2e6e14cc8bcb37b5cac4b3c Mon Sep 17 00:00:00 2001 From: Tomasz Gromadzki Date: Tue, 7 Jan 2025 09:55:08 +0100 Subject: [PATCH 13/17] Update copyright info skip NLT tests for full HW validation Skip-NLT: true PR-repos: pmdk@PR-43:11 Skip-list: test_ior_intercept_libpil4dfs:DAOS-16260 test_daos_degraded_ec:DAOS-16503 test_dfuse_daos_build_wt_pil4dfs:DAOS-16732 Allow-unstable-test: true Priority: 2 Signed-off-by: Tomasz Gromadzki --- debian/changelog | 2 +- src/include/daos/debug.h | 1 + src/vos/pmdk_log.c | 1 + src/vos/pmdk_log.h | 1 + src/vos/vos_common.c | 1 + utils/rpms/daos.spec | 2 +- 6 files changed, 6 insertions(+), 2 deletions(-) diff --git a/debian/changelog b/debian/changelog index 60d2aa8c087..8405f5f1466 100644 --- a/debian/changelog +++ b/debian/changelog @@ -2,7 +2,7 @@ daos (2.7.101-4) unstable; urgency=medium [ Tomasz Gromadzki ] * pmemobj errors and warnings reported via DAOS logging system - -- Tomasz Gromadzki Mon, 18 Nov 2024 12:00:00 +0200 + -- Tomasz Gromadzki Tue, 07 Jan 2025 12:00:00 +0200 daos (2.7.101-3) unstable; urgency=medium [ Phillip Henderson ] diff --git a/src/include/daos/debug.h b/src/include/daos/debug.h index ec7653e830f..175c129ff29 100644 --- a/src/include/daos/debug.h +++ b/src/include/daos/debug.h @@ -1,5 +1,6 @@ /** * (C) Copyright 2015-2024 Intel Corporation. + * (C) Copyright 2025 Hewlett Packard Enterprise Development LP * * SPDX-License-Identifier: BSD-2-Clause-Patent */ diff --git a/src/vos/pmdk_log.c b/src/vos/pmdk_log.c index a0cdc74cdd9..120e6a13b66 100644 --- a/src/vos/pmdk_log.c +++ b/src/vos/pmdk_log.c @@ -1,5 +1,6 @@ /** * (C) Copyright 2024 Intel Corporation. + * (C) Copyright 2025 Hewlett Packard Enterprise Development LP * * SPDX-License-Identifier: BSD-2-Clause-Patent */ diff --git a/src/vos/pmdk_log.h b/src/vos/pmdk_log.h index b66c1c55dc4..e2e1dfa93c8 100644 --- a/src/vos/pmdk_log.h +++ b/src/vos/pmdk_log.h @@ -1,5 +1,6 @@ /** * (C) Copyright 2024 Intel Corporation. + * (C) Copyright 2025 Hewlett Packard Enterprise Development LP * * SPDX-License-Identifier: BSD-2-Clause-Patent */ diff --git a/src/vos/vos_common.c b/src/vos/vos_common.c index 5f822146f47..fc6e52093fa 100644 --- a/src/vos/vos_common.c +++ b/src/vos/vos_common.c @@ -1,5 +1,6 @@ /** * (C) Copyright 2016-2024 Intel Corporation. + * (C) Copyright 2025 Hewlett Packard Enterprise Development LP * * SPDX-License-Identifier: BSD-2-Clause-Patent */ diff --git a/utils/rpms/daos.spec b/utils/rpms/daos.spec index 2caa531ca6e..949168650fb 100644 --- a/utils/rpms/daos.spec +++ b/utils/rpms/daos.spec @@ -602,7 +602,7 @@ getent passwd daos_agent >/dev/null || useradd -s /sbin/nologin -r -g daos_agent # No files in a shim package %changelog -* Mon Nov 18 2024 Tomasz Gromadzki 2.7.101-4 +* Tue Jan 07 2025 Tomasz Gromadzki 2.7.101-4 - pmemobj errors and warnings reported via DAOS logging system * Thu Dec 19 2024 Phillip Henderson 2.7.101-3 From 1d3f89a8b75601181b43df0a1ddee14c63c26abf Mon Sep 17 00:00:00 2001 From: Jeff Olivier Date: Wed, 29 Jan 2025 09:23:53 -0700 Subject: [PATCH 14/17] Optimizing the use of the DD_FLAG() macro Co-authored-by: Jeff Olivier Co-authored-by: Tomasz Gromadzki Signed-off-by: Tomasz Gromadzki --- src/include/gurt/debug.h | 26 ++++++++++++++------------ 1 file changed, 14 insertions(+), 12 deletions(-) diff --git a/src/include/gurt/debug.h b/src/include/gurt/debug.h index e47f4ab0cd9..17910e827cb 100644 --- a/src/include/gurt/debug.h +++ b/src/include/gurt/debug.h @@ -1,5 +1,7 @@ /* * (C) Copyright 2017-2023 Intel Corporation. + * (C) Copyright 2025 Google LLC + * (C) Copyright 2025 Hewlett Packard Enterprise Development LP * * SPDX-License-Identifier: BSD-2-Clause-Patent */ @@ -97,20 +99,20 @@ extern void (*d_alt_assert)(const int, const char*, const char*, const int); _D_LOG_CHECK(func, __tmp_mask, mask, ##__VA_ARGS__); \ } while (0) -#define _D_DEBUG(func, flag, ...) \ - do { \ - if (__builtin_expect(DD_FLAG(flag, D_LOGFAC), 0)) { \ - if (DD_FLAG(flag, D_LOGFAC) == (int)DLOG_UNINIT) { \ - _D_LOG_CHECK(func, \ - DD_FLAG(flag, D_LOGFAC), \ - (flag) | D_LOGFAC, \ - ##__VA_ARGS__); \ - break; \ - } \ - func(DD_FLAG(flag, D_LOGFAC), ##__VA_ARGS__); \ - } \ +#define _D_DEBUG_EXPANDED(func, flag, flag_var, ...) \ + do { \ + if (__builtin_expect(flag_var, 0)) { \ + if ((flag_var) == (int)DLOG_UNINIT) { \ + _D_LOG_CHECK(func, flag_var, (flag) | D_LOGFAC, ##__VA_ARGS__); \ + break; \ + } \ + func(flag_var, ##__VA_ARGS__); \ + } \ } while (0) +#define _D_DEBUG(func, flag, ...) \ + _D_DEBUG_EXPANDED(func, flag, DD_FLAG(flag, D_LOGFAC), ##__VA_ARGS__) + #define D_LOG_ENABLED(flag) \ ({ \ _D_DEBUG(D_NOOP, flag); \ From 13dd692d8ab18c28c27cacf5820e44bc2b93460d Mon Sep 17 00:00:00 2001 From: Jeff Olivier Date: Wed, 29 Jan 2025 09:23:53 -0700 Subject: [PATCH 15/17] pmdk_log_function optimization pmdk_log_function optimization based on _D_DEBUG_EXPANDED macro. Skip NLT tests for full HW validation Skip-NLT: true Skip-list: test_ior_intercept_libpil4dfs:DAOS-16260 Allow-unstable-test: true Priority: 2 Co-authored-by: Jeff Olivier Co-authored-by: Tomasz Gromadzki Signed-off-by: Tomasz Gromadzki --- src/vos/pmdk_log.c | 42 +++++++++++++++++------------------------- 1 file changed, 17 insertions(+), 25 deletions(-) diff --git a/src/vos/pmdk_log.c b/src/vos/pmdk_log.c index 120e6a13b66..0afdf56ab01 100644 --- a/src/vos/pmdk_log.c +++ b/src/vos/pmdk_log.c @@ -1,5 +1,6 @@ /** * (C) Copyright 2024 Intel Corporation. + * (C) Copyright 2025 Google LLC * (C) Copyright 2025 Hewlett Packard Enterprise Development LP * * SPDX-License-Identifier: BSD-2-Clause-Patent @@ -9,6 +10,7 @@ * * vos/pmdk_log.c */ + #define D_LOGFAC DD_FAC(pmdk) #ifdef DAOS_PMEM_BUILD @@ -24,11 +26,22 @@ static uint64_t pmemobj_log_level_2_dlog_prio[] = { [PMEMOBJ_LOG_LEVEL_DEBUG] = DLOG_DBG, }; +static int * pmemobj_log_level_2_flag_var[] = { + [PMEMOBJ_LOG_LEVEL_HARK] = &DD_FLAG(DLOG_INFO, D_LOGFAC), + [PMEMOBJ_LOG_LEVEL_FATAL] = &DD_FLAG(DLOG_CRIT, D_LOGFAC), + [PMEMOBJ_LOG_LEVEL_ERROR] = &DD_FLAG(DLOG_ERR, D_LOGFAC), + [PMEMOBJ_LOG_LEVEL_WARNING] = &DD_FLAG(DLOG_WARN, D_LOGFAC), + [PMEMOBJ_LOG_LEVEL_NOTICE] = &DD_FLAG(DLOG_NOTE, D_LOGFAC), + [PMEMOBJ_LOG_LEVEL_INFO] = &DD_FLAG(DLOG_INFO, D_LOGFAC), + [PMEMOBJ_LOG_LEVEL_DEBUG] = &DD_FLAG(DLOG_DBG, D_LOGFAC), +}; + static void pmdk_log_function(enum pmemobj_log_level level, const char *file_name, unsigned line_no, const char *function_name, const char *message) { uint64_t dlog_prio = pmemobj_log_level_2_dlog_prio[level]; + int *flag_var = pmemobj_log_level_2_flag_var[level]; /* * There is a set of handy macros for each of the message priorities @@ -37,11 +50,12 @@ pmdk_log_function(enum pmemobj_log_level level, const char *file_name, unsigned * are provided via arguments to this callback function instead of * via macro definitions (__FILE__, __LINE__, and __func__) as * _D_LOG_NOCHECK() would like to consume them. So, the message here is - * provided a few macro-calls later via _D_DEBUG() macro which allows + * provided a few macro-calls later via _D_DEBUG_EXPANDED() macro which allows * to swap the _D_LOG_NOCHECK macro for a custom macro. * * D_ERROR(...) -> D_DEBUG(DLOG_ERR, ...) -> - * _D_DEBUG(_D_LOG_NOCHECK, DLOG_ERR, ...) + * _D_DEBUG(_D_LOG_NOCHECK, DLOG_ERR, ...) -> + * _D_DEBUG_EXPANDED(_D_LOG_NOCHECK, DLOG_ERR, flag_var, ...) */ /* @@ -51,30 +65,8 @@ pmdk_log_function(enum pmemobj_log_level level, const char *file_name, unsigned #define PMDK_LOG_NOCHECK(mask, fmt, ...) \ d_log(mask, "%s:%d %s() " fmt, file_name, line_no, function_name, ##__VA_ARGS__) -/* - * The calculated message priority can't be passed as an argument to - * the _D_DEBUG() since the argument's name is used to construct - * a variable name. - */ -#define PMDK_DLOG_CASE(DLOG_PRIO) \ - case DLOG_PRIO: \ - _D_DEBUG(PMDK_LOG_NOCHECK, DLOG_PRIO, "%s\n", message); \ - break - - switch (dlog_prio) { - PMDK_DLOG_CASE(DLOG_EMIT); - PMDK_DLOG_CASE(DLOG_CRIT); - PMDK_DLOG_CASE(DLOG_ERR); - PMDK_DLOG_CASE(DLOG_WARN); - PMDK_DLOG_CASE(DLOG_NOTE); - PMDK_DLOG_CASE(DLOG_INFO); - PMDK_DLOG_CASE(DLOG_DBG); - default: - D_ERROR("Not implemented dlog priority: %#x\n", (unsigned)dlog_prio); - _D_DEBUG(PMDK_LOG_NOCHECK, DLOG_EMIT, "%s\n", message); - } + _D_DEBUG_EXPANDED(PMDK_LOG_NOCHECK, dlog_prio, *flag_var, "%s\n", message); -#undef PMDK_DLOG_CASE #undef PMDK_LOG_NOCHECK } From 2b2b30c9a983367782a68bbf8a192b58f18c202b Mon Sep 17 00:00:00 2001 From: Tomasz Gromadzki Date: Thu, 30 Jan 2025 15:48:27 +0100 Subject: [PATCH 16/17] Unified parameters naming convention Signed-off-by: Tomasz Gromadzki --- src/include/gurt/debug.h | 12 ++++++------ src/vos/pmdk_log.c | 22 +++++++++++----------- 2 files changed, 17 insertions(+), 17 deletions(-) diff --git a/src/include/gurt/debug.h b/src/include/gurt/debug.h index 17910e827cb..df6e9f48e42 100644 --- a/src/include/gurt/debug.h +++ b/src/include/gurt/debug.h @@ -99,19 +99,19 @@ extern void (*d_alt_assert)(const int, const char*, const char*, const int); _D_LOG_CHECK(func, __tmp_mask, mask, ##__VA_ARGS__); \ } while (0) -#define _D_DEBUG_EXPANDED(func, flag, flag_var, ...) \ +#define _D_DEBUG_W_SAVED_MASK(func, saved_mask, level, ...) \ do { \ - if (__builtin_expect(flag_var, 0)) { \ - if ((flag_var) == (int)DLOG_UNINIT) { \ - _D_LOG_CHECK(func, flag_var, (flag) | D_LOGFAC, ##__VA_ARGS__); \ + if (__builtin_expect(saved_mask, 0)) { \ + if ((saved_mask) == (int)DLOG_UNINIT) { \ + _D_LOG_CHECK(func, saved_mask, (level) | D_LOGFAC, ##__VA_ARGS__); \ break; \ } \ - func(flag_var, ##__VA_ARGS__); \ + func(saved_mask, ##__VA_ARGS__); \ } \ } while (0) #define _D_DEBUG(func, flag, ...) \ - _D_DEBUG_EXPANDED(func, flag, DD_FLAG(flag, D_LOGFAC), ##__VA_ARGS__) + _D_DEBUG_W_SAVED_MASK(func, DD_FLAG(flag, D_LOGFAC), flag, ##__VA_ARGS__) #define D_LOG_ENABLED(flag) \ ({ \ diff --git a/src/vos/pmdk_log.c b/src/vos/pmdk_log.c index 0afdf56ab01..196f37679ce 100644 --- a/src/vos/pmdk_log.c +++ b/src/vos/pmdk_log.c @@ -26,14 +26,14 @@ static uint64_t pmemobj_log_level_2_dlog_prio[] = { [PMEMOBJ_LOG_LEVEL_DEBUG] = DLOG_DBG, }; -static int * pmemobj_log_level_2_flag_var[] = { - [PMEMOBJ_LOG_LEVEL_HARK] = &DD_FLAG(DLOG_INFO, D_LOGFAC), - [PMEMOBJ_LOG_LEVEL_FATAL] = &DD_FLAG(DLOG_CRIT, D_LOGFAC), - [PMEMOBJ_LOG_LEVEL_ERROR] = &DD_FLAG(DLOG_ERR, D_LOGFAC), +static int *pmemobj_log_level_2_dlog_mask[] = { + [PMEMOBJ_LOG_LEVEL_HARK] = &DD_FLAG(DLOG_INFO, D_LOGFAC), + [PMEMOBJ_LOG_LEVEL_FATAL] = &DD_FLAG(DLOG_CRIT, D_LOGFAC), + [PMEMOBJ_LOG_LEVEL_ERROR] = &DD_FLAG(DLOG_ERR, D_LOGFAC), [PMEMOBJ_LOG_LEVEL_WARNING] = &DD_FLAG(DLOG_WARN, D_LOGFAC), - [PMEMOBJ_LOG_LEVEL_NOTICE] = &DD_FLAG(DLOG_NOTE, D_LOGFAC), - [PMEMOBJ_LOG_LEVEL_INFO] = &DD_FLAG(DLOG_INFO, D_LOGFAC), - [PMEMOBJ_LOG_LEVEL_DEBUG] = &DD_FLAG(DLOG_DBG, D_LOGFAC), + [PMEMOBJ_LOG_LEVEL_NOTICE] = &DD_FLAG(DLOG_NOTE, D_LOGFAC), + [PMEMOBJ_LOG_LEVEL_INFO] = &DD_FLAG(DLOG_INFO, D_LOGFAC), + [PMEMOBJ_LOG_LEVEL_DEBUG] = &DD_FLAG(DLOG_DBG, D_LOGFAC), }; static void @@ -41,7 +41,7 @@ pmdk_log_function(enum pmemobj_log_level level, const char *file_name, unsigned const char *function_name, const char *message) { uint64_t dlog_prio = pmemobj_log_level_2_dlog_prio[level]; - int *flag_var = pmemobj_log_level_2_flag_var[level]; + int *saved_mask = pmemobj_log_level_2_dlog_mask[level]; /* * There is a set of handy macros for each of the message priorities @@ -50,12 +50,12 @@ pmdk_log_function(enum pmemobj_log_level level, const char *file_name, unsigned * are provided via arguments to this callback function instead of * via macro definitions (__FILE__, __LINE__, and __func__) as * _D_LOG_NOCHECK() would like to consume them. So, the message here is - * provided a few macro-calls later via _D_DEBUG_EXPANDED() macro which allows + * provided a few macro-calls later via _D_DEBUG_W_SAVED_MASK() macro which allows * to swap the _D_LOG_NOCHECK macro for a custom macro. * * D_ERROR(...) -> D_DEBUG(DLOG_ERR, ...) -> * _D_DEBUG(_D_LOG_NOCHECK, DLOG_ERR, ...) -> - * _D_DEBUG_EXPANDED(_D_LOG_NOCHECK, DLOG_ERR, flag_var, ...) + * _D_DEBUG_W_SAVED_MASK(_D_LOG_NOCHECK, DD_FLAG(DLOG_ERR, D_LOGFAC), DLOG_ERR, ...) */ /* @@ -65,7 +65,7 @@ pmdk_log_function(enum pmemobj_log_level level, const char *file_name, unsigned #define PMDK_LOG_NOCHECK(mask, fmt, ...) \ d_log(mask, "%s:%d %s() " fmt, file_name, line_no, function_name, ##__VA_ARGS__) - _D_DEBUG_EXPANDED(PMDK_LOG_NOCHECK, dlog_prio, *flag_var, "%s\n", message); + _D_DEBUG_W_SAVED_MASK(PMDK_LOG_NOCHECK, *saved_mask, dlog_prio, "%s\n", message); #undef PMDK_LOG_NOCHECK } From 303a42d9dc61d57e81c1a17402b640853a4acd4c Mon Sep 17 00:00:00 2001 From: Tomasz Gromadzki Date: Thu, 30 Jan 2025 15:54:40 +0100 Subject: [PATCH 17/17] pmemobj log to daos translation tab optimization Signed-off-by: Tomasz Gromadzki --- src/vos/pmdk_log.c | 36 ++++++++++++++++++------------------ 1 file changed, 18 insertions(+), 18 deletions(-) diff --git a/src/vos/pmdk_log.c b/src/vos/pmdk_log.c index 196f37679ce..7c607ba6b5e 100644 --- a/src/vos/pmdk_log.c +++ b/src/vos/pmdk_log.c @@ -19,30 +19,28 @@ #include #include -static uint64_t pmemobj_log_level_2_dlog_prio[] = { - [PMEMOBJ_LOG_LEVEL_HARK] = DLOG_INFO, [PMEMOBJ_LOG_LEVEL_FATAL] = DLOG_CRIT, - [PMEMOBJ_LOG_LEVEL_ERROR] = DLOG_ERR, [PMEMOBJ_LOG_LEVEL_WARNING] = DLOG_WARN, - [PMEMOBJ_LOG_LEVEL_NOTICE] = DLOG_NOTE, [PMEMOBJ_LOG_LEVEL_INFO] = DLOG_INFO, - [PMEMOBJ_LOG_LEVEL_DEBUG] = DLOG_DBG, -}; +#define PMDK_LOG_2_DAOS_LOG_INIT(PMDK_LEVEL, DAOS_LEVEL) \ + [PMDK_LEVEL] = {.level = DAOS_LEVEL, .saved_mask = &DD_FLAG(DAOS_LEVEL, D_LOGFAC)} -static int *pmemobj_log_level_2_dlog_mask[] = { - [PMEMOBJ_LOG_LEVEL_HARK] = &DD_FLAG(DLOG_INFO, D_LOGFAC), - [PMEMOBJ_LOG_LEVEL_FATAL] = &DD_FLAG(DLOG_CRIT, D_LOGFAC), - [PMEMOBJ_LOG_LEVEL_ERROR] = &DD_FLAG(DLOG_ERR, D_LOGFAC), - [PMEMOBJ_LOG_LEVEL_WARNING] = &DD_FLAG(DLOG_WARN, D_LOGFAC), - [PMEMOBJ_LOG_LEVEL_NOTICE] = &DD_FLAG(DLOG_NOTE, D_LOGFAC), - [PMEMOBJ_LOG_LEVEL_INFO] = &DD_FLAG(DLOG_INFO, D_LOGFAC), - [PMEMOBJ_LOG_LEVEL_DEBUG] = &DD_FLAG(DLOG_DBG, D_LOGFAC), +static struct { + int level; + int *saved_mask; +} pmemobj_log_level_2_daos_log[] = { + PMDK_LOG_2_DAOS_LOG_INIT(PMEMOBJ_LOG_LEVEL_HARK, DLOG_INFO), + PMDK_LOG_2_DAOS_LOG_INIT(PMEMOBJ_LOG_LEVEL_FATAL, DLOG_CRIT), + PMDK_LOG_2_DAOS_LOG_INIT(PMEMOBJ_LOG_LEVEL_ERROR, DLOG_ERR), + PMDK_LOG_2_DAOS_LOG_INIT(PMEMOBJ_LOG_LEVEL_WARNING, DLOG_WARN), + PMDK_LOG_2_DAOS_LOG_INIT(PMEMOBJ_LOG_LEVEL_NOTICE, DLOG_NOTE), + PMDK_LOG_2_DAOS_LOG_INIT(PMEMOBJ_LOG_LEVEL_INFO, DLOG_INFO), + PMDK_LOG_2_DAOS_LOG_INIT(PMEMOBJ_LOG_LEVEL_DEBUG, DLOG_DBG), }; +#undef PMDK_LOG_2_DAOS_LOG_INIT + static void pmdk_log_function(enum pmemobj_log_level level, const char *file_name, unsigned line_no, const char *function_name, const char *message) { - uint64_t dlog_prio = pmemobj_log_level_2_dlog_prio[level]; - int *saved_mask = pmemobj_log_level_2_dlog_mask[level]; - /* * There is a set of handy macros for each of the message priorities * that are used normally to report a message. They can't be used here @@ -65,7 +63,9 @@ pmdk_log_function(enum pmemobj_log_level level, const char *file_name, unsigned #define PMDK_LOG_NOCHECK(mask, fmt, ...) \ d_log(mask, "%s:%d %s() " fmt, file_name, line_no, function_name, ##__VA_ARGS__) - _D_DEBUG_W_SAVED_MASK(PMDK_LOG_NOCHECK, *saved_mask, dlog_prio, "%s\n", message); + int *saved_mask = pmemobj_log_level_2_daos_log[level].saved_mask; + _D_DEBUG_W_SAVED_MASK(PMDK_LOG_NOCHECK, *saved_mask, + pmemobj_log_level_2_daos_log[level].level, "%s\n", message); #undef PMDK_LOG_NOCHECK }