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