diff --git a/src/common/pool_map.c b/src/common/pool_map.c index 3711ac98310..f063c64ab01 100644 --- a/src/common/pool_map.c +++ b/src/common/pool_map.c @@ -2429,7 +2429,7 @@ update_failed_cnt_helper(struct pool_domain *dom, if (dom->do_children == NULL) { for (i = 0; i < dom->do_target_nr; ++i) { - if (pool_target_down(&dom->do_targets[i])) + if (pool_target_is_down(&dom->do_targets[i])) num_failed++; } } else { diff --git a/src/include/daos/pool_map.h b/src/include/daos/pool_map.h index c3c094e3ea3..8873ebefa40 100644 --- a/src/include/daos/pool_map.h +++ b/src/include/daos/pool_map.h @@ -418,7 +418,7 @@ pool_target_is_down2up(struct pool_target *tgt) /** Check if the target is in PO_COMP_ST_DOWN status */ static inline bool -pool_target_down(struct pool_target *tgt) +pool_target_is_down(struct pool_target *tgt) { struct pool_component *comp = &tgt->ta_comp; uint8_t status = comp->co_status; diff --git a/src/placement/jump_map.c b/src/placement/jump_map.c index 56f0643555e..12b74bada73 100644 --- a/src/placement/jump_map.c +++ b/src/placement/jump_map.c @@ -1,7 +1,7 @@ /** * * (C) Copyright 2016-2024 Intel Corporation. - * (C) Copyright 2025 Hewlett Packard Enterprise Development LP + * (C) Copyright 2025-2026 Hewlett Packard Enterprise Development LP * * SPDX-License-Identifier: BSD-2-Clause-Patent */ @@ -732,8 +732,16 @@ get_object_layout(struct pl_jump_map *jmap, uint32_t layout_ver, struct pl_obj_l } else { if (domain != NULL) setbit(dom_cur_grp_real, domain - root); - if (pool_target_down(target)) + + if (pool_target_is_down(target)) layout->ol_shards[k].po_rebuilding = 1; + + if (pool_target_is_down2up(target)) { + if (gen_mode == PRE_REBUILD) + layout->ol_shards[k].po_rebuilding = 1; + else + layout->ol_shards[k].po_reintegrating = 1; + } } if (is_extending != NULL && pool_target_is_up_or_drain(target)) diff --git a/src/placement/pl_map_common.c b/src/placement/pl_map_common.c index 5afe0691a37..2b2c47d06a2 100644 --- a/src/placement/pl_map_common.c +++ b/src/placement/pl_map_common.c @@ -1,5 +1,6 @@ /** * (C) Copyright 2016-2024 Intel Corporation. + * (C) Copyright 2026 Hewlett Packard Enterprise Development LP * * SPDX-License-Identifier: BSD-2-Clause-Patent */ @@ -255,13 +256,7 @@ is_comp_avaible(struct pool_component *comp, uint32_t allow_version, status = PO_COMP_ST_UPIN; } else if (status == PO_COMP_ST_UP) { if (comp->co_flags & PO_COMPF_DOWN2UP) { - /* PO_COMP_ST_UP status with PO_COMPF_DOWN2UP flag - * is the case of delay_rebuild exclude+reint. - * Cannot mark it as UPIN to avoid it be used for - * rebuild enumerate/fetch, as the data will be - * discarded in reintegrate. - */ - /* status = PO_COMP_ST_UPIN; */ + status = PO_COMP_ST_UPIN; } else { if (comp->co_fseq <= 1) status = PO_COMP_ST_NEW; @@ -394,18 +389,23 @@ determine_valid_spares(struct pool_target *spare_tgt, struct daos_obj_md *md, if (spare_avail) { /* The selected spare target is up and ready */ l_shard->po_target = spare_tgt->ta_comp.co_id; - l_shard->po_fseq = f_shard->fs_fseq; - l_shard->po_rank = spare_tgt->ta_comp.co_rank; - l_shard->po_index = spare_tgt->ta_comp.co_index; + l_shard->po_fseq = f_shard->fs_fseq; + l_shard->po_rank = spare_tgt->ta_comp.co_rank; + l_shard->po_index = spare_tgt->ta_comp.co_index; + f_shard->fs_down2up = pool_target_is_down2up(spare_tgt); /* * Mark the shard as 'rebuilding' so that read will skip this shard. * f_shard->fs_down2up is the case of delay_rebuild exclude+reint. */ if (f_shard->fs_status == PO_COMP_ST_DOWN || - f_shard->fs_status == PO_COMP_ST_DRAIN || - f_shard->fs_down2up || pool_target_down(spare_tgt)) + f_shard->fs_status == PO_COMP_ST_DRAIN || f_shard->fs_down2up || + pool_target_is_down(spare_tgt)) l_shard->po_rebuilding = 1; + + if (f_shard->fs_down2up && gen_mode != PRE_REBUILD) + l_shard->po_reintegrating = 1; + } else { l_shard->po_shard = -1; l_shard->po_target = -1; diff --git a/src/rebuild/srv.c b/src/rebuild/srv.c index 91185bb5cc3..523c5069db8 100644 --- a/src/rebuild/srv.c +++ b/src/rebuild/srv.c @@ -2047,7 +2047,7 @@ rebuild_task_ult(void *arg) uint32_t map_dist_ver = 0; struct rebuild_global_pool_tracker *rgt = NULL; d_rank_t myrank; - uint64_t cur_ts = 0; + uint64_t cur_ts = 0; uint32_t obj_reclaim_ver = 0; int rc; diff --git a/src/tests/ftest/nvme/pool_extend.yaml b/src/tests/ftest/nvme/pool_extend.yaml index 62744c5d5e5..de6e8620f67 100644 --- a/src/tests/ftest/nvme/pool_extend.yaml +++ b/src/tests/ftest/nvme/pool_extend.yaml @@ -23,11 +23,13 @@ server_config: nr_xs_helpers: 1 log_file: daos_server0.log storage: auto + log_mask: DEBUG,MEM=ERR,RPC=ERR,BULK=ERR,HG=ERR,GRP=ERR 1: pinned_numa_node: 1 nr_xs_helpers: 1 log_file: daos_server1.log storage: auto + log_mask: DEBUG,MEM=ERR,RPC=ERR,BULK=ERR,HG=ERR,GRP=ERR pool: svcn: 4 diff --git a/src/tests/ftest/util/ior_test_base.py b/src/tests/ftest/util/ior_test_base.py index 0cf7929ddd9..9f912e52f6b 100644 --- a/src/tests/ftest/util/ior_test_base.py +++ b/src/tests/ftest/util/ior_test_base.py @@ -228,6 +228,9 @@ def run_ior(self, manager, processes, intercept=None, display_space=True, env["HDF5_VOL_CONNECTOR"] = "daos" env["HDF5_PLUGIN_PATH"] = str(plugin_path) manager.working_dir.value = self.dfuse.mount_dir.value + env['D_LOG_MASK'] = 'DEBUG' + env['D_LOG_FLUSH'] = 'DEBUG' + env['DD_MASK'] = 'all' manager.assign_hosts( self.hostlist_clients, self.workdir, self.hostfile_clients_slots) # Pass only processes or ppn to be compatible with previous behavior