From 6506b2a37652def122618f1484ec59fcd1d31cca Mon Sep 17 00:00:00 2001 From: Oksana Salyk Date: Tue, 21 Oct 2025 13:33:36 +0200 Subject: [PATCH 01/11] common: 2.1.2-rc1 release Signed-off-by: Oksana Salyk --- GIT_VERSION | 1 - VERSION | 1 + 2 files changed, 1 insertion(+), 1 deletion(-) delete mode 100644 GIT_VERSION create mode 100644 VERSION diff --git a/GIT_VERSION b/GIT_VERSION deleted file mode 100644 index 6002f22fa2..0000000000 --- a/GIT_VERSION +++ /dev/null @@ -1 +0,0 @@ -$Format:%h$ \ No newline at end of file diff --git a/VERSION b/VERSION new file mode 100644 index 0000000000..b4fa503625 --- /dev/null +++ b/VERSION @@ -0,0 +1 @@ +2.1.2-rc1 From 668c1d3fcb822769bcdeb99c0cd6a9685b5942b6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Oksana=20Sa=C5=82yk?= Date: Wed, 19 Nov 2025 15:52:50 +0100 Subject: [PATCH 02/11] Split pmem_test_3.yml and update README.md file (#23) Signed-off-by: Oksana Salyk --- .github/workflows/pmem_tests_3.yml | 2 +- .github/workflows/pmem_tests_4.yml | 23 +++++++++++++++++++++++ README.md | 13 ++++++------- 3 files changed, 30 insertions(+), 8 deletions(-) create mode 100644 .github/workflows/pmem_tests_4.yml diff --git a/.github/workflows/pmem_tests_3.yml b/.github/workflows/pmem_tests_3.yml index f46ec45875..ae15cdd9a3 100644 --- a/.github/workflows/pmem_tests_3.yml +++ b/.github/workflows/pmem_tests_3.yml @@ -17,7 +17,7 @@ jobs: Thread: uses: ./.github/workflows/pmem_test_matrix.yml with: - force_enable: '["drd", "helgrind"]' + force_enable: '["helgrind"]' valgrind: 1 # 24h = 1440m (arbitrarily picked in hope it will be enough). timeout_minutes: 1440 diff --git a/.github/workflows/pmem_tests_4.yml b/.github/workflows/pmem_tests_4.yml new file mode 100644 index 0000000000..451a26e97f --- /dev/null +++ b/.github/workflows/pmem_tests_4.yml @@ -0,0 +1,23 @@ +# Run all tests on PMEM. +# +# This workflow is run on 'self-hosted' runners. +name: PMEM tests part 4 + +on: + workflow_dispatch: + schedule: + # run this job at 6:00 UTC every Monday + - cron: '0 6 * * 1' + +permissions: {} + +jobs: + # Test the default build with force-enabled Valgrind tooling for thread error + # detection. + Thread: + uses: ./.github/workflows/pmem_test_matrix.yml + with: + force_enable: '["drd"]' + valgrind: 1 + # 24h = 1440m (arbitrarily picked in hope it will be enough). + timeout_minutes: 1440 diff --git a/README.md b/README.md index af2ebb2bb9..011f45aa15 100644 --- a/README.md +++ b/README.md @@ -5,6 +5,8 @@ [![Scans](https://github.com/daos-stack/pmdk/actions/workflows/scans.yml/badge.svg?branch=master)](https://github.com/daos-stack/pmdk/actions/workflows/scans.yml) [![PMem test 1](https://github.com/daos-stack/pmdk/workflows/PMEM%20tests%20part%201/badge.svg)](https://github.com/daos-stack/pmdk/actions/workflows/pmem_tests_1.yml) [![PMem test 2](https://github.com/daos-stack/pmdk/workflows/PMEM%20tests%20part%202/badge.svg)](https://github.com/daos-stack/pmdk/actions/workflows/pmem_tests_2.yml) +[![PMem test 3](https://github.com/daos-stack/pmdk/workflows/PMEM%20tests%20part%203/badge.svg)](https://github.com/daos-stack/pmdk/actions/workflows/pmem_tests_3.yml) +[![PMem test 4](https://github.com/daos-stack/pmdk/workflows/PMEM%20tests%20part%204/badge.svg)](https://github.com/daos-stack/pmdk/actions/workflows/pmem_tests_4.yml) The **Persistent Memory Development Kit (PMDK)** is a collection of libraries and tools for System Administrators and Application Developers to simplify managing and accessing persistent memory devices. For more information, see https://pmem.io. @@ -107,10 +109,7 @@ information on this port, contact Rajalakshmi Srinivasaraghavan ## Contact Us -For more information on this library, contact -Tomasz Gromadzki (tomasz.gromadzki@intel.com), -Jan Michalski (jan.michalski@intel.com), -Oksana Sałyk (oksana.salyk@intel.com), -Piotr Balcer (piotr.balcer@intel.com), -Andy Rudoff (andy.rudoff@intel.com), or post to -the [Persistent Memory Programming Google group](https://groups.google.com/group/pmem). +For more information on this project, contact +Tomasz Gromadzki (tomasz.gromadzki@hpe.com), +Jan Michalski (jan-marian.michalski@hpe.com), or +Oksana Sałyk (oksana.salyk@hpe.com). From 6d0402472bad7834a8fa7f409f5cd54208696615 Mon Sep 17 00:00:00 2001 From: Jan Michalski Date: Thu, 20 Nov 2025 18:56:49 +0000 Subject: [PATCH 03/11] obj: make sure footers are written for all huge memory blocks on... ... chunk reinit Issue Huge memory blocks with the header chunk of type CHUNK_TYPE_FREE had not reinitialized their footer chunk. Context - Allocator divides the available space into zones and zones into smaller chunks. - All chunk headers belonging to a single zone are stored in an array. - Chunk header describes its: type, size_idx and flags. - Chunk can be of a few types. The types important for this patch are: CHUNK_TYPE_FOOTER, CHUNK_TYPE_FREE, and CHUNK_TYPE_USED. - CHUNK_TYPE_FREE and _USED are chunk types marking the beginning of so called huge memory block. This means this chunk and a number of chunks following it (size_idx) constitues a single allocation or a free memory. - The last chunk belonging to a huge memory block ought to be of type CHUNK_TYPE_FOOTER. Its size_idx allows to easily find the first chunk belonging to this huge memory block and determine the huge memory block type. - Huge memory blocks' footers are written immediately but persited lazily. It is not a problem at runtime since the footers are there at runtime. But in case of a crash the footers may be not persisted properly and missing on open. So, when the allocator is booted up it recreates footers just in case any of them is missing. Note: The huge memory block's first chunk header and the last chunk header (footer) are not written nor persisted in any way transactionally. The first chunk header occupies only 8 bytes so it is written and persisted atomically. But its footer is written independently and not explicitly persisted. Note: The first chunk header contains all the required info to recreate footer. The last chunk header is there only to make huge memory blocks coalescing easier to compute. Reading the footer allows to immediately find the memory block leaving just before the memory block which neighbours one might want to find. This patch makes sure the huge memory block's footer is recreated no matter whather its type is CHUNK_TYPE_FREE or CHUNK_TYPE_USED. The patch is inspired by work done for DAOS' DAV allocator (DAOS-18195) which is heavily based on the PMEMOBJ allocator. Signed-off-by: Jan Michalski Inspired-by: Sherin T George Signed-off-by: Oksana Salyk --- ChangeLog | 6 ++++++ src/libpmemobj/memblock.c | 5 +++-- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/ChangeLog b/ChangeLog index 95ca8e7189..910911bcea 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +XXX + + * Version X.X.X + + - Fix an issue in the PMEMOBJ allocator with a potential to corrupt the allocator's metadata (daos-stack/pmdk#24, DAOS-18195). + Tue Nov 4 2025 Oksana Sałyk * Version 2.1.2 diff --git a/src/libpmemobj/memblock.c b/src/libpmemobj/memblock.c index 0276ad80ba..17c08f3d2b 100644 --- a/src/libpmemobj/memblock.c +++ b/src/libpmemobj/memblock.c @@ -1,5 +1,6 @@ // SPDX-License-Identifier: BSD-3-Clause /* Copyright 2016-2024, Intel Corporation */ +/* Copyright 2025, Hewlett Packard Enterprise Development LP */ /* * memblock.c -- implementation of memory block @@ -1185,8 +1186,8 @@ static void huge_reinit_chunk(const struct memory_block *m) { struct chunk_header *hdr = heap_get_chunk_hdr(m->heap, m); - if (hdr->type == CHUNK_TYPE_USED) - huge_write_footer(hdr, hdr->size_idx); + ASSERT(hdr->type == CHUNK_TYPE_USED || hdr->type == CHUNK_TYPE_FREE); + huge_write_footer(hdr, hdr->size_idx); } /* From 00986c4345eebabbc4160c6498e46c11fd0efc2f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Oksana=20Sa=C5=82yk?= Date: Tue, 16 Dec 2025 11:53:53 +0100 Subject: [PATCH 04/11] obj: add footer ignoring for valgrind (#27) Signed-off-by: Oksana Salyk --- src/libpmemobj/memblock.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/libpmemobj/memblock.c b/src/libpmemobj/memblock.c index 17c08f3d2b..339f8c9091 100644 --- a/src/libpmemobj/memblock.c +++ b/src/libpmemobj/memblock.c @@ -1174,8 +1174,13 @@ huge_write_footer(struct chunk_header *hdr, uint32_t size_idx) struct chunk_header f = *hdr; f.type = CHUNK_TYPE_FOOTER; f.size_idx = size_idx; + + /* + * no need to transact and persist, + * footers are recreated in heap_populate_buckets + */ + VALGRIND_ADD_TO_GLOBAL_TX_IGNORE(hdr + size_idx - 1, sizeof(f)); *(hdr + size_idx - 1) = f; - /* no need to persist, footers are recreated in heap_populate_buckets */ VALGRIND_SET_CLEAN(hdr + size_idx - 1, sizeof(f)); } From de1111d95dd608b52600746f88a71c3da30cf378 Mon Sep 17 00:00:00 2001 From: liuxiang Date: Fri, 5 Jan 2024 15:25:33 +0800 Subject: [PATCH 05/11] common: fix compilation error on LoongArch Signed-off-by: liuxiang Signed-off-by: Oksana Salyk --- ChangeLog | 1 + src/libpmem2/loongarch64/init.c | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/ChangeLog b/ChangeLog index 910911bcea..d3b83eee00 100644 --- a/ChangeLog +++ b/ChangeLog @@ -3,6 +3,7 @@ XXX * Version X.X.X - Fix an issue in the PMEMOBJ allocator with a potential to corrupt the allocator's metadata (daos-stack/pmdk#24, DAOS-18195). + - Fix compilation error on LoongArch. Thank you @liuxiang88 and @bgermann for your persistence in making it happen! (daos-stack/pmdk#29, pmem/pmdk#5957). Tue Nov 4 2025 Oksana Sałyk diff --git a/src/libpmem2/loongarch64/init.c b/src/libpmem2/loongarch64/init.c index f8b531be39..6b5572ae1d 100644 --- a/src/libpmem2/loongarch64/init.c +++ b/src/libpmem2/loongarch64/init.c @@ -36,6 +36,6 @@ pmem2_arch_init(struct pmem2_arch_info *info) { LOG(3, NULL); - info->fence = loongarch_fence; + info->fence = loongarch_memory_fence; info->flush = loongarch_flush; } From 1eb2f2de7a024e877a5d4d5081ea08fdbd08380a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Oksana=20Sa=C5=82yk?= Date: Wed, 7 Jan 2026 16:53:13 +0100 Subject: [PATCH 06/11] obj: control POOL_FEAT_CHECK_BAD_BLOCKS via sds.at_create CTL (#28) Signed-off-by: Oksana Salyk Co-authored-by: Jan Michalski Signed-off-by: Oksana Salyk --- ChangeLog | 2 ++ src/common/set.c | 4 ++++ src/libpmemobj/obj.c | 1 + src/test/obj_pool/TEST32 | 4 ++++ src/test/obj_pool/TEST33 | 4 ++++ src/test/pmempool_sync/TEST32 | 5 ++--- src/test/pmempool_sync/TEST33 | 3 ++- src/test/pmempool_sync/TEST34 | 3 ++- src/test/pmempool_sync/TEST35 | 3 ++- src/test/pmempool_sync/TEST36 | 3 ++- src/test/pmempool_sync/TEST37 | 3 ++- src/test/pmempool_sync/TEST43 | 2 ++ src/test/pmempool_sync/TEST44 | 2 ++ src/test/pmempool_sync/TEST45 | 2 ++ src/test/pmempool_sync/TEST46 | 2 ++ src/test/pmempool_sync/TEST47 | 2 ++ src/test/pmempool_sync/TEST48 | 2 ++ src/test/pmempool_sync/TEST49 | 2 ++ src/test/pmempool_sync/TEST50 | 2 ++ src/test/pmempool_sync/TEST51 | 2 ++ src/test/pmempool_sync/TEST52 | 2 ++ src/test/pmempool_sync/TEST53 | 2 ++ src/test/unittest/unittest.sh | 22 ++++++++++++++++++++++ src/test/util_sds_check/TEST0 | 4 +++- src/test/util_sds_check/TEST1 | 4 +++- src/test/util_sds_check/TEST2 | 4 +++- src/test/util_sds_check/TEST3 | 4 +++- src/test/util_sds_check/TEST4 | 4 +++- src/test/util_sds_check/TEST5 | 4 +++- src/test/util_sds_check/TEST6 | 4 +++- src/test/util_sds_check/TEST7 | 4 +++- 31 files changed, 95 insertions(+), 16 deletions(-) diff --git a/ChangeLog b/ChangeLog index d3b83eee00..a0c5f31b26 100644 --- a/ChangeLog +++ b/ChangeLog @@ -2,6 +2,8 @@ XXX * Version X.X.X + - Expand the sds.at_create CTL to also cover the POOL_FEAT_CHECK_BAD_BLOCKS feature (daos-stack/pmdk#28, DAOS-18296). + - Until now, it controlled only the POOL_FEAT_SDS feature, but both may use NDCTL calls and increase stack usage. - Fix an issue in the PMEMOBJ allocator with a potential to corrupt the allocator's metadata (daos-stack/pmdk#24, DAOS-18195). - Fix compilation error on LoongArch. Thank you @liuxiang88 and @bgermann for your persistence in making it happen! (daos-stack/pmdk#29, pmem/pmdk#5957). diff --git a/src/common/set.c b/src/common/set.c index f82e9fd514..a3e9b80be8 100644 --- a/src/common/set.c +++ b/src/common/set.c @@ -1,5 +1,6 @@ // SPDX-License-Identifier: BSD-3-Clause /* Copyright 2015-2024, Intel Corporation */ +/* Copyright 2025, Hewlett Packard Enterprise Development LP */ /* * Copyright (c) 2016, Microsoft Corporation. All rights reserved. * @@ -3042,6 +3043,9 @@ util_pool_open(struct pool_set **setp, const char *path, size_t minpartsize, goto err_poolset_free; } + /* filter out unsupported or turned off features */ + compat_features &= attr->features.compat; + if (compat_features & POOL_FEAT_CHECK_BAD_BLOCKS) { /* check if any bad block recovery file exists */ int bfe = badblocks_recovery_file_exists(set); diff --git a/src/libpmemobj/obj.c b/src/libpmemobj/obj.c index bf2ffc8a63..b5f4f924f4 100644 --- a/src/libpmemobj/obj.c +++ b/src/libpmemobj/obj.c @@ -1059,6 +1059,7 @@ pool_attr_adjust(struct pool_attr *attr) } } else { attr->features.incompat &= ~POOL_FEAT_SDS; /* off */ + attr->features.compat &= ~POOL_FEAT_CHECK_BAD_BLOCKS; /* off */ } return 0; diff --git a/src/test/obj_pool/TEST32 b/src/test/obj_pool/TEST32 index 2d463de024..024f22cd10 100755 --- a/src/test/obj_pool/TEST32 +++ b/src/test/obj_pool/TEST32 @@ -1,6 +1,7 @@ #!/usr/bin/env bash # SPDX-License-Identifier: BSD-3-Clause # Copyright 2018-2019, Intel Corporation +# Copyright 2025-2026, Hewlett Packard Enterprise Development LP # # src/test/obj_pool/TEST32 -- unit test for pmemobj_open @@ -10,6 +11,9 @@ . ../unittest/unittest.sh require_test_type medium +# For non-pmem POOL_FEAT_CHECK_BAD_BLOCKS is turned off via PMEMOBJ_CONF="sds.at_create=0" +require_real_pmem +require_sds ./obj_pool setup diff --git a/src/test/obj_pool/TEST33 b/src/test/obj_pool/TEST33 index b76fb41a0f..299291164b 100755 --- a/src/test/obj_pool/TEST33 +++ b/src/test/obj_pool/TEST33 @@ -1,6 +1,7 @@ #!/usr/bin/env bash # SPDX-License-Identifier: BSD-3-Clause # Copyright 2018-2019, Intel Corporation +# Copyright 2025-2026, Hewlett Packard Enterprise Development LP # # src/test/obj_pool/TEST33 -- unit test for pmemobj_open @@ -10,6 +11,9 @@ . ../unittest/unittest.sh require_test_type medium +# For non-pmem POOL_FEAT_CHECK_BAD_BLOCKS is turned off via PMEMOBJ_CONF="sds.at_create=0" +require_real_pmem +require_sds ./obj_pool setup diff --git a/src/test/pmempool_sync/TEST32 b/src/test/pmempool_sync/TEST32 index 3f00abadec..670ed31da6 100755 --- a/src/test/pmempool_sync/TEST32 +++ b/src/test/pmempool_sync/TEST32 @@ -1,6 +1,7 @@ #!/usr/bin/env bash # SPDX-License-Identifier: BSD-3-Clause # Copyright 2018-2024, Intel Corporation +# Copyright 2025-2026, Hewlett Packard Enterprise Development LP # # # pmempool_sync/TEST32 -- test for sync command @@ -12,8 +13,8 @@ . ../unittest/unittest.sh +require_real_pmem require_test_type medium -require_fs_type non-pmem require_build_type debug nondebug require_linked_with_ndctl $PMEMPOOL$EXESUFFIX @@ -35,8 +36,6 @@ expect_normal_exit $PMEMPOOL$EXESUFFIX create obj --layout pmempool$SUFFIX $POOL expect_normal_exit "$OBJ_VERIFY$EXESUFFIX $POOLSET pmempool$SUFFIX c v &>> $LOG" -turn_on_checking_bad_blocks $POOLSET - # zero blocks: offset: 2 length: 250 zero_blocks $DIR/testfile0 2 250 diff --git a/src/test/pmempool_sync/TEST33 b/src/test/pmempool_sync/TEST33 index d6ec59271a..9a5ca2b9f5 100755 --- a/src/test/pmempool_sync/TEST33 +++ b/src/test/pmempool_sync/TEST33 @@ -1,6 +1,7 @@ #!/usr/bin/env bash # SPDX-License-Identifier: BSD-3-Clause # Copyright 2018-2024, Intel Corporation +# Copyright 2025-2026, Hewlett Packard Enterprise Development LP # # # pmempool_sync/TEST33 -- test for sync command @@ -12,8 +13,8 @@ . ../unittest/unittest.sh +require_real_pmem require_test_type medium -require_fs_type non-pmem require_build_type debug nondebug require_linked_with_ndctl $PMEMPOOL$EXESUFFIX diff --git a/src/test/pmempool_sync/TEST34 b/src/test/pmempool_sync/TEST34 index 72e18b4aab..0d0e0ce6c9 100755 --- a/src/test/pmempool_sync/TEST34 +++ b/src/test/pmempool_sync/TEST34 @@ -1,6 +1,7 @@ #!/usr/bin/env bash # SPDX-License-Identifier: BSD-3-Clause # Copyright 2018-2024, Intel Corporation +# Copyright 2025-2026, Hewlett Packard Enterprise Development LP # # # pmempool_sync/TEST34 -- test for sync command @@ -14,8 +15,8 @@ . setup.sh +require_real_pmem require_test_type medium -require_fs_type non-pmem require_build_type debug nondebug require_linked_with_ndctl $PMEMPOOL$EXESUFFIX diff --git a/src/test/pmempool_sync/TEST35 b/src/test/pmempool_sync/TEST35 index 5a4368fea6..0554156118 100755 --- a/src/test/pmempool_sync/TEST35 +++ b/src/test/pmempool_sync/TEST35 @@ -1,6 +1,7 @@ #!/usr/bin/env bash # SPDX-License-Identifier: BSD-3-Clause # Copyright 2018-2024, Intel Corporation +# Copyright 2025-2026, Hewlett Packard Enterprise Development LP # # # pmempool_sync/TEST35 -- test for sync command @@ -14,8 +15,8 @@ . setup.sh +require_real_pmem require_test_type medium -require_fs_type non-pmem require_build_type debug nondebug require_linked_with_ndctl $PMEMPOOL$EXESUFFIX diff --git a/src/test/pmempool_sync/TEST36 b/src/test/pmempool_sync/TEST36 index 3eac293e51..19739f767d 100755 --- a/src/test/pmempool_sync/TEST36 +++ b/src/test/pmempool_sync/TEST36 @@ -1,6 +1,7 @@ #!/usr/bin/env bash # SPDX-License-Identifier: BSD-3-Clause # Copyright 2018-2024, Intel Corporation +# Copyright 2025-2026, Hewlett Packard Enterprise Development LP # # # pmempool_sync/TEST36 -- test for sync command @@ -15,8 +16,8 @@ . setup.sh +require_real_pmem require_test_type medium -require_fs_type non-pmem require_build_type debug nondebug require_linked_with_ndctl $PMEMPOOL$EXESUFFIX diff --git a/src/test/pmempool_sync/TEST37 b/src/test/pmempool_sync/TEST37 index 9f87982184..bc9879e5cb 100755 --- a/src/test/pmempool_sync/TEST37 +++ b/src/test/pmempool_sync/TEST37 @@ -1,6 +1,7 @@ #!/usr/bin/env bash # SPDX-License-Identifier: BSD-3-Clause # Copyright 2018-2024, Intel Corporation +# Copyright 2025-2026, Hewlett Packard Enterprise Development LP # # # pmempool_sync/TEST37 -- test for sync command @@ -15,8 +16,8 @@ . setup.sh +require_real_pmem require_test_type medium -require_fs_type non-pmem require_build_type debug nondebug require_linked_with_ndctl $PMEMPOOL$EXESUFFIX diff --git a/src/test/pmempool_sync/TEST43 b/src/test/pmempool_sync/TEST43 index d46eeda96f..86ab559d0a 100755 --- a/src/test/pmempool_sync/TEST43 +++ b/src/test/pmempool_sync/TEST43 @@ -1,6 +1,7 @@ #!/usr/bin/env bash # SPDX-License-Identifier: BSD-3-Clause # Copyright 2018-2024, Intel Corporation +# Copyright 2025, Hewlett Packard Enterprise Development LP # # # pmempool_sync/TEST43 -- test for sync command with badblocks @@ -11,6 +12,7 @@ . ../unittest/unittest.sh +require_real_pmem require_test_type medium require_fs_type non-pmem require_build_type debug nondebug diff --git a/src/test/pmempool_sync/TEST44 b/src/test/pmempool_sync/TEST44 index da8b2a07f1..74ce57cafc 100755 --- a/src/test/pmempool_sync/TEST44 +++ b/src/test/pmempool_sync/TEST44 @@ -1,6 +1,7 @@ #!/usr/bin/env bash # SPDX-License-Identifier: BSD-3-Clause # Copyright 2018-2024, Intel Corporation +# Copyright 2025, Hewlett Packard Enterprise Development LP # # # pmempool_sync/TEST44 -- test for sync command with badblocks @@ -16,6 +17,7 @@ . setup.sh +require_real_pmem require_test_type medium require_fs_type non-pmem require_build_type debug nondebug diff --git a/src/test/pmempool_sync/TEST45 b/src/test/pmempool_sync/TEST45 index b28b086a7e..67b79532a7 100755 --- a/src/test/pmempool_sync/TEST45 +++ b/src/test/pmempool_sync/TEST45 @@ -1,6 +1,7 @@ #!/usr/bin/env bash # SPDX-License-Identifier: BSD-3-Clause # Copyright 2018-2024, Intel Corporation +# Copyright 2025, Hewlett Packard Enterprise Development LP # # # pmempool_sync/TEST45 -- test for sync command with badblocks @@ -14,6 +15,7 @@ . ../unittest/unittest.sh +require_real_pmem require_test_type medium require_fs_type non-pmem require_build_type debug nondebug diff --git a/src/test/pmempool_sync/TEST46 b/src/test/pmempool_sync/TEST46 index 6758b2e95b..b78d19b9ef 100755 --- a/src/test/pmempool_sync/TEST46 +++ b/src/test/pmempool_sync/TEST46 @@ -1,6 +1,7 @@ #!/usr/bin/env bash # SPDX-License-Identifier: BSD-3-Clause # Copyright 2018-2024, Intel Corporation +# Copyright 2025, Hewlett Packard Enterprise Development LP # # # pmempool_sync/TEST46 -- test for sync command with badblocks @@ -14,6 +15,7 @@ . ../unittest/unittest.sh +require_real_pmem require_test_type medium require_fs_type non-pmem require_build_type debug nondebug diff --git a/src/test/pmempool_sync/TEST47 b/src/test/pmempool_sync/TEST47 index 19f769567a..7beb008952 100755 --- a/src/test/pmempool_sync/TEST47 +++ b/src/test/pmempool_sync/TEST47 @@ -1,6 +1,7 @@ #!/usr/bin/env bash # SPDX-License-Identifier: BSD-3-Clause # Copyright 2018-2024, Intel Corporation +# Copyright 2025, Hewlett Packard Enterprise Development LP # # # pmempool_sync/TEST47 -- test for sync command with badblocks @@ -15,6 +16,7 @@ . setup.sh +require_real_pmem require_test_type medium require_fs_type non-pmem require_build_type debug nondebug diff --git a/src/test/pmempool_sync/TEST48 b/src/test/pmempool_sync/TEST48 index 27d85005bb..2015ee7635 100755 --- a/src/test/pmempool_sync/TEST48 +++ b/src/test/pmempool_sync/TEST48 @@ -1,6 +1,7 @@ #!/usr/bin/env bash # SPDX-License-Identifier: BSD-3-Clause # Copyright 2018-2024, Intel Corporation +# Copyright 2025, Hewlett Packard Enterprise Development LP # # # pmempool_sync/TEST48 -- test for sync command with badblocks @@ -18,6 +19,7 @@ . setup.sh +require_real_pmem require_test_type medium require_fs_type non-pmem require_build_type debug nondebug diff --git a/src/test/pmempool_sync/TEST49 b/src/test/pmempool_sync/TEST49 index 4db82bf4c2..e9279dbca6 100755 --- a/src/test/pmempool_sync/TEST49 +++ b/src/test/pmempool_sync/TEST49 @@ -1,6 +1,7 @@ #!/usr/bin/env bash # SPDX-License-Identifier: BSD-3-Clause # Copyright 2011-2024, Intel Corporation +# Copyright 2025, Hewlett Packard Enterprise Development LP # # # pmempool_sync/TEST49 -- test for sync command with badblocks @@ -19,6 +20,7 @@ . setup.sh +require_real_pmem require_test_type medium require_fs_type non-pmem require_build_type debug nondebug diff --git a/src/test/pmempool_sync/TEST50 b/src/test/pmempool_sync/TEST50 index 963cf1cf25..0ab62e01c6 100755 --- a/src/test/pmempool_sync/TEST50 +++ b/src/test/pmempool_sync/TEST50 @@ -1,6 +1,7 @@ #!/usr/bin/env bash # SPDX-License-Identifier: BSD-3-Clause # Copyright 2018-2024, Intel Corporation +# Copyright 2025, Hewlett Packard Enterprise Development LP # # # pmempool_sync/TEST50 -- test for sync command with badblocks @@ -19,6 +20,7 @@ . setup.sh +require_real_pmem require_test_type medium require_fs_type non-pmem require_build_type debug nondebug diff --git a/src/test/pmempool_sync/TEST51 b/src/test/pmempool_sync/TEST51 index 5902a68634..e35b1bb1aa 100755 --- a/src/test/pmempool_sync/TEST51 +++ b/src/test/pmempool_sync/TEST51 @@ -1,6 +1,7 @@ #!/usr/bin/env bash # SPDX-License-Identifier: BSD-3-Clause # Copyright 2018-2024, Intel Corporation +# Copyright 2025, Hewlett Packard Enterprise Development LP # # # pmempool_sync/TEST51 -- test for sync command with badblocks @@ -20,6 +21,7 @@ . setup.sh +require_real_pmem require_test_type medium require_fs_type non-pmem require_build_type debug nondebug diff --git a/src/test/pmempool_sync/TEST52 b/src/test/pmempool_sync/TEST52 index 721eeb5348..ebf20e5560 100755 --- a/src/test/pmempool_sync/TEST52 +++ b/src/test/pmempool_sync/TEST52 @@ -1,6 +1,7 @@ #!/usr/bin/env bash # SPDX-License-Identifier: BSD-3-Clause # Copyright 2018-2024, Intel Corporation +# Copyright 2025, Hewlett Packard Enterprise Development LP # # # pmempool_sync/TEST52 -- test for sync command with badblocks @@ -15,6 +16,7 @@ . setup.sh +require_real_pmem require_test_type medium require_fs_type non-pmem require_build_type debug nondebug diff --git a/src/test/pmempool_sync/TEST53 b/src/test/pmempool_sync/TEST53 index abd2e08eb2..441055510c 100755 --- a/src/test/pmempool_sync/TEST53 +++ b/src/test/pmempool_sync/TEST53 @@ -1,6 +1,7 @@ #!/usr/bin/env bash # SPDX-License-Identifier: BSD-3-Clause # Copyright 2011-2024, Intel Corporation +# Copyright 2025, Hewlett Packard Enterprise Development LP # # # pmempool_sync/TEST53 -- test for sync command with badblocks @@ -17,6 +18,7 @@ . setup.sh +require_real_pmem require_test_type medium require_fs_type non-pmem require_build_type debug nondebug diff --git a/src/test/unittest/unittest.sh b/src/test/unittest/unittest.sh index 00ad1ba277..0b297d5f69 100644 --- a/src/test/unittest/unittest.sh +++ b/src/test/unittest/unittest.sh @@ -2610,3 +2610,25 @@ function set_test_labels() { verbose_msg "$UNITTEST_NAME: SKIP ($TEST/$REAL_FS/$BUILD$MCSTR$PROV$PM) test-labels: $* ($TEST_LABEL required)" exit 0 } + +# +# require_real_pmem -- run tests only on real pmem +# +function require_real_pmem() { + local path="$1" + if [ -z "$path" ]; then + path="$DIR" + fi + if [ "$PMEM_IS_PMEM_FORCE" == "1" ]; then + verbose_msg "$UNITTEST_NAME: SKIP ($TEST/$REAL_FS/$BUILD$MCSTR$PROV$PM) PMEM is forced (PMEM_IS_PMEM_FORCE=$PMEM_IS_PMEM_FORCE), real PMEM required" + exit 0 + fi + case "$REAL_FS" in + pmem) + ;; + *) + verbose_msg "$UNITTEST_NAME: SKIP ($TEST/$REAL_FS/$BUILD$MCSTR$PROV$PM) REAL_FS $REAL_FS (pmem required)" + exit 0 + ;; + esac +} diff --git a/src/test/util_sds_check/TEST0 b/src/test/util_sds_check/TEST0 index 14ff63eb3c..86cbacc329 100755 --- a/src/test/util_sds_check/TEST0 +++ b/src/test/util_sds_check/TEST0 @@ -1,6 +1,6 @@ #!/usr/bin/env bash # SPDX-License-Identifier: BSD-3-Clause -# Copyright 2025, Hewlett Packard Enterprise Development LP +# Copyright 2025-2026, Hewlett Packard Enterprise Development LP # # src/test/util_sds_check/TEST0 -- unittest for shutdown_state_check @@ -14,6 +14,8 @@ require_fs_type none require_build_type debug +require_sds ./util_sds_check + setup expect_normal_exit ./util_sds_check test_dirty_clear diff --git a/src/test/util_sds_check/TEST1 b/src/test/util_sds_check/TEST1 index f2417575af..dee5359277 100755 --- a/src/test/util_sds_check/TEST1 +++ b/src/test/util_sds_check/TEST1 @@ -1,6 +1,6 @@ #!/usr/bin/env bash # SPDX-License-Identifier: BSD-3-Clause -# Copyright 2025, Hewlett Packard Enterprise Development LP +# Copyright 2025-2026, Hewlett Packard Enterprise Development LP # # src/test/util_sds_check/TEST1 -- unittest for shutdown_state_check @@ -14,6 +14,8 @@ require_fs_type none require_build_type debug +require_sds ./util_sds_check + setup expect_normal_exit ./util_sds_check test_invalid_checksum diff --git a/src/test/util_sds_check/TEST2 b/src/test/util_sds_check/TEST2 index 54cc7aeceb..0b9dc9ed75 100755 --- a/src/test/util_sds_check/TEST2 +++ b/src/test/util_sds_check/TEST2 @@ -1,6 +1,6 @@ #!/usr/bin/env bash # SPDX-License-Identifier: BSD-3-Clause -# Copyright 2025, Hewlett Packard Enterprise Development LP +# Copyright 2025-2026, Hewlett Packard Enterprise Development LP # # src/test/util_sds_check/TEST2 -- unittest for shutdown_state_check @@ -14,6 +14,8 @@ require_fs_type none require_build_type debug +require_sds ./util_sds_check + setup expect_normal_exit ./util_sds_check test_dirty_set diff --git a/src/test/util_sds_check/TEST3 b/src/test/util_sds_check/TEST3 index 958df6eb8b..d3ccc46cde 100755 --- a/src/test/util_sds_check/TEST3 +++ b/src/test/util_sds_check/TEST3 @@ -1,6 +1,6 @@ #!/usr/bin/env bash # SPDX-License-Identifier: BSD-3-Clause -# Copyright 2025, Hewlett Packard Enterprise Development LP +# Copyright 2025-2026, Hewlett Packard Enterprise Development LP # # src/test/util_sds_check/TEST3 -- unittest for shutdown_state_check @@ -14,6 +14,8 @@ require_fs_type none require_build_type debug +require_sds ./util_sds_check + setup expect_normal_exit ./util_sds_check test_invalid_uuid diff --git a/src/test/util_sds_check/TEST4 b/src/test/util_sds_check/TEST4 index 79d1e9acc8..6026bf7be4 100755 --- a/src/test/util_sds_check/TEST4 +++ b/src/test/util_sds_check/TEST4 @@ -1,6 +1,6 @@ #!/usr/bin/env bash # SPDX-License-Identifier: BSD-3-Clause -# Copyright 2025, Hewlett Packard Enterprise Development LP +# Copyright 2025-2026, Hewlett Packard Enterprise Development LP # # src/test/util_sds_check/TEST4 -- unittest for shutdown_state_check @@ -14,6 +14,8 @@ require_fs_type none require_build_type debug +require_sds ./util_sds_check + setup expect_normal_exit ./util_sds_check test_invalid_uuid_set_dirty diff --git a/src/test/util_sds_check/TEST5 b/src/test/util_sds_check/TEST5 index ccf7de34d6..a15d99599b 100755 --- a/src/test/util_sds_check/TEST5 +++ b/src/test/util_sds_check/TEST5 @@ -1,6 +1,6 @@ #!/usr/bin/env bash # SPDX-License-Identifier: BSD-3-Clause -# Copyright 2025, Hewlett Packard Enterprise Development LP +# Copyright 2025-2026, Hewlett Packard Enterprise Development LP # # src/test/util_sds_check/TEST5 -- unittest for shutdown_state_check @@ -14,6 +14,8 @@ require_fs_type none require_build_type debug +require_sds ./util_sds_check + setup expect_normal_exit ./util_sds_check test_invalid_usc diff --git a/src/test/util_sds_check/TEST6 b/src/test/util_sds_check/TEST6 index aa9038ec35..e138f6a938 100755 --- a/src/test/util_sds_check/TEST6 +++ b/src/test/util_sds_check/TEST6 @@ -1,6 +1,6 @@ #!/usr/bin/env bash # SPDX-License-Identifier: BSD-3-Clause -# Copyright 2025, Hewlett Packard Enterprise Development LP +# Copyright 2025-2026, Hewlett Packard Enterprise Development LP # # src/test/util_sds_check/TEST6 -- unittest for shutdown_state_check @@ -14,6 +14,8 @@ require_fs_type none require_build_type debug +require_sds ./util_sds_check + setup expect_normal_exit ./util_sds_check test_invalid_usc_set_dirty diff --git a/src/test/util_sds_check/TEST7 b/src/test/util_sds_check/TEST7 index beed80e62d..2b5142c911 100755 --- a/src/test/util_sds_check/TEST7 +++ b/src/test/util_sds_check/TEST7 @@ -1,6 +1,6 @@ #!/usr/bin/env bash # SPDX-License-Identifier: BSD-3-Clause -# Copyright 2025, Hewlett Packard Enterprise Development LP +# Copyright 2025-2026, Hewlett Packard Enterprise Development LP # # src/test/util_sds_check/TEST7 -- unittest for shutdown_state_check @@ -14,6 +14,8 @@ require_fs_type none require_build_type debug +require_sds ./util_sds_check + setup expect_normal_exit ./util_sds_check test_happy_day From 8f4c5386164c3c52beb102dd3ebabc660037b3ed Mon Sep 17 00:00:00 2001 From: Jan Michalski Date: Thu, 8 Jan 2026 13:00:28 +0000 Subject: [PATCH 07/11] test: check if no NDCTL-related code is in use without PMem (#30) DAOS-18296 Signed-off-by: Jan Michalski Signed-off-by: Oksana Salyk --- src/test/Makefile | 2 + src/test/obj_ndctl_bb/.gitignore | 1 + src/test/obj_ndctl_bb/Makefile | 10 ++++ src/test/obj_ndctl_bb/TEST0 | 30 +++++++++++ src/test/obj_ndctl_bb/TEST1 | 39 +++++++++++++++ src/test/obj_ndctl_bb/err1.log.match | 2 + src/test/obj_ndctl_bb/obj_ndctl_bb.c | 60 ++++++++++++++++++++++ src/test/obj_ndctl_sds/.gitignore | 1 + src/test/obj_ndctl_sds/Makefile | 10 ++++ src/test/obj_ndctl_sds/TEST0 | 30 +++++++++++ src/test/obj_ndctl_sds/TEST1 | 41 +++++++++++++++ src/test/obj_ndctl_sds/err1.log.match | 2 + src/test/obj_ndctl_sds/obj_ndctl_sds.c | 69 ++++++++++++++++++++++++++ 13 files changed, 297 insertions(+) create mode 100644 src/test/obj_ndctl_bb/.gitignore create mode 100644 src/test/obj_ndctl_bb/Makefile create mode 100755 src/test/obj_ndctl_bb/TEST0 create mode 100755 src/test/obj_ndctl_bb/TEST1 create mode 100644 src/test/obj_ndctl_bb/err1.log.match create mode 100644 src/test/obj_ndctl_bb/obj_ndctl_bb.c create mode 100644 src/test/obj_ndctl_sds/.gitignore create mode 100644 src/test/obj_ndctl_sds/Makefile create mode 100755 src/test/obj_ndctl_sds/TEST0 create mode 100755 src/test/obj_ndctl_sds/TEST1 create mode 100644 src/test/obj_ndctl_sds/err1.log.match create mode 100644 src/test/obj_ndctl_sds/obj_ndctl_sds.c diff --git a/src/test/Makefile b/src/test/Makefile index c3bd32990e..c223ccae67 100644 --- a/src/test/Makefile +++ b/src/test/Makefile @@ -70,6 +70,8 @@ OBJ_TESTS = \ obj_memcheck\ obj_memcheck_register\ obj_memops\ + obj_ndctl_bb\ + obj_ndctl_sds\ obj_oid_thread\ obj_out_of_memory\ obj_persist_count\ diff --git a/src/test/obj_ndctl_bb/.gitignore b/src/test/obj_ndctl_bb/.gitignore new file mode 100644 index 0000000000..1f5fdc3a55 --- /dev/null +++ b/src/test/obj_ndctl_bb/.gitignore @@ -0,0 +1 @@ +obj_ndctl_bb diff --git a/src/test/obj_ndctl_bb/Makefile b/src/test/obj_ndctl_bb/Makefile new file mode 100644 index 0000000000..0c9ede86c3 --- /dev/null +++ b/src/test/obj_ndctl_bb/Makefile @@ -0,0 +1,10 @@ +# SPDX-License-Identifier: BSD-3-Clause +# Copyright 2026, Hewlett Packard Enterprise Development LP + +TARGET = obj_ndctl_bb +OBJS = obj_ndctl_bb.o + +LIBPMEMOBJ=internal-debug + +include ../Makefile.inc +LDFLAGS += $(call extract_funcs, obj_ndctl_bb.c) diff --git a/src/test/obj_ndctl_bb/TEST0 b/src/test/obj_ndctl_bb/TEST0 new file mode 100755 index 0000000000..d4e670de35 --- /dev/null +++ b/src/test/obj_ndctl_bb/TEST0 @@ -0,0 +1,30 @@ +#!/usr/bin/env bash +# SPDX-License-Identifier: BSD-3-Clause +# Copyright 2026, Hewlett Packard Enterprise Development LP +# +# +# obj_ndctl_bb/TEST0 -- check if the badblocks-related code is not run when no PMem is in use. +# DAOS-18296 +# + +. ../unittest/unittest.sh + +require_fs_type non-pmem +require_ndctl_enable +require_test_type short + +setup + +FILE=$DIR/testfile + +# obj_ndctl_bb commands +CREATE=c +OPEN=o + +expect_normal_exit obj_ndctl_bb $FILE $CREATE + +expect_normal_exit obj_ndctl_bb $FILE $OPEN + +check + +pass diff --git a/src/test/obj_ndctl_bb/TEST1 b/src/test/obj_ndctl_bb/TEST1 new file mode 100755 index 0000000000..b01d407469 --- /dev/null +++ b/src/test/obj_ndctl_bb/TEST1 @@ -0,0 +1,39 @@ +#!/usr/bin/env bash +# SPDX-License-Identifier: BSD-3-Clause +# Copyright 2026, Hewlett Packard Enterprise Development LP +# +# +# obj_ndctl_bb/TEST1 -- check if the executable works as intended. Sanity check. +# + +. ../unittest/unittest.sh + +require_real_pmem +require_ndctl_enable +require_test_type short + +setup + +TMP=tmp${UNITTEST_NUM}.log +rm -f $TMP + +FILE=$DIR/testfile + +# obj_ndctl_bb commands +CREATE=c +OPEN=o + +expect_abnormal_exit obj_ndctl_bb $FILE $CREATE +cat $ERR_LOG_FILE >> $TMP + +expect_normal_exit $PMEMPOOL$EXESUFFIX create obj $FILE + +expect_abnormal_exit obj_ndctl_bb $FILE $OPEN +cat $ERR_LOG_FILE >> $TMP + +# move combined error log in place +mv $TMP $ERR_LOG_FILE + +check + +pass diff --git a/src/test/obj_ndctl_bb/err1.log.match b/src/test/obj_ndctl_bb/err1.log.match new file mode 100644 index 0000000000..2f43dc7dc9 --- /dev/null +++ b/src/test/obj_ndctl_bb/err1.log.match @@ -0,0 +1,2 @@ +{obj_ndctl_bb.c:$(N) __wrap_badblocks_check_poolset} obj_ndctl_bb/TEST1: Error: assertion failure: 0 +{obj_ndctl_bb.c:$(N) __wrap_badblocks_recovery_file_exists} obj_ndctl_bb/TEST1: Error: assertion failure: 0 diff --git a/src/test/obj_ndctl_bb/obj_ndctl_bb.c b/src/test/obj_ndctl_bb/obj_ndctl_bb.c new file mode 100644 index 0000000000..993930e89b --- /dev/null +++ b/src/test/obj_ndctl_bb/obj_ndctl_bb.c @@ -0,0 +1,60 @@ +// SPDX-License-Identifier: BSD-3-Clause +/* Copyright 2026, Hewlett Packard Enterprise Development LP */ + +/* + * obj_ndctl_bb.c -- crashes whenever badblocks-related code is run + */ + +#include + +#include "set.h" + +#include "unittest.h" + +FUNC_MOCK(badblocks_recovery_file_exists, int, struct pool_set *set) + FUNC_MOCK_RUN_DEFAULT { + UT_ASSERT(0); + } +FUNC_MOCK_END + +FUNC_MOCK(badblocks_check_poolset, int, struct pool_set *set, int create) + FUNC_MOCK_RUN_DEFAULT { + UT_ASSERT(0); + } +FUNC_MOCK_END + +int +main(int argc, char *argv[]) +{ + START(argc, argv, "obj_ndctl_bb"); + if (argc < 3) { + UT_FATAL("usage: %s \nc - create\no - open", + argv[0]); + } + + const char *path = argv[1]; + const char *cmd = argv[2]; + PMEMobjpool *pop; + + if (strlen(cmd) != 1) { + UT_FATAL("unknown command: %s", cmd); + } + + switch (cmd[0]) { + case 'c': + pop = pmemobj_create(path, NULL, PMEMOBJ_MIN_POOL, + 0600); + break; + case 'o': + pop = pmemobj_open(path, NULL); + break; + default: + UT_FATAL("unknown command: %s", cmd); + } + + UT_ASSERTne(pop, NULL); + + pmemobj_close(pop); + + DONE(NULL); +} diff --git a/src/test/obj_ndctl_sds/.gitignore b/src/test/obj_ndctl_sds/.gitignore new file mode 100644 index 0000000000..61c6a097a9 --- /dev/null +++ b/src/test/obj_ndctl_sds/.gitignore @@ -0,0 +1 @@ +obj_ndctl_sds diff --git a/src/test/obj_ndctl_sds/Makefile b/src/test/obj_ndctl_sds/Makefile new file mode 100644 index 0000000000..35442695a2 --- /dev/null +++ b/src/test/obj_ndctl_sds/Makefile @@ -0,0 +1,10 @@ +# SPDX-License-Identifier: BSD-3-Clause +# Copyright 2026, Hewlett Packard Enterprise Development LP + +TARGET = obj_ndctl_sds +OBJS = obj_ndctl_sds.o + +LIBPMEMOBJ=internal-debug + +include ../Makefile.inc +LDFLAGS += $(call extract_funcs, obj_ndctl_sds.c) diff --git a/src/test/obj_ndctl_sds/TEST0 b/src/test/obj_ndctl_sds/TEST0 new file mode 100755 index 0000000000..ccc5198967 --- /dev/null +++ b/src/test/obj_ndctl_sds/TEST0 @@ -0,0 +1,30 @@ +#!/usr/bin/env bash +# SPDX-License-Identifier: BSD-3-Clause +# Copyright 2026, Hewlett Packard Enterprise Development LP +# +# +# obj_ndctl_sds/TEST0 -- check if the shutdown-state-related code is not run when no PMem is in use. +# DAOS-18296 +# + +. ../unittest/unittest.sh + +require_fs_type non-pmem +require_ndctl_enable +require_test_type short + +setup + +FILE=$DIR/testfile + +# obj_ndctl_sds commands +CREATE=c +OPEN=o + +expect_normal_exit obj_ndctl_sds $FILE $CREATE + +expect_normal_exit obj_ndctl_sds $FILE $OPEN + +check + +pass diff --git a/src/test/obj_ndctl_sds/TEST1 b/src/test/obj_ndctl_sds/TEST1 new file mode 100755 index 0000000000..44d9b37ebe --- /dev/null +++ b/src/test/obj_ndctl_sds/TEST1 @@ -0,0 +1,41 @@ +#!/usr/bin/env bash +# SPDX-License-Identifier: BSD-3-Clause +# Copyright 2026, Hewlett Packard Enterprise Development LP +# +# +# obj_ndctl_sds/TEST1 -- check if the executable works as intended. Sanity check. +# + +. ../unittest/unittest.sh + +require_real_pmem +require_ndctl_enable +require_test_type short + +setup + +TMP=tmp${UNITTEST_NUM}.log +rm -f $TMP + +FILE=$DIR/testfile + +# obj_ndctl_sds commands +CREATE=c +OPEN=o + +expect_abnormal_exit obj_ndctl_sds $FILE $CREATE +cat $ERR_LOG_FILE >> $TMP + +# The crashed process leaves $FILE in a half-baked state. Let's do it right. +rm -f $FILE +expect_normal_exit $PMEMPOOL$EXESUFFIX create obj $FILE + +expect_abnormal_exit obj_ndctl_sds $FILE $OPEN +cat $ERR_LOG_FILE >> $TMP + +# move combined error log in place +mv $TMP $ERR_LOG_FILE + +check + +pass diff --git a/src/test/obj_ndctl_sds/err1.log.match b/src/test/obj_ndctl_sds/err1.log.match new file mode 100644 index 0000000000..7f0e7cab56 --- /dev/null +++ b/src/test/obj_ndctl_sds/err1.log.match @@ -0,0 +1,2 @@ +{obj_ndctl_sds.c:$(N) __wrap_shutdown_state_init} obj_ndctl_sds/TEST1: Error: assertion failure: 0 +{obj_ndctl_sds.c:$(N) __wrap_shutdown_state_init} obj_ndctl_sds/TEST1: Error: assertion failure: 0 diff --git a/src/test/obj_ndctl_sds/obj_ndctl_sds.c b/src/test/obj_ndctl_sds/obj_ndctl_sds.c new file mode 100644 index 0000000000..ab3b75e450 --- /dev/null +++ b/src/test/obj_ndctl_sds/obj_ndctl_sds.c @@ -0,0 +1,69 @@ +// SPDX-License-Identifier: BSD-3-Clause +/* Copyright 2026, Hewlett Packard Enterprise Development LP */ + +/* + * obj_ndctl_sds.c -- crashes whenever shutdown-state-related code is run + */ + +#include + +#include "set.h" + +#include "unittest.h" + +FUNC_MOCK(shutdown_state_init, int, struct shutdown_state *sds, + struct pool_replica *rep) + FUNC_MOCK_RUN_DEFAULT { + UT_ASSERT(0); + } +FUNC_MOCK_END + +FUNC_MOCK(shutdown_state_set_dirty, void, struct shutdown_state *sds, + struct pool_replica *rep) + FUNC_MOCK_RUN_DEFAULT { + UT_ASSERT(0); + } +FUNC_MOCK_END + +FUNC_MOCK(shutdown_state_check, int, struct shutdown_state *curr_sds, + struct shutdown_state *pool_sds, struct pool_replica *rep) + FUNC_MOCK_RUN_DEFAULT { + UT_ASSERT(0); + } +FUNC_MOCK_END + +int +main(int argc, char *argv[]) +{ + START(argc, argv, "obj_ndctl_sds"); + if (argc < 3) { + UT_FATAL("usage: %s \nc - create\no - open", + argv[0]); + } + + const char *path = argv[1]; + const char *cmd = argv[2]; + PMEMobjpool *pop; + + if (strlen(cmd) != 1) { + UT_FATAL("unknown command: %s", cmd); + } + + switch (cmd[0]) { + case 'c': + pop = pmemobj_create(path, NULL, PMEMOBJ_MIN_POOL, + 0600); + break; + case 'o': + pop = pmemobj_open(path, NULL); + break; + default: + UT_FATAL("unknown command: %s", cmd); + } + + UT_ASSERTne(pop, NULL); + + pmemobj_close(pop); + + DONE(NULL); +} From c14af88082684324bc854ab04f9f1cab76258155 Mon Sep 17 00:00:00 2001 From: Oksana Salyk Date: Thu, 15 Jan 2026 15:24:29 +0100 Subject: [PATCH 08/11] test: use require_sds instead of require_real_pmem Signed-off-by: Oksana Salyk --- src/test/obj_ndctl_bb/TEST1 | 3 ++- src/test/obj_ndctl_sds/TEST1 | 3 ++- src/test/obj_pool/TEST32 | 7 ++----- src/test/obj_pool/TEST33 | 7 ++----- src/test/pmempool_sync/TEST32 | 3 ++- src/test/pmempool_sync/TEST33 | 5 ++--- src/test/pmempool_sync/TEST34 | 5 ++--- src/test/pmempool_sync/TEST35 | 5 ++--- src/test/pmempool_sync/TEST36 | 5 ++--- src/test/pmempool_sync/TEST37 | 5 ++--- src/test/pmempool_sync/TEST43 | 8 +++----- src/test/pmempool_sync/TEST44 | 8 +++----- src/test/pmempool_sync/TEST45 | 8 +++----- src/test/pmempool_sync/TEST46 | 8 +++----- src/test/pmempool_sync/TEST47 | 8 +++----- src/test/pmempool_sync/TEST48 | 8 +++----- src/test/pmempool_sync/TEST49 | 8 +++----- src/test/pmempool_sync/TEST50 | 8 +++----- src/test/pmempool_sync/TEST51 | 8 +++----- src/test/pmempool_sync/TEST52 | 8 +++----- src/test/pmempool_sync/TEST53 | 8 +++----- src/test/unittest/unittest.sh | 22 ---------------------- src/test/util_sds_check/TEST0 | 2 -- src/test/util_sds_check/TEST1 | 2 -- src/test/util_sds_check/TEST2 | 2 -- src/test/util_sds_check/TEST3 | 2 -- src/test/util_sds_check/TEST4 | 2 -- src/test/util_sds_check/TEST5 | 2 -- src/test/util_sds_check/TEST6 | 2 -- src/test/util_sds_check/TEST7 | 2 -- 30 files changed, 53 insertions(+), 121 deletions(-) diff --git a/src/test/obj_ndctl_bb/TEST1 b/src/test/obj_ndctl_bb/TEST1 index b01d407469..1b0d519c6d 100755 --- a/src/test/obj_ndctl_bb/TEST1 +++ b/src/test/obj_ndctl_bb/TEST1 @@ -8,12 +8,13 @@ . ../unittest/unittest.sh -require_real_pmem require_ndctl_enable require_test_type short setup +require_sds ./obj_ndctl_bb + TMP=tmp${UNITTEST_NUM}.log rm -f $TMP diff --git a/src/test/obj_ndctl_sds/TEST1 b/src/test/obj_ndctl_sds/TEST1 index 44d9b37ebe..78dd7d132e 100755 --- a/src/test/obj_ndctl_sds/TEST1 +++ b/src/test/obj_ndctl_sds/TEST1 @@ -8,12 +8,13 @@ . ../unittest/unittest.sh -require_real_pmem require_ndctl_enable require_test_type short setup +require_sds ./obj_ndctl_sds + TMP=tmp${UNITTEST_NUM}.log rm -f $TMP diff --git a/src/test/obj_pool/TEST32 b/src/test/obj_pool/TEST32 index 024f22cd10..8616c33e90 100755 --- a/src/test/obj_pool/TEST32 +++ b/src/test/obj_pool/TEST32 @@ -11,12 +11,11 @@ . ../unittest/unittest.sh require_test_type medium -# For non-pmem POOL_FEAT_CHECK_BAD_BLOCKS is turned off via PMEMOBJ_CONF="sds.at_create=0" -require_real_pmem -require_sds ./obj_pool setup +require_sds ./obj_pool + # # TEST32 existing file, file size >= min required size, # layout matches the value from pool header @@ -26,8 +25,6 @@ expect_normal_exit ./obj_pool$EXESUFFIX c $DIR/testfile "test" 20 0640 # create a bad block recovery file create_recovery_file $DIR/testfile_r0_p0_badblocks.txt -turn_on_checking_bad_blocks $DIR/testfile - # pmemobj_open() should fail, because the bad block recovery file exists expect_normal_exit ./obj_pool$EXESUFFIX o $DIR/testfile "test" diff --git a/src/test/obj_pool/TEST33 b/src/test/obj_pool/TEST33 index 299291164b..15f3e2a9f8 100755 --- a/src/test/obj_pool/TEST33 +++ b/src/test/obj_pool/TEST33 @@ -11,12 +11,11 @@ . ../unittest/unittest.sh require_test_type medium -# For non-pmem POOL_FEAT_CHECK_BAD_BLOCKS is turned off via PMEMOBJ_CONF="sds.at_create=0" -require_real_pmem -require_sds ./obj_pool setup +require_sds ./obj_pool + POOLSET=$DIR/testset1 create_poolset $POOLSET 10M:$DIR/testfile0:z 10M:$DIR/testfile1:z 10M:$DIR/testfile2:z \ R 30M:$DIR/testfile3:z @@ -33,8 +32,6 @@ create_recovery_file $DIR/testset1_r0_p1_badblocks.txt create_recovery_file $DIR/testset1_r0_p2_badblocks.txt create_recovery_file $DIR/testset1_r1_p0_badblocks.txt -turn_on_checking_bad_blocks $DIR/testset1 - # pmemobj_open() should fail, because the bad block recovery files exist expect_normal_exit ./obj_pool$EXESUFFIX o $DIR/testset1 "test" diff --git a/src/test/pmempool_sync/TEST32 b/src/test/pmempool_sync/TEST32 index 670ed31da6..a6468644a8 100755 --- a/src/test/pmempool_sync/TEST32 +++ b/src/test/pmempool_sync/TEST32 @@ -13,13 +13,14 @@ . ../unittest/unittest.sh -require_real_pmem require_test_type medium require_build_type debug nondebug require_linked_with_ndctl $PMEMPOOL$EXESUFFIX setup +require_sds $PMEMPOOL$EXESUFFIX + LOG=out${UNITTEST_NUM}.log rm -f $LOG && touch $LOG diff --git a/src/test/pmempool_sync/TEST33 b/src/test/pmempool_sync/TEST33 index 9a5ca2b9f5..bc3a7c9042 100755 --- a/src/test/pmempool_sync/TEST33 +++ b/src/test/pmempool_sync/TEST33 @@ -13,13 +13,14 @@ . ../unittest/unittest.sh -require_real_pmem require_test_type medium require_build_type debug nondebug require_linked_with_ndctl $PMEMPOOL$EXESUFFIX setup +require_sds $PMEMPOOL$EXESUFFIX + LOG=out${UNITTEST_NUM}.log rm -f $LOG && touch $LOG @@ -36,8 +37,6 @@ expect_normal_exit $PMEMPOOL$EXESUFFIX create obj --layout pmempool$SUFFIX $POOL expect_normal_exit "$OBJ_VERIFY$EXESUFFIX $POOLSET pmempool$SUFFIX c v &>> $LOG" -turn_on_checking_bad_blocks $POOLSET - # zero blocks: offset: 0 length: 250 zero_blocks $DIR/testfile1 0 250 diff --git a/src/test/pmempool_sync/TEST34 b/src/test/pmempool_sync/TEST34 index 0d0e0ce6c9..4042fbc223 100755 --- a/src/test/pmempool_sync/TEST34 +++ b/src/test/pmempool_sync/TEST34 @@ -15,13 +15,14 @@ . setup.sh -require_real_pmem require_test_type medium require_build_type debug nondebug require_linked_with_ndctl $PMEMPOOL$EXESUFFIX setup +require_sds $PMEMPOOL$EXESUFFIX + LOG=out${UNITTEST_NUM}.log rm -f $LOG && touch $LOG @@ -50,8 +51,6 @@ create_recovery_file $DIR/testset1_r0_p1_badblocks.txt create_recovery_file $DIR/testset1_r0_p2_badblocks.txt create_recovery_file $DIR/testset1_r1_p0_badblocks.txt -turn_on_checking_bad_blocks $POOLSET - # fail because of recovery files expect_abnormal_exit "$OBJ_VERIFY$EXESUFFIX $POOLSET pmempool$SUFFIX v &>> $LOG" diff --git a/src/test/pmempool_sync/TEST35 b/src/test/pmempool_sync/TEST35 index 0554156118..37618a6664 100755 --- a/src/test/pmempool_sync/TEST35 +++ b/src/test/pmempool_sync/TEST35 @@ -15,13 +15,14 @@ . setup.sh -require_real_pmem require_test_type medium require_build_type debug nondebug require_linked_with_ndctl $PMEMPOOL$EXESUFFIX setup +require_sds $PMEMPOOL$EXESUFFIX + LOG=out${UNITTEST_NUM}.log rm -f $LOG && touch $LOG @@ -50,8 +51,6 @@ create_recovery_file $DIR/testset1_r0_p1_badblocks.txt 1000 250 create_recovery_file $DIR/testset1_r0_p2_badblocks.txt create_recovery_file $DIR/testset1_r1_p0_badblocks.txt -turn_on_checking_bad_blocks $POOLSET - # fail because of recovery files expect_abnormal_exit "$OBJ_VERIFY$EXESUFFIX $POOLSET pmempool$SUFFIX v &>> $LOG" diff --git a/src/test/pmempool_sync/TEST36 b/src/test/pmempool_sync/TEST36 index 19739f767d..733be80483 100755 --- a/src/test/pmempool_sync/TEST36 +++ b/src/test/pmempool_sync/TEST36 @@ -16,13 +16,14 @@ . setup.sh -require_real_pmem require_test_type medium require_build_type debug nondebug require_linked_with_ndctl $PMEMPOOL$EXESUFFIX setup +require_sds $PMEMPOOL$EXESUFFIX + LOG=out${UNITTEST_NUM}.log rm -f $LOG && touch $LOG @@ -39,8 +40,6 @@ expect_normal_exit $PMEMPOOL$EXESUFFIX create obj --layout pmempool$SUFFIX $POOL expect_normal_exit "$OBJ_VERIFY$EXESUFFIX $POOLSET pmempool$SUFFIX c v &>> $LOG" -turn_on_checking_bad_blocks $POOLSET - # zero blocks: offset: 1000 length: 250 zero_blocks $DIR/testfile0 1000 250 diff --git a/src/test/pmempool_sync/TEST37 b/src/test/pmempool_sync/TEST37 index bc9879e5cb..7d3141c832 100755 --- a/src/test/pmempool_sync/TEST37 +++ b/src/test/pmempool_sync/TEST37 @@ -16,13 +16,14 @@ . setup.sh -require_real_pmem require_test_type medium require_build_type debug nondebug require_linked_with_ndctl $PMEMPOOL$EXESUFFIX setup +require_sds $PMEMPOOL$EXESUFFIX + LOG=out${UNITTEST_NUM}.log rm -f $LOG && touch $LOG @@ -39,8 +40,6 @@ expect_normal_exit $PMEMPOOL$EXESUFFIX create obj --layout pmempool$SUFFIX $POOL expect_normal_exit "$OBJ_VERIFY$EXESUFFIX $POOLSET pmempool$SUFFIX c v &>> $LOG" -turn_on_checking_bad_blocks $POOLSET - # zero blocks: offset: 125 length: 125 zero_blocks $DIR/testfile1 125 125 diff --git a/src/test/pmempool_sync/TEST43 b/src/test/pmempool_sync/TEST43 index 86ab559d0a..2a4475bdea 100755 --- a/src/test/pmempool_sync/TEST43 +++ b/src/test/pmempool_sync/TEST43 @@ -1,7 +1,7 @@ #!/usr/bin/env bash # SPDX-License-Identifier: BSD-3-Clause # Copyright 2018-2024, Intel Corporation -# Copyright 2025, Hewlett Packard Enterprise Development LP +# Copyright 2025-2026, Hewlett Packard Enterprise Development LP # # # pmempool_sync/TEST43 -- test for sync command with badblocks @@ -12,14 +12,14 @@ . ../unittest/unittest.sh -require_real_pmem require_test_type medium -require_fs_type non-pmem require_build_type debug nondebug require_linked_with_ndctl $PMEMPOOL$EXESUFFIX setup +require_sds $PMEMPOOL$EXESUFFIX + export PMEMPOOL_LOG_LEVEL=10 LOG=out${UNITTEST_NUM}.log @@ -57,8 +57,6 @@ create_recovery_file $DIR/testset1_r1_p0_badblocks.txt create_recovery_file $DIR/testset1_r1_p1_badblocks.txt 126 2 create_recovery_file $DIR/testset1_r1_p2_badblocks.txt -turn_on_checking_bad_blocks $POOLSET - # fixing bad blocks should fail expect_abnormal_exit "$PMEMPOOL$EXESUFFIX sync -v -b $POOLSET &>> $LOG" diff --git a/src/test/pmempool_sync/TEST44 b/src/test/pmempool_sync/TEST44 index 74ce57cafc..aad222e180 100755 --- a/src/test/pmempool_sync/TEST44 +++ b/src/test/pmempool_sync/TEST44 @@ -1,7 +1,7 @@ #!/usr/bin/env bash # SPDX-License-Identifier: BSD-3-Clause # Copyright 2018-2024, Intel Corporation -# Copyright 2025, Hewlett Packard Enterprise Development LP +# Copyright 2025-2026, Hewlett Packard Enterprise Development LP # # # pmempool_sync/TEST44 -- test for sync command with badblocks @@ -17,14 +17,14 @@ . setup.sh -require_real_pmem require_test_type medium -require_fs_type non-pmem require_build_type debug nondebug require_linked_with_ndctl $PMEMPOOL$EXESUFFIX setup +require_sds $PMEMPOOL$EXESUFFIX + export PMEMPOOL_LOG_LEVEL=10 LOG=out${UNITTEST_NUM}.log @@ -72,8 +72,6 @@ create_recovery_file $DIR/testset1_r2_p0_badblocks.txt 1000 1 1002 1 create_recovery_file $DIR/testset1_r2_p1_badblocks.txt create_recovery_file $DIR/testset1_r2_p2_badblocks.txt -turn_on_checking_bad_blocks $POOLSET - # fail because of bad blocks expect_abnormal_exit "$OBJ_VERIFY$EXESUFFIX $POOLSET pmempool$SUFFIX v &>> $LOG" diff --git a/src/test/pmempool_sync/TEST45 b/src/test/pmempool_sync/TEST45 index 67b79532a7..9ef481b40b 100755 --- a/src/test/pmempool_sync/TEST45 +++ b/src/test/pmempool_sync/TEST45 @@ -1,7 +1,7 @@ #!/usr/bin/env bash # SPDX-License-Identifier: BSD-3-Clause # Copyright 2018-2024, Intel Corporation -# Copyright 2025, Hewlett Packard Enterprise Development LP +# Copyright 2025-2026, Hewlett Packard Enterprise Development LP # # # pmempool_sync/TEST45 -- test for sync command with badblocks @@ -15,14 +15,14 @@ . ../unittest/unittest.sh -require_real_pmem require_test_type medium -require_fs_type non-pmem require_build_type debug nondebug require_linked_with_ndctl $PMEMPOOL$EXESUFFIX setup +require_sds $PMEMPOOL$EXESUFFIX + export PMEMPOOL_LOG_LEVEL=10 LOG=out${UNITTEST_NUM}.log @@ -70,8 +70,6 @@ create_recovery_file $DIR/testset1_r2_p0_badblocks.txt create_recovery_file $DIR/testset1_r2_p1_badblocks.txt 125 1 127 1 create_recovery_file $DIR/testset1_r2_p2_badblocks.txt -turn_on_checking_bad_blocks $POOLSET - # fail because of bad blocks expect_abnormal_exit "$OBJ_VERIFY$EXESUFFIX $POOLSET pmempool$SUFFIX v &>> $LOG" diff --git a/src/test/pmempool_sync/TEST46 b/src/test/pmempool_sync/TEST46 index b78d19b9ef..3e55d47adb 100755 --- a/src/test/pmempool_sync/TEST46 +++ b/src/test/pmempool_sync/TEST46 @@ -1,7 +1,7 @@ #!/usr/bin/env bash # SPDX-License-Identifier: BSD-3-Clause # Copyright 2018-2024, Intel Corporation -# Copyright 2025, Hewlett Packard Enterprise Development LP +# Copyright 2025-2026, Hewlett Packard Enterprise Development LP # # # pmempool_sync/TEST46 -- test for sync command with badblocks @@ -15,14 +15,14 @@ . ../unittest/unittest.sh -require_real_pmem require_test_type medium -require_fs_type non-pmem require_build_type debug nondebug require_linked_with_ndctl $PMEMPOOL$EXESUFFIX setup +require_sds $PMEMPOOL$EXESUFFIX + export PMEMPOOL_LOG_LEVEL=10 LOG=out${UNITTEST_NUM}.log @@ -70,8 +70,6 @@ create_recovery_file $DIR/testset1_r2_p0_badblocks.txt create_recovery_file $DIR/testset1_r2_p1_badblocks.txt create_recovery_file $DIR/testset1_r2_p2_badblocks.txt 125 1 127 1 -turn_on_checking_bad_blocks $POOLSET - # fail because of bad blocks expect_abnormal_exit "$OBJ_VERIFY$EXESUFFIX $POOLSET pmempool$SUFFIX v &>> $LOG" diff --git a/src/test/pmempool_sync/TEST47 b/src/test/pmempool_sync/TEST47 index 7beb008952..194262fdf9 100755 --- a/src/test/pmempool_sync/TEST47 +++ b/src/test/pmempool_sync/TEST47 @@ -1,7 +1,7 @@ #!/usr/bin/env bash # SPDX-License-Identifier: BSD-3-Clause # Copyright 2018-2024, Intel Corporation -# Copyright 2025, Hewlett Packard Enterprise Development LP +# Copyright 2025-2026, Hewlett Packard Enterprise Development LP # # # pmempool_sync/TEST47 -- test for sync command with badblocks @@ -16,14 +16,14 @@ . setup.sh -require_real_pmem require_test_type medium -require_fs_type non-pmem require_build_type debug nondebug require_linked_with_ndctl $PMEMPOOL$EXESUFFIX setup +require_sds $PMEMPOOL$EXESUFFIX + export PMEMPOOL_LOG_LEVEL=10 LOG=out${UNITTEST_NUM}.log @@ -73,8 +73,6 @@ create_recovery_file $DIR/testset1_r2_p0_badblocks.txt 1000 2 create_recovery_file $DIR/testset1_r2_p1_badblocks.txt create_recovery_file $DIR/testset1_r2_p2_badblocks.txt 1000 2 -turn_on_checking_bad_blocks $POOLSET - # fail because of bad blocks expect_abnormal_exit "$OBJ_VERIFY$EXESUFFIX $POOLSET pmempool$SUFFIX v &>> $LOG" diff --git a/src/test/pmempool_sync/TEST48 b/src/test/pmempool_sync/TEST48 index 2015ee7635..bcc046ee0a 100755 --- a/src/test/pmempool_sync/TEST48 +++ b/src/test/pmempool_sync/TEST48 @@ -1,7 +1,7 @@ #!/usr/bin/env bash # SPDX-License-Identifier: BSD-3-Clause # Copyright 2018-2024, Intel Corporation -# Copyright 2025, Hewlett Packard Enterprise Development LP +# Copyright 2025-2026, Hewlett Packard Enterprise Development LP # # # pmempool_sync/TEST48 -- test for sync command with badblocks @@ -19,14 +19,14 @@ . setup.sh -require_real_pmem require_test_type medium -require_fs_type non-pmem require_build_type debug nondebug require_linked_with_ndctl $PMEMPOOL$EXESUFFIX setup +require_sds $PMEMPOOL$EXESUFFIX + export PMEMPOOL_LOG_LEVEL=10 LOG=out${UNITTEST_NUM}.log @@ -76,8 +76,6 @@ create_recovery_file $DIR/testset1_r2_p0_badblocks.txt 1001 2 create_recovery_file $DIR/testset1_r2_p1_badblocks.txt create_recovery_file $DIR/testset1_r2_p2_badblocks.txt 1000 2 -turn_on_checking_bad_blocks $POOLSET - # fail because of bad blocks expect_abnormal_exit "$OBJ_VERIFY$EXESUFFIX $POOLSET pmempool$SUFFIX v &>> $LOG" diff --git a/src/test/pmempool_sync/TEST49 b/src/test/pmempool_sync/TEST49 index e9279dbca6..d0f94cc382 100755 --- a/src/test/pmempool_sync/TEST49 +++ b/src/test/pmempool_sync/TEST49 @@ -1,7 +1,7 @@ #!/usr/bin/env bash # SPDX-License-Identifier: BSD-3-Clause # Copyright 2011-2024, Intel Corporation -# Copyright 2025, Hewlett Packard Enterprise Development LP +# Copyright 2025-2026, Hewlett Packard Enterprise Development LP # # # pmempool_sync/TEST49 -- test for sync command with badblocks @@ -20,14 +20,14 @@ . setup.sh -require_real_pmem require_test_type medium -require_fs_type non-pmem require_build_type debug nondebug require_linked_with_ndctl $PMEMPOOL$EXESUFFIX setup +require_sds $PMEMPOOL$EXESUFFIX + export PMEMPOOL_LOG_LEVEL=10 LOG=out${UNITTEST_NUM}.log @@ -75,8 +75,6 @@ create_recovery_file $DIR/testset1_r1_p2_badblocks.txt 1000 3 create_recovery_file $DIR/testset1_r2_p2_badblocks.txt 1000 3 create_recovery_file $DIR/testset1_r2_p0_badblocks.txt 1000 3 -turn_on_checking_bad_blocks $POOLSET - # fail because of bad blocks expect_abnormal_exit "$OBJ_VERIFY$EXESUFFIX $POOLSET pmempool$SUFFIX v &>> $LOG" diff --git a/src/test/pmempool_sync/TEST50 b/src/test/pmempool_sync/TEST50 index 0ab62e01c6..dad28761a0 100755 --- a/src/test/pmempool_sync/TEST50 +++ b/src/test/pmempool_sync/TEST50 @@ -1,7 +1,7 @@ #!/usr/bin/env bash # SPDX-License-Identifier: BSD-3-Clause # Copyright 2018-2024, Intel Corporation -# Copyright 2025, Hewlett Packard Enterprise Development LP +# Copyright 2025-2026, Hewlett Packard Enterprise Development LP # # # pmempool_sync/TEST50 -- test for sync command with badblocks @@ -20,14 +20,14 @@ . setup.sh -require_real_pmem require_test_type medium -require_fs_type non-pmem require_build_type debug nondebug require_linked_with_ndctl $PMEMPOOL$EXESUFFIX setup +require_sds $PMEMPOOL$EXESUFFIX + export PMEMPOOL_LOG_LEVEL=10 LOG=out${UNITTEST_NUM}.log @@ -75,8 +75,6 @@ create_recovery_file $DIR/testset1_r1_p2_badblocks.txt 1001 1 create_recovery_file $DIR/testset1_r2_p2_badblocks.txt 1001 1 create_recovery_file $DIR/testset1_r2_p0_badblocks.txt 1001 1 -turn_on_checking_bad_blocks $POOLSET - # fail because of bad blocks expect_abnormal_exit "$OBJ_VERIFY$EXESUFFIX $POOLSET pmempool$SUFFIX v &>> $LOG" diff --git a/src/test/pmempool_sync/TEST51 b/src/test/pmempool_sync/TEST51 index e35b1bb1aa..bdec17a134 100755 --- a/src/test/pmempool_sync/TEST51 +++ b/src/test/pmempool_sync/TEST51 @@ -1,7 +1,7 @@ #!/usr/bin/env bash # SPDX-License-Identifier: BSD-3-Clause # Copyright 2018-2024, Intel Corporation -# Copyright 2025, Hewlett Packard Enterprise Development LP +# Copyright 2025-2026, Hewlett Packard Enterprise Development LP # # # pmempool_sync/TEST51 -- test for sync command with badblocks @@ -21,14 +21,14 @@ . setup.sh -require_real_pmem require_test_type medium -require_fs_type non-pmem require_build_type debug nondebug require_linked_with_ndctl $PMEMPOOL$EXESUFFIX setup +require_sds $PMEMPOOL$EXESUFFIX + export PMEMPOOL_LOG_LEVEL=10 LOG=out${UNITTEST_NUM}.log @@ -76,8 +76,6 @@ create_recovery_file $DIR/testset1_r0_p1_badblocks.txt 1000 3 create_recovery_file $DIR/testset1_r1_p2_badblocks.txt 1000 3 create_recovery_file $DIR/testset1_r2_p0_badblocks.txt 1000 3 -turn_on_checking_bad_blocks $POOLSET - # fail because of bad blocks expect_abnormal_exit "$OBJ_VERIFY$EXESUFFIX $POOLSET pmempool$SUFFIX v &>> $LOG" diff --git a/src/test/pmempool_sync/TEST52 b/src/test/pmempool_sync/TEST52 index ebf20e5560..5ad02a0464 100755 --- a/src/test/pmempool_sync/TEST52 +++ b/src/test/pmempool_sync/TEST52 @@ -1,7 +1,7 @@ #!/usr/bin/env bash # SPDX-License-Identifier: BSD-3-Clause # Copyright 2018-2024, Intel Corporation -# Copyright 2025, Hewlett Packard Enterprise Development LP +# Copyright 2025-2026, Hewlett Packard Enterprise Development LP # # # pmempool_sync/TEST52 -- test for sync command with badblocks @@ -16,14 +16,14 @@ . setup.sh -require_real_pmem require_test_type medium -require_fs_type non-pmem require_build_type debug nondebug require_linked_with_ndctl $PMEMPOOL$EXESUFFIX setup +require_sds $PMEMPOOL$EXESUFFIX + export PMEMPOOL_LOG_LEVEL=10 LOG=out${UNITTEST_NUM}.log @@ -73,8 +73,6 @@ create_recovery_file $DIR/testset1_r0_p2_badblocks.txt create_recovery_file $DIR/testset1_r1_p2_badblocks.txt create_recovery_file $DIR/testset1_r2_p2_badblocks.txt -turn_on_checking_bad_blocks $POOLSET - # fail because of bad blocks expect_abnormal_exit "$OBJ_VERIFY$EXESUFFIX $POOLSET pmempool$SUFFIX v &>> $LOG" diff --git a/src/test/pmempool_sync/TEST53 b/src/test/pmempool_sync/TEST53 index 441055510c..701f84f25f 100755 --- a/src/test/pmempool_sync/TEST53 +++ b/src/test/pmempool_sync/TEST53 @@ -1,7 +1,7 @@ #!/usr/bin/env bash # SPDX-License-Identifier: BSD-3-Clause # Copyright 2011-2024, Intel Corporation -# Copyright 2025, Hewlett Packard Enterprise Development LP +# Copyright 2025-2026, Hewlett Packard Enterprise Development LP # # # pmempool_sync/TEST53 -- test for sync command with badblocks @@ -18,14 +18,14 @@ . setup.sh -require_real_pmem require_test_type medium -require_fs_type non-pmem require_build_type debug nondebug require_linked_with_ndctl $PMEMPOOL$EXESUFFIX setup +require_sds $PMEMPOOL$EXESUFFIX + export PMEMPOOL_LOG_LEVEL=10 LOG=out${UNITTEST_NUM}.log @@ -75,8 +75,6 @@ create_recovery_file $DIR/testset1_r0_p2_badblocks.txt create_recovery_file $DIR/testset1_r1_p2_badblocks.txt create_recovery_file $DIR/testset1_r2_p2_badblocks.txt -turn_on_checking_bad_blocks $POOLSET - # fail because of bad blocks expect_abnormal_exit "$OBJ_VERIFY$EXESUFFIX $POOLSET pmempool$SUFFIX v &>> $LOG" diff --git a/src/test/unittest/unittest.sh b/src/test/unittest/unittest.sh index 0b297d5f69..00ad1ba277 100644 --- a/src/test/unittest/unittest.sh +++ b/src/test/unittest/unittest.sh @@ -2610,25 +2610,3 @@ function set_test_labels() { verbose_msg "$UNITTEST_NAME: SKIP ($TEST/$REAL_FS/$BUILD$MCSTR$PROV$PM) test-labels: $* ($TEST_LABEL required)" exit 0 } - -# -# require_real_pmem -- run tests only on real pmem -# -function require_real_pmem() { - local path="$1" - if [ -z "$path" ]; then - path="$DIR" - fi - if [ "$PMEM_IS_PMEM_FORCE" == "1" ]; then - verbose_msg "$UNITTEST_NAME: SKIP ($TEST/$REAL_FS/$BUILD$MCSTR$PROV$PM) PMEM is forced (PMEM_IS_PMEM_FORCE=$PMEM_IS_PMEM_FORCE), real PMEM required" - exit 0 - fi - case "$REAL_FS" in - pmem) - ;; - *) - verbose_msg "$UNITTEST_NAME: SKIP ($TEST/$REAL_FS/$BUILD$MCSTR$PROV$PM) REAL_FS $REAL_FS (pmem required)" - exit 0 - ;; - esac -} diff --git a/src/test/util_sds_check/TEST0 b/src/test/util_sds_check/TEST0 index 86cbacc329..a5b8561feb 100755 --- a/src/test/util_sds_check/TEST0 +++ b/src/test/util_sds_check/TEST0 @@ -14,8 +14,6 @@ require_fs_type none require_build_type debug -require_sds ./util_sds_check - setup expect_normal_exit ./util_sds_check test_dirty_clear diff --git a/src/test/util_sds_check/TEST1 b/src/test/util_sds_check/TEST1 index dee5359277..3bdce3b59c 100755 --- a/src/test/util_sds_check/TEST1 +++ b/src/test/util_sds_check/TEST1 @@ -14,8 +14,6 @@ require_fs_type none require_build_type debug -require_sds ./util_sds_check - setup expect_normal_exit ./util_sds_check test_invalid_checksum diff --git a/src/test/util_sds_check/TEST2 b/src/test/util_sds_check/TEST2 index 0b9dc9ed75..fbb6573673 100755 --- a/src/test/util_sds_check/TEST2 +++ b/src/test/util_sds_check/TEST2 @@ -14,8 +14,6 @@ require_fs_type none require_build_type debug -require_sds ./util_sds_check - setup expect_normal_exit ./util_sds_check test_dirty_set diff --git a/src/test/util_sds_check/TEST3 b/src/test/util_sds_check/TEST3 index d3ccc46cde..fd6986146f 100755 --- a/src/test/util_sds_check/TEST3 +++ b/src/test/util_sds_check/TEST3 @@ -14,8 +14,6 @@ require_fs_type none require_build_type debug -require_sds ./util_sds_check - setup expect_normal_exit ./util_sds_check test_invalid_uuid diff --git a/src/test/util_sds_check/TEST4 b/src/test/util_sds_check/TEST4 index 6026bf7be4..e605196b84 100755 --- a/src/test/util_sds_check/TEST4 +++ b/src/test/util_sds_check/TEST4 @@ -14,8 +14,6 @@ require_fs_type none require_build_type debug -require_sds ./util_sds_check - setup expect_normal_exit ./util_sds_check test_invalid_uuid_set_dirty diff --git a/src/test/util_sds_check/TEST5 b/src/test/util_sds_check/TEST5 index a15d99599b..463983acd2 100755 --- a/src/test/util_sds_check/TEST5 +++ b/src/test/util_sds_check/TEST5 @@ -14,8 +14,6 @@ require_fs_type none require_build_type debug -require_sds ./util_sds_check - setup expect_normal_exit ./util_sds_check test_invalid_usc diff --git a/src/test/util_sds_check/TEST6 b/src/test/util_sds_check/TEST6 index e138f6a938..bc457eba7b 100755 --- a/src/test/util_sds_check/TEST6 +++ b/src/test/util_sds_check/TEST6 @@ -14,8 +14,6 @@ require_fs_type none require_build_type debug -require_sds ./util_sds_check - setup expect_normal_exit ./util_sds_check test_invalid_usc_set_dirty diff --git a/src/test/util_sds_check/TEST7 b/src/test/util_sds_check/TEST7 index 2b5142c911..0f86f783b0 100755 --- a/src/test/util_sds_check/TEST7 +++ b/src/test/util_sds_check/TEST7 @@ -14,8 +14,6 @@ require_fs_type none require_build_type debug -require_sds ./util_sds_check - setup expect_normal_exit ./util_sds_check test_happy_day From fdaf7baf3d8f9d98bfcfec21d070e0589d891b30 Mon Sep 17 00:00:00 2001 From: Oksana Salyk Date: Fri, 16 Jan 2026 09:16:25 +0100 Subject: [PATCH 09/11] common: 2.1.3-rc1 release Signed-off-by: Oksana Salyk --- ChangeLog | 6 +++--- VERSION | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/ChangeLog b/ChangeLog index a0c5f31b26..6824c0bf49 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,9 +1,9 @@ -XXX +Fri Jan 16 2026 Oksana Sałyk - * Version X.X.X + * Version 2.1.3-rc1 - Expand the sds.at_create CTL to also cover the POOL_FEAT_CHECK_BAD_BLOCKS feature (daos-stack/pmdk#28, DAOS-18296). - - Until now, it controlled only the POOL_FEAT_SDS feature, but both may use NDCTL calls and increase stack usage. + - Until now, it controlled only the POOL_FEAT_SDS feature, but both may use NDCTL calls and increase stack usage. - Fix an issue in the PMEMOBJ allocator with a potential to corrupt the allocator's metadata (daos-stack/pmdk#24, DAOS-18195). - Fix compilation error on LoongArch. Thank you @liuxiang88 and @bgermann for your persistence in making it happen! (daos-stack/pmdk#29, pmem/pmdk#5957). diff --git a/VERSION b/VERSION index b4fa503625..dbbfccb6e5 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -2.1.2-rc1 +2.1.3-rc1 From 065fb89c881e26256a3a7785705710e5939a749a Mon Sep 17 00:00:00 2001 From: Oksana Salyk Date: Fri, 16 Jan 2026 14:44:58 +0100 Subject: [PATCH 10/11] common: 2.1.3 release Signed-off-by: Oksana Salyk --- ChangeLog | 2 +- INSTALL.md | 2 +- VERSION | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/ChangeLog b/ChangeLog index 6824c0bf49..d76593894b 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,6 +1,6 @@ Fri Jan 16 2026 Oksana Sałyk - * Version 2.1.3-rc1 + * Version 2.1.3 - Expand the sds.at_create CTL to also cover the POOL_FEAT_CHECK_BAD_BLOCKS feature (daos-stack/pmdk#28, DAOS-18296). - Until now, it controlled only the POOL_FEAT_SDS feature, but both may use NDCTL calls and increase stack usage. diff --git a/INSTALL.md b/INSTALL.md index b081d0bc85..bc2cee12fa 100644 --- a/INSTALL.md +++ b/INSTALL.md @@ -39,7 +39,7 @@ cd pmdk For a stable version, checkout a [release tag](https://github.com/pmem/pmdk/releases) as follows. Otherwise skip this step to build the latest development release. ```sh -git checkout tags/2.1.2 +git checkout tags/2.1.3 ``` Once all required [dependencies](#dependencies) are installed, PMDK is built using the diff --git a/VERSION b/VERSION index dbbfccb6e5..ac2cdeba01 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -2.1.3-rc1 +2.1.3 From 00231ae2127aafe4b707e1a32fcf55c3da50ec60 Mon Sep 17 00:00:00 2001 From: Oksana Salyk Date: Fri, 16 Jan 2026 14:45:49 +0100 Subject: [PATCH 11/11] common: git versions Signed-off-by: Oksana Salyk --- GIT_VERSION | 1 + VERSION | 1 - 2 files changed, 1 insertion(+), 1 deletion(-) create mode 100644 GIT_VERSION delete mode 100644 VERSION diff --git a/GIT_VERSION b/GIT_VERSION new file mode 100644 index 0000000000..6002f22fa2 --- /dev/null +++ b/GIT_VERSION @@ -0,0 +1 @@ +$Format:%h$ \ No newline at end of file diff --git a/VERSION b/VERSION deleted file mode 100644 index ac2cdeba01..0000000000 --- a/VERSION +++ /dev/null @@ -1 +0,0 @@ -2.1.3