diff --git a/src/include/daos_obj_class.h b/src/include/daos_obj_class.h index 9c5b89a4989..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 */ @@ -60,8 +61,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 +75,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 +347,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 +380,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 +413,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..ba20da7a7bb 100644 --- a/src/object/obj_class_def.c +++ b/src/object/obj_class_def.c @@ -1,5 +1,6 @@ /** - * (C) Copyright 2021-2022 Intel Corporation. + * (C) Copyright 2021-2024 Intel Corporation. + * (C) Copyright 2025 Hewlett Packard Enterprise Development LP * * SPDX-License-Identifier: BSD-2-Clause-Patent */ @@ -140,172 +141,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..74a6eb29ba5 100644 --- a/src/tests/ftest/erasurecode/online_rebuild.yaml +++ b/src/tests/ftest/erasurecode/online_rebuild.yaml @@ -62,7 +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", 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 3c1ea2f7588..83c2831f4f0 100644 --- a/src/tests/ftest/erasurecode/online_rebuild_mdtest.yaml +++ b/src/tests/ftest/erasurecode/online_rebuild_mdtest.yaml @@ -55,7 +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", 12] - ["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..54a89fc237f 100644 --- a/src/tests/ftest/ior/hard_rebuild.yaml +++ b/src/tests/ftest/ior/hard_rebuild.yaml @@ -50,9 +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", 12] - ["EC_8P2GX", 12] sw_wearout: 1 sw_status_file: stoneWallingStatusFile