From 7d3241b4933e0696b8fc796909c26f07b0ca6618 Mon Sep 17 00:00:00 2001 From: Wang Shilong Date: Thu, 19 Dec 2024 10:44:13 -0500 Subject: [PATCH 1/4] DAOS-16897 object: add N+3 EC object class MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Currently, DAOS supports EC (Erasure Coding) object classes with redundancy levels of N+1 and N+2. In certain scenarios, users may wish to use N+3 for enhanced redundancy and safety. Generally, DAOS’s EC and rebuild mechanisms are designed to handle various parity levels effectively. With the introduction of new object classes, comprehensive testing should be conducted to ensure that these changes do not introduce any unexpected issues or disrupt existing functionalities. Extend test cases to cover EC_4P3X object classes as a min test coverage. Required-githooks: true Signed-off-by: Wang Shilong --- src/include/daos_obj_class.h | 39 ++ src/object/obj_class_def.c | 364 ++++++++++-------- src/tests/ftest/erasurecode/aggregation.yaml | 1 + src/tests/ftest/erasurecode/cell_size.yaml | 2 +- src/tests/ftest/erasurecode/ior_smoke.yaml | 3 + src/tests/ftest/erasurecode/mdtest_smoke.yaml | 2 + .../erasurecode/multiple_rank_failure.yaml | 3 + .../erasurecode/multiple_target_failure.yaml | 3 + .../ftest/erasurecode/offline_rebuild.yaml | 1 + .../ftest/erasurecode/online_rebuild.yaml | 1 + .../erasurecode/online_rebuild_mdtest.yaml | 1 + src/tests/ftest/ior/hard.yaml | 2 + src/tests/ftest/ior/hard_rebuild.yaml | 1 + 13 files changed, 255 insertions(+), 168 deletions(-) diff --git a/src/include/daos_obj_class.h b/src/include/daos_obj_class.h index 9c5b89a4989..3a53d2f0f3e 100644 --- a/src/include/daos_obj_class.h +++ b/src/include/daos_obj_class.h @@ -60,8 +60,11 @@ enum daos_obj_redun { * Examples: * - 2P1: 2+1 EC object * - 4P2: 4+2 EC object + * - 4P3: 4+3 EC object * - 8P2: 8+2 EC object + * - 8P3: 8+3 EC object * - 16P2: 16+2 EC object + * - 16P3: 16+3 EC object */ OR_RS_2P1 = 32, OR_RS_2P2, @@ -71,6 +74,9 @@ enum daos_obj_redun { OR_RS_8P2, OR_RS_16P1, OR_RS_16P2, + OR_RS_4P3, + OR_RS_8P3, + OR_RS_16P3, /* * Predefined object classes that can be used directly by the API user. @@ -340,6 +346,17 @@ enum daos_obj_redun { OC_EC_4P2G32 = OBJ_CLASS_DEF(OR_RS_4P2, 32ULL), OC_EC_4P2GX = OBJ_CLASS_DEF(OR_RS_4P2, MAX_NUM_GROUPS), + /** EC 4+3 object classes */ + OC_EC_4P3G1 = OBJ_CLASS_DEF(OR_RS_4P3, 1ULL), + OC_EC_4P3G2 = OBJ_CLASS_DEF(OR_RS_4P3, 2ULL), + OC_EC_4P3G4 = OBJ_CLASS_DEF(OR_RS_4P3, 4ULL), + OC_EC_4P3G6 = OBJ_CLASS_DEF(OR_RS_4P3, 6ULL), + OC_EC_4P3G8 = OBJ_CLASS_DEF(OR_RS_4P3, 8ULL), + OC_EC_4P3G12 = OBJ_CLASS_DEF(OR_RS_4P3, 12ULL), + OC_EC_4P3G16 = OBJ_CLASS_DEF(OR_RS_4P3, 16ULL), + OC_EC_4P3G32 = OBJ_CLASS_DEF(OR_RS_4P3, 32ULL), + OC_EC_4P3GX = OBJ_CLASS_DEF(OR_RS_4P3, MAX_NUM_GROUPS), + /** EC 8+1 object classes */ OC_EC_8P1G1 = OBJ_CLASS_DEF(OR_RS_8P1, 1ULL), OC_EC_8P1G2 = OBJ_CLASS_DEF(OR_RS_8P1, 2ULL), @@ -362,6 +379,17 @@ enum daos_obj_redun { OC_EC_8P2G32 = OBJ_CLASS_DEF(OR_RS_8P2, 32ULL), OC_EC_8P2GX = OBJ_CLASS_DEF(OR_RS_8P2, MAX_NUM_GROUPS), + /** EC 8+3 object classes */ + OC_EC_8P3G1 = OBJ_CLASS_DEF(OR_RS_8P3, 1ULL), + OC_EC_8P3G2 = OBJ_CLASS_DEF(OR_RS_8P3, 2ULL), + OC_EC_8P3G4 = OBJ_CLASS_DEF(OR_RS_8P3, 4ULL), + OC_EC_8P3G6 = OBJ_CLASS_DEF(OR_RS_8P3, 6ULL), + OC_EC_8P3G8 = OBJ_CLASS_DEF(OR_RS_8P3, 8ULL), + OC_EC_8P3G12 = OBJ_CLASS_DEF(OR_RS_8P3, 12ULL), + OC_EC_8P3G16 = OBJ_CLASS_DEF(OR_RS_8P3, 16ULL), + OC_EC_8P3G32 = OBJ_CLASS_DEF(OR_RS_8P3, 32ULL), + OC_EC_8P3GX = OBJ_CLASS_DEF(OR_RS_8P3, MAX_NUM_GROUPS), + /** EC 16+1 object classes */ OC_EC_16P1G1 = OBJ_CLASS_DEF(OR_RS_16P1, 1ULL), OC_EC_16P1G2 = OBJ_CLASS_DEF(OR_RS_16P1, 2ULL), @@ -384,6 +412,17 @@ enum daos_obj_redun { OC_EC_16P2G32 = OBJ_CLASS_DEF(OR_RS_16P2, 32ULL), OC_EC_16P2GX = OBJ_CLASS_DEF(OR_RS_16P2, MAX_NUM_GROUPS), + /** EC 16+3 object classes */ + OC_EC_16P3G1 = OBJ_CLASS_DEF(OR_RS_16P3, 1ULL), + OC_EC_16P3G2 = OBJ_CLASS_DEF(OR_RS_16P3, 2ULL), + OC_EC_16P3G4 = OBJ_CLASS_DEF(OR_RS_16P3, 4ULL), + OC_EC_16P3G6 = OBJ_CLASS_DEF(OR_RS_16P3, 6ULL), + OC_EC_16P3G8 = OBJ_CLASS_DEF(OR_RS_16P3, 8ULL), + OC_EC_16P3G12 = OBJ_CLASS_DEF(OR_RS_16P3, 12ULL), + OC_EC_16P3G16 = OBJ_CLASS_DEF(OR_RS_16P3, 16ULL), + OC_EC_16P3G32 = OBJ_CLASS_DEF(OR_RS_16P3, 32ULL), + OC_EC_16P3GX = OBJ_CLASS_DEF(OR_RS_16P3, MAX_NUM_GROUPS), + /** Class ID equal or higher than this is reserved */ OC_RESERVED = 1 << 30, diff --git a/src/object/obj_class_def.c b/src/object/obj_class_def.c index db29e6bb33c..ca788604979 100644 --- a/src/object/obj_class_def.c +++ b/src/object/obj_class_def.c @@ -1,5 +1,5 @@ /** - * (C) Copyright 2021-2022 Intel Corporation. + * (C) Copyright 2021-2024 Intel Corporation. * * SPDX-License-Identifier: BSD-2-Clause-Patent */ @@ -140,172 +140,202 @@ } struct daos_obj_class daos_obj_classes[] = { - /* single replica classes */ - OC_SS_DEF(1), - OC_SS_DEF(2), - OC_SS_DEF(4), - OC_SS_DEF(6), - OC_SS_DEF(8), - OC_SS_DEF(12), - OC_SS_DEF(16), - OC_SS_DEF(32), - OC_SS_DEF_GX(), - - /* 2-replica classes */ - OC_RP_DEF(2, 1), - OC_RP_DEF(2, 2), - OC_RP_DEF(2, 4), - OC_RP_DEF(2, 6), - OC_RP_DEF(2, 8), - OC_RP_DEF(2, 12), - OC_RP_DEF(2, 16), - OC_RP_DEF(2, 32), - OC_RP_DEF_GX(2), - - /* 3-replica classes */ - OC_RP_DEF(3, 1), - OC_RP_DEF(3, 2), - OC_RP_DEF(3, 4), - OC_RP_DEF(3, 6), - OC_RP_DEF(3, 8), - OC_RP_DEF(3, 12), - OC_RP_DEF(3, 16), - OC_RP_DEF(3, 32), - OC_RP_DEF_GX(3), - - /* 4-replica classes */ - OC_RP_DEF(4, 1), - OC_RP_DEF(4, 2), - OC_RP_DEF(4, 4), - OC_RP_DEF(4, 6), - OC_RP_DEF(4, 8), - OC_RP_DEF(4, 12), - OC_RP_DEF(4, 16), - OC_RP_DEF(4, 32), - OC_RP_DEF_GX(4), - - /* 5-replica classes */ - OC_RP_DEF(5, 1), - OC_RP_DEF(5, 2), - OC_RP_DEF(5, 4), - OC_RP_DEF(5, 6), - OC_RP_DEF(5, 8), - OC_RP_DEF(5, 12), - OC_RP_DEF(5, 16), - OC_RP_DEF(5, 32), - OC_RP_DEF_GX(5), - - /* 6-replica classes */ - OC_RP_DEF(6, 1), - OC_RP_DEF(6, 2), - OC_RP_DEF(6, 4), - OC_RP_DEF(6, 6), - OC_RP_DEF(6, 8), - OC_RP_DEF(6, 12), - OC_RP_DEF(6, 16), - OC_RP_DEF(6, 32), - OC_RP_DEF_GX(6), - - /* extremely scalable fetch */ - OC_RP_XSF(), - - /* EC(2+1) classes */ - OC_EC_DEF(2, 1, 1), - OC_EC_DEF(2, 1, 2), - OC_EC_DEF(2, 1, 4), - OC_EC_DEF(2, 1, 8), - OC_EC_DEF(2, 1, 12), - OC_EC_DEF(2, 1, 16), - OC_EC_DEF(2, 1, 32), - OC_EC_DEF_GX(2, 1), - - /* EC(2+2) classes */ - OC_EC_DEF(2, 2, 1), - OC_EC_DEF(2, 2, 2), - OC_EC_DEF(2, 2, 4), - OC_EC_DEF(2, 2, 8), - OC_EC_DEF(2, 2, 12), - OC_EC_DEF(2, 2, 16), - OC_EC_DEF(2, 2, 32), - OC_EC_DEF_GX(2, 2), - - /* EC(4+1) classes */ - OC_EC_DEF(4, 1, 1), - OC_EC_DEF(4, 1, 2), - OC_EC_DEF(4, 1, 4), - OC_EC_DEF(4, 1, 8), - OC_EC_DEF(4, 1, 12), - OC_EC_DEF(4, 1, 16), - OC_EC_DEF(4, 1, 32), - OC_EC_DEF_GX(4, 1), - - /* EC(4+2) classes */ - OC_EC_DEF(4, 2, 1), - OC_EC_DEF(4, 2, 2), - OC_EC_DEF(4, 2, 4), - OC_EC_DEF(4, 2, 8), - OC_EC_DEF(4, 2, 12), - OC_EC_DEF(4, 2, 16), - OC_EC_DEF(4, 2, 32), - OC_EC_DEF_GX(4, 2), - - /* EC(8+1) classes */ - OC_EC_DEF(8, 1, 1), - OC_EC_DEF(8, 1, 2), - OC_EC_DEF(8, 1, 4), - OC_EC_DEF(8, 1, 8), - OC_EC_DEF(8, 1, 12), - OC_EC_DEF(8, 1, 16), - OC_EC_DEF(8, 1, 32), - OC_EC_DEF_GX(8, 1), - - /* EC(8+2) classes */ - OC_EC_DEF(8, 2, 1), - OC_EC_DEF(8, 2, 2), - OC_EC_DEF(8, 2, 4), - OC_EC_DEF(8, 2, 8), - OC_EC_DEF(8, 2, 12), - OC_EC_DEF(8, 2, 16), - OC_EC_DEF(8, 2, 32), - OC_EC_DEF_GX(8, 2), - - /* EC(16+1) classes */ - OC_EC_DEF(16, 1, 1), - OC_EC_DEF(16, 1, 2), - OC_EC_DEF(16, 1, 4), - OC_EC_DEF(16, 1, 8), - OC_EC_DEF(16, 1, 12), - OC_EC_DEF(16, 1, 16), - OC_EC_DEF(16, 1, 32), - OC_EC_DEF_GX(16, 1), - - /* EC(16+2) classes */ - OC_EC_DEF(16, 2, 1), - OC_EC_DEF(16, 2, 2), - OC_EC_DEF(16, 2, 4), - OC_EC_DEF(16, 2, 8), - OC_EC_DEF(16, 2, 12), - OC_EC_DEF(16, 2, 16), - OC_EC_DEF(16, 2, 32), - OC_EC_DEF_GX(16, 2), - - /* Internal classes: echo objects */ - OC_RP_ECHO_DEF(1), - OC_RP_ECHO_DEF(2), - OC_RP_ECHO_DEF(3), - OC_RP_ECHO_DEF(4), - - /* Internal classes: specified rank */ - OC_RP_SRANK_DEF(1, 1), - OC_RP_SRANK_DEF(2, 1), - OC_RP_SRANK_DEF(3, 1), - - /* The last one */ - { - .oc_name = NULL, - .oc_id = OC_UNKNOWN, - .oc_private = true, - }, + /* single replica classes */ + OC_SS_DEF(1), + OC_SS_DEF(2), + OC_SS_DEF(4), + OC_SS_DEF(6), + OC_SS_DEF(8), + OC_SS_DEF(12), + OC_SS_DEF(16), + OC_SS_DEF(32), + OC_SS_DEF_GX(), + + /* 2-replica classes */ + OC_RP_DEF(2, 1), + OC_RP_DEF(2, 2), + OC_RP_DEF(2, 4), + OC_RP_DEF(2, 6), + OC_RP_DEF(2, 8), + OC_RP_DEF(2, 12), + OC_RP_DEF(2, 16), + OC_RP_DEF(2, 32), + OC_RP_DEF_GX(2), + + /* 3-replica classes */ + OC_RP_DEF(3, 1), + OC_RP_DEF(3, 2), + OC_RP_DEF(3, 4), + OC_RP_DEF(3, 6), + OC_RP_DEF(3, 8), + OC_RP_DEF(3, 12), + OC_RP_DEF(3, 16), + OC_RP_DEF(3, 32), + OC_RP_DEF_GX(3), + + /* 4-replica classes */ + OC_RP_DEF(4, 1), + OC_RP_DEF(4, 2), + OC_RP_DEF(4, 4), + OC_RP_DEF(4, 6), + OC_RP_DEF(4, 8), + OC_RP_DEF(4, 12), + OC_RP_DEF(4, 16), + OC_RP_DEF(4, 32), + OC_RP_DEF_GX(4), + + /* 5-replica classes */ + OC_RP_DEF(5, 1), + OC_RP_DEF(5, 2), + OC_RP_DEF(5, 4), + OC_RP_DEF(5, 6), + OC_RP_DEF(5, 8), + OC_RP_DEF(5, 12), + OC_RP_DEF(5, 16), + OC_RP_DEF(5, 32), + OC_RP_DEF_GX(5), + + /* 6-replica classes */ + OC_RP_DEF(6, 1), + OC_RP_DEF(6, 2), + OC_RP_DEF(6, 4), + OC_RP_DEF(6, 6), + OC_RP_DEF(6, 8), + OC_RP_DEF(6, 12), + OC_RP_DEF(6, 16), + OC_RP_DEF(6, 32), + OC_RP_DEF_GX(6), + + /* extremely scalable fetch */ + OC_RP_XSF(), + + /* EC(2+1) classes */ + OC_EC_DEF(2, 1, 1), + OC_EC_DEF(2, 1, 2), + OC_EC_DEF(2, 1, 4), + OC_EC_DEF(2, 1, 8), + OC_EC_DEF(2, 1, 12), + OC_EC_DEF(2, 1, 16), + OC_EC_DEF(2, 1, 32), + OC_EC_DEF_GX(2, 1), + + /* EC(2+2) classes */ + OC_EC_DEF(2, 2, 1), + OC_EC_DEF(2, 2, 2), + OC_EC_DEF(2, 2, 4), + OC_EC_DEF(2, 2, 8), + OC_EC_DEF(2, 2, 12), + OC_EC_DEF(2, 2, 16), + OC_EC_DEF(2, 2, 32), + OC_EC_DEF_GX(2, 2), + + /* EC(4+1) classes */ + OC_EC_DEF(4, 1, 1), + OC_EC_DEF(4, 1, 2), + OC_EC_DEF(4, 1, 4), + OC_EC_DEF(4, 1, 8), + OC_EC_DEF(4, 1, 12), + OC_EC_DEF(4, 1, 16), + OC_EC_DEF(4, 1, 32), + OC_EC_DEF_GX(4, 1), + + /* EC(4+2) classes */ + OC_EC_DEF(4, 2, 1), + OC_EC_DEF(4, 2, 2), + OC_EC_DEF(4, 2, 4), + OC_EC_DEF(4, 2, 8), + OC_EC_DEF(4, 2, 12), + OC_EC_DEF(4, 2, 16), + OC_EC_DEF(4, 2, 32), + OC_EC_DEF_GX(4, 2), + + /* EC(4+3) classes */ + OC_EC_DEF(4, 3, 1), + OC_EC_DEF(4, 3, 2), + OC_EC_DEF(4, 3, 4), + OC_EC_DEF(4, 3, 8), + OC_EC_DEF(4, 3, 12), + OC_EC_DEF(4, 3, 16), + OC_EC_DEF(4, 3, 32), + OC_EC_DEF_GX(4, 3), + + /* EC(8+1) classes */ + OC_EC_DEF(8, 1, 1), + OC_EC_DEF(8, 1, 2), + OC_EC_DEF(8, 1, 4), + OC_EC_DEF(8, 1, 8), + OC_EC_DEF(8, 1, 12), + OC_EC_DEF(8, 1, 16), + OC_EC_DEF(8, 1, 32), + OC_EC_DEF_GX(8, 1), + + /* EC(8+2) classes */ + OC_EC_DEF(8, 2, 1), + OC_EC_DEF(8, 2, 2), + OC_EC_DEF(8, 2, 4), + OC_EC_DEF(8, 2, 8), + OC_EC_DEF(8, 2, 12), + OC_EC_DEF(8, 2, 16), + OC_EC_DEF(8, 2, 32), + OC_EC_DEF_GX(8, 2), + + /* EC(8+3) classes */ + OC_EC_DEF(8, 3, 1), + OC_EC_DEF(8, 3, 2), + OC_EC_DEF(8, 3, 4), + OC_EC_DEF(8, 3, 8), + OC_EC_DEF(8, 3, 12), + OC_EC_DEF(8, 3, 16), + OC_EC_DEF(8, 3, 32), + OC_EC_DEF_GX(8, 3), + + /* EC(16+1) classes */ + OC_EC_DEF(16, 1, 1), + OC_EC_DEF(16, 1, 2), + OC_EC_DEF(16, 1, 4), + OC_EC_DEF(16, 1, 8), + OC_EC_DEF(16, 1, 12), + OC_EC_DEF(16, 1, 16), + OC_EC_DEF(16, 1, 32), + OC_EC_DEF_GX(16, 1), + + /* EC(16+2) classes */ + OC_EC_DEF(16, 2, 1), + OC_EC_DEF(16, 2, 2), + OC_EC_DEF(16, 2, 4), + OC_EC_DEF(16, 2, 8), + OC_EC_DEF(16, 2, 12), + OC_EC_DEF(16, 2, 16), + OC_EC_DEF(16, 2, 32), + OC_EC_DEF_GX(16, 2), + + /* EC(16+3) classes */ + OC_EC_DEF(16, 3, 1), + OC_EC_DEF(16, 3, 2), + OC_EC_DEF(16, 3, 4), + OC_EC_DEF(16, 3, 8), + OC_EC_DEF(16, 3, 12), + OC_EC_DEF(16, 3, 16), + OC_EC_DEF(16, 3, 32), + OC_EC_DEF_GX(16, 3), + + /* Internal classes: echo objects */ + OC_RP_ECHO_DEF(1), + OC_RP_ECHO_DEF(2), + OC_RP_ECHO_DEF(3), + OC_RP_ECHO_DEF(4), + + /* Internal classes: specified rank */ + OC_RP_SRANK_DEF(1, 1), + OC_RP_SRANK_DEF(2, 1), + OC_RP_SRANK_DEF(3, 1), + + /* The last one */ + { + .oc_name = NULL, + .oc_id = OC_UNKNOWN, + .oc_private = true, + }, }; int diff --git a/src/tests/ftest/erasurecode/aggregation.yaml b/src/tests/ftest/erasurecode/aggregation.yaml index 3dc062ac002..5b289b7eaa5 100644 --- a/src/tests/ftest/erasurecode/aggregation.yaml +++ b/src/tests/ftest/erasurecode/aggregation.yaml @@ -52,4 +52,5 @@ ior: - ["EC_2P1G1", 4] - ["EC_4P1G1", 6] - ["EC_4P2G1", 6] + - ["EC_4P3G1", 7] - ["EC_8P2G1", 10] diff --git a/src/tests/ftest/erasurecode/cell_size.yaml b/src/tests/ftest/erasurecode/cell_size.yaml index b7757131daa..58891a50927 100644 --- a/src/tests/ftest/erasurecode/cell_size.yaml +++ b/src/tests/ftest/erasurecode/cell_size.yaml @@ -61,4 +61,4 @@ ior: - "EC_2P2GX" - "EC_4P1GX" - "EC_4P2GX" - - "EC_8P2GX" + - "EC_4P3GX" diff --git a/src/tests/ftest/erasurecode/ior_smoke.yaml b/src/tests/ftest/erasurecode/ior_smoke.yaml index 2f659d16cf1..17b8ef5b43b 100644 --- a/src/tests/ftest/erasurecode/ior_smoke.yaml +++ b/src/tests/ftest/erasurecode/ior_smoke.yaml @@ -61,6 +61,9 @@ ior: - "EC_4P2G1" - "EC_4P2G8" - "EC_4P2GX" + - "EC_4P3G1" + - "EC_4P3G8" + - "EC_4P3GX" - "EC_8P2G1" - "EC_8P2G8" - "EC_8P2GX" diff --git a/src/tests/ftest/erasurecode/mdtest_smoke.yaml b/src/tests/ftest/erasurecode/mdtest_smoke.yaml index 6c929689c9d..4e565f3a83b 100644 --- a/src/tests/ftest/erasurecode/mdtest_smoke.yaml +++ b/src/tests/ftest/erasurecode/mdtest_smoke.yaml @@ -63,5 +63,7 @@ mdtest: - "EC_4P1GX" - "EC_4P2G1" - "EC_4P2GX" + - "EC_4P3G1" + - "EC_4P3GX" - "EC_8P2G1" - "EC_8P2GX" diff --git a/src/tests/ftest/erasurecode/multiple_rank_failure.yaml b/src/tests/ftest/erasurecode/multiple_rank_failure.yaml index a90d9369f44..cd0d2e77bb5 100644 --- a/src/tests/ftest/erasurecode/multiple_rank_failure.yaml +++ b/src/tests/ftest/erasurecode/multiple_rank_failure.yaml @@ -60,6 +60,9 @@ ior: EC_4P2GX: dfs_oclass_list: - ["EC_4P2GX", 8] + EC_4P3GX: + dfs_oclass_list: + - ["EC_4P3GX", 10] EC_8P2GX: dfs_oclass_list: - ["EC_8P2GX", 10] diff --git a/src/tests/ftest/erasurecode/multiple_target_failure.yaml b/src/tests/ftest/erasurecode/multiple_target_failure.yaml index a90d9369f44..cd0d2e77bb5 100644 --- a/src/tests/ftest/erasurecode/multiple_target_failure.yaml +++ b/src/tests/ftest/erasurecode/multiple_target_failure.yaml @@ -60,6 +60,9 @@ ior: EC_4P2GX: dfs_oclass_list: - ["EC_4P2GX", 8] + EC_4P3GX: + dfs_oclass_list: + - ["EC_4P3GX", 10] EC_8P2GX: dfs_oclass_list: - ["EC_8P2GX", 10] diff --git a/src/tests/ftest/erasurecode/offline_rebuild.yaml b/src/tests/ftest/erasurecode/offline_rebuild.yaml index a61b47760b5..d583887c24f 100644 --- a/src/tests/ftest/erasurecode/offline_rebuild.yaml +++ b/src/tests/ftest/erasurecode/offline_rebuild.yaml @@ -56,4 +56,5 @@ ior: - ["EC_2P1G1", 6] - ["EC_4P1G1", 8] - ["EC_4P2G1", 8] + - ["EC_4P3G1", 10] - ["EC_8P2G1", 12] diff --git a/src/tests/ftest/erasurecode/online_rebuild.yaml b/src/tests/ftest/erasurecode/online_rebuild.yaml index 4d34c16049d..4911d4b22e2 100644 --- a/src/tests/ftest/erasurecode/online_rebuild.yaml +++ b/src/tests/ftest/erasurecode/online_rebuild.yaml @@ -65,4 +65,5 @@ ior: #- [EC_Object_Class, Minimum number of servers] - ["EC_2P2G1", 6] - ["EC_4P2G1", 8] + - ["EC_4P3G1", 9] - ["EC_8P2G1", 12] diff --git a/src/tests/ftest/erasurecode/online_rebuild_mdtest.yaml b/src/tests/ftest/erasurecode/online_rebuild_mdtest.yaml index 3c1ea2f7588..f01264640e6 100644 --- a/src/tests/ftest/erasurecode/online_rebuild_mdtest.yaml +++ b/src/tests/ftest/erasurecode/online_rebuild_mdtest.yaml @@ -58,4 +58,5 @@ mdtest: #- [EC_Object_Class, Minimum number of servers] - ["EC_2P2GX", 6] - ["EC_4P2GX", 8] + - ["EC_4P3GX", 9] - ["EC_8P2GX", 12] diff --git a/src/tests/ftest/ior/hard.yaml b/src/tests/ftest/ior/hard.yaml index 5870e4206d5..e04de4c0414 100644 --- a/src/tests/ftest/ior/hard.yaml +++ b/src/tests/ftest/ior/hard.yaml @@ -55,6 +55,8 @@ ior: dfs_oclass: "EC_2P1GX" EC_4P2GX: dfs_oclass: "EC_4P2GX" + EC_4P3GX: + dfs_oclass: "EC_4P3GX" EC_8P2GX: dfs_oclass: "EC_8P2GX" sw_wearout: 1 diff --git a/src/tests/ftest/ior/hard_rebuild.yaml b/src/tests/ftest/ior/hard_rebuild.yaml index f1a7f28850c..ab0edc8634d 100644 --- a/src/tests/ftest/ior/hard_rebuild.yaml +++ b/src/tests/ftest/ior/hard_rebuild.yaml @@ -53,6 +53,7 @@ ior: # - [EC_Object_Class, Minimum number of servers] - ["EC_2P2GX", 6] - ["EC_4P2GX", 8] + - ["EC_4P3GX", 9] - ["EC_8P2GX", 12] sw_wearout: 1 sw_status_file: stoneWallingStatusFile From 70fb31560df4fbc184f64142ca26242cb9835f90 Mon Sep 17 00:00:00 2001 From: Wang Shilong Date: Thu, 2 Jan 2025 21:21:57 -0500 Subject: [PATCH 2/4] Fix ftest yaml Signed-off-by: Wang Shilong --- src/tests/ftest/erasurecode/online_rebuild.yaml | 4 ++-- src/tests/ftest/erasurecode/online_rebuild_mdtest.yaml | 4 ++-- src/tests/ftest/ior/hard_rebuild.yaml | 4 ++-- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/src/tests/ftest/erasurecode/online_rebuild.yaml b/src/tests/ftest/erasurecode/online_rebuild.yaml index 4911d4b22e2..74a6eb29ba5 100644 --- a/src/tests/ftest/erasurecode/online_rebuild.yaml +++ b/src/tests/ftest/erasurecode/online_rebuild.yaml @@ -62,8 +62,8 @@ ior: - [32M, 512M, 2K] objectclass: dfs_oclass_list: - #- [EC_Object_Class, Minimum number of servers] + #- [EC_Object_Class, Exact number of servers] - ["EC_2P2G1", 6] - ["EC_4P2G1", 8] - - ["EC_4P3G1", 9] + - ["EC_4P3G1", 12] - ["EC_8P2G1", 12] diff --git a/src/tests/ftest/erasurecode/online_rebuild_mdtest.yaml b/src/tests/ftest/erasurecode/online_rebuild_mdtest.yaml index f01264640e6..83c2831f4f0 100644 --- a/src/tests/ftest/erasurecode/online_rebuild_mdtest.yaml +++ b/src/tests/ftest/erasurecode/online_rebuild_mdtest.yaml @@ -55,8 +55,8 @@ mdtest: dfs_dir_oclass: "RP_3G1" objectclass: dfs_oclass_list: - #- [EC_Object_Class, Minimum number of servers] + #- [EC_Object_Class, Exact number of servers] - ["EC_2P2GX", 6] - ["EC_4P2GX", 8] - - ["EC_4P3GX", 9] + - ["EC_4P3GX", 12] - ["EC_8P2GX", 12] diff --git a/src/tests/ftest/ior/hard_rebuild.yaml b/src/tests/ftest/ior/hard_rebuild.yaml index ab0edc8634d..54a89fc237f 100644 --- a/src/tests/ftest/ior/hard_rebuild.yaml +++ b/src/tests/ftest/ior/hard_rebuild.yaml @@ -50,10 +50,10 @@ ior: - [47008, 47008, 47008] objectclass: dfs_oclass_list: - # - [EC_Object_Class, Minimum number of servers] + # - [EC_Object_Class, Exact number of servers] - ["EC_2P2GX", 6] - ["EC_4P2GX", 8] - - ["EC_4P3GX", 9] + - ["EC_4P3GX", 12] - ["EC_8P2GX", 12] sw_wearout: 1 sw_status_file: stoneWallingStatusFile From 490a5e36e9a3f23e431a31925af8fc8946c10b00 Mon Sep 17 00:00:00 2001 From: Wang Shilong Date: Thu, 9 Jan 2025 09:20:18 -0500 Subject: [PATCH 3/4] Fix copyright Signed-off-by: Wang Shilong --- src/include/daos_obj_class.h | 1 + src/object/obj_class_def.c | 1 + 2 files changed, 2 insertions(+) diff --git a/src/include/daos_obj_class.h b/src/include/daos_obj_class.h index 3a53d2f0f3e..0b7ff7c54c0 100644 --- a/src/include/daos_obj_class.h +++ b/src/include/daos_obj_class.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/object/obj_class_def.c b/src/object/obj_class_def.c index ca788604979..ba20da7a7bb 100644 --- a/src/object/obj_class_def.c +++ b/src/object/obj_class_def.c @@ -1,5 +1,6 @@ /** * (C) Copyright 2021-2024 Intel Corporation. + * (C) Copyright 2025 Hewlett Packard Enterprise Development LP * * SPDX-License-Identifier: BSD-2-Clause-Patent */ From ed97426888acac0794dcadf4e76f841a887b6381 Mon Sep 17 00:00:00 2001 From: Wang Shilong Date: Thu, 9 Jan 2025 09:29:59 -0500 Subject: [PATCH 4/4] Skip NLT Skip-nlt: true Signed-off-by: Wang Shilong