From c4b3e71fdb905106c843c02a6cb28a9be1902132 Mon Sep 17 00:00:00 2001 From: Wang Shilong Date: Thu, 19 Dec 2024 10:44:13 -0500 Subject: [PATCH] DAOS-16897 object: add N+3 EC object class 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 | 2 + src/tests/ftest/erasurecode/cell_size.yaml | 4 +- src/tests/ftest/erasurecode/ior_smoke.yaml | 8 +- src/tests/ftest/erasurecode/mdtest_smoke.yaml | 6 +- .../erasurecode/multiple_rank_failure.yaml | 3 + .../erasurecode/multiple_target_failure.yaml | 8 +- .../ftest/erasurecode/offline_rebuild.yaml | 2 + 9 files changed, 265 insertions(+), 171 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..660c04c29bf 100644 --- a/src/tests/ftest/erasurecode/aggregation.yaml +++ b/src/tests/ftest/erasurecode/aggregation.yaml @@ -52,4 +52,6 @@ ior: - ["EC_2P1G1", 4] - ["EC_4P1G1", 6] - ["EC_4P2G1", 6] + - ["EC_4P3G1", 7] - ["EC_8P2G1", 10] + - ["EC_8P3G1", 11] diff --git a/src/tests/ftest/erasurecode/cell_size.yaml b/src/tests/ftest/erasurecode/cell_size.yaml index b7757131daa..abcee8b5425 100644 --- a/src/tests/ftest/erasurecode/cell_size.yaml +++ b/src/tests/ftest/erasurecode/cell_size.yaml @@ -1,5 +1,5 @@ hosts: - test_servers: 5 + test_servers: 11 test_clients: 3 timeout: 900 setup: @@ -61,4 +61,6 @@ ior: - "EC_2P2GX" - "EC_4P1GX" - "EC_4P2GX" + - "EC_4P3GX" - "EC_8P2GX" + - "EC_8P3GX" diff --git a/src/tests/ftest/erasurecode/ior_smoke.yaml b/src/tests/ftest/erasurecode/ior_smoke.yaml index 2f659d16cf1..ac018237bd3 100644 --- a/src/tests/ftest/erasurecode/ior_smoke.yaml +++ b/src/tests/ftest/erasurecode/ior_smoke.yaml @@ -1,5 +1,5 @@ hosts: - test_servers: 5 + test_servers: 11 test_clients: 3 timeout: 900 setup: @@ -61,6 +61,12 @@ ior: - "EC_4P2G1" - "EC_4P2G8" - "EC_4P2GX" + - "EC_4P3G1" + - "EC_4P3G8" + - "EC_4P3GX" - "EC_8P2G1" - "EC_8P2G8" - "EC_8P2GX" + - "EC_8P3G1" + - "EC_8P3G8" + - "EC_8P3GX" diff --git a/src/tests/ftest/erasurecode/mdtest_smoke.yaml b/src/tests/ftest/erasurecode/mdtest_smoke.yaml index 6c929689c9d..5fc90e09d95 100644 --- a/src/tests/ftest/erasurecode/mdtest_smoke.yaml +++ b/src/tests/ftest/erasurecode/mdtest_smoke.yaml @@ -1,5 +1,5 @@ hosts: - test_servers: 5 + test_servers: 11 test_clients: 3 timeout: 600 server_config: @@ -63,5 +63,9 @@ mdtest: - "EC_4P1GX" - "EC_4P2G1" - "EC_4P2GX" + - "EC_4P3G1" + - "EC_4P3GX" - "EC_8P2G1" - "EC_8P2GX" + - "EC_8P3G1" + - "EC_8P3GX" 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..baaa112b782 100644 --- a/src/tests/ftest/erasurecode/multiple_target_failure.yaml +++ b/src/tests/ftest/erasurecode/multiple_target_failure.yaml @@ -1,5 +1,5 @@ hosts: - test_servers: 6 + test_servers: 11 test_clients: 2 timeout: 2000 @@ -60,6 +60,12 @@ 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] + EC_8P3GX: + dfs_oclass_list: + - ["EC_8P3GX", 11] diff --git a/src/tests/ftest/erasurecode/offline_rebuild.yaml b/src/tests/ftest/erasurecode/offline_rebuild.yaml index a61b47760b5..1cd254c0579 100644 --- a/src/tests/ftest/erasurecode/offline_rebuild.yaml +++ b/src/tests/ftest/erasurecode/offline_rebuild.yaml @@ -56,4 +56,6 @@ ior: - ["EC_2P1G1", 6] - ["EC_4P1G1", 8] - ["EC_4P2G1", 8] + - ["EC_4P3G1", 10] - ["EC_8P2G1", 12] + - ["EC_8P3G1", 13]