From 63cb471a447fcbca5c12ee100adfd68d84f2c40d Mon Sep 17 00:00:00 2001 From: Niu Yawei Date: Wed, 4 Feb 2026 08:44:15 -0500 Subject: [PATCH 01/21] DAOS-18531 vos: setup ts_set in vos_obj_incarnate() Replace the vos_obj_hold() call before vos_obj_incarnate() with vos_obj_acquire() to ensure the ts_set setup is fully done within transaction, that can make code cleaner and avoid following race: - Updater A called vos_obj_hold(), it failed to find the OI and mark the obj entry in ts_set as negative. - Updater A yield. - Concurrent updater B created OI and setup obj->obj_df. - Updater A resumed to call vos_obj_incarnate(), it found that the obj->obj_df is non-NULL so skipped OI creation. - The ts_set for updater A is now in an inconsistent state, it's negative but without 'se_create_idx' set. Signed-off-by: Niu Yawei --- src/vos/vos_io.c | 36 ++++++---------------------- src/vos/vos_obj.c | 5 ++-- src/vos/vos_obj_cache.c | 53 ++++++++++++++++++++++++++--------------- 3 files changed, 43 insertions(+), 51 deletions(-) diff --git a/src/vos/vos_io.c b/src/vos/vos_io.c index 4d105b91412..e2bcad16dc3 100644 --- a/src/vos/vos_io.c +++ b/src/vos/vos_io.c @@ -37,9 +37,7 @@ struct vos_io_context { daos_iod_t *ic_iods; struct dcs_iod_csums *ic_iod_csums; /** reference on the object */ - struct vos_object *ic_obj; - /** used only for md-on-ssd phase2 evictable pool */ - struct vos_object *ic_pinned_obj; + struct vos_object *ic_obj; /** BIO descriptor, has ic_iod_nr SGLs */ struct bio_desc *ic_biod; struct vos_ts_set *ic_ts_set; @@ -603,9 +601,6 @@ vos_ioc_destroy(struct vos_io_context *ioc, bool evict) if (ioc->ic_obj) vos_obj_release(ioc->ic_obj, 0, evict); - if (ioc->ic_pinned_obj) - vos_obj_release(ioc->ic_pinned_obj, 0, evict); - vos_ioc_reserve_fini(ioc); vos_ilog_fetch_finish(&ioc->ic_dkey_info); vos_ilog_fetch_finish(&ioc->ic_akey_info); @@ -2210,7 +2205,7 @@ reserve_space(struct vos_io_context *ioc, uint16_t media, daos_size_t size, if (media == DAOS_MEDIA_SCM) { umem_off_t umoff; - umoff = vos_reserve_scm(ioc->ic_cont, ioc->ic_rsrvd_scm, size, ioc->ic_pinned_obj); + umoff = vos_reserve_scm(ioc->ic_cont, ioc->ic_rsrvd_scm, size, ioc->ic_obj); if (!UMOFF_IS_NULL(umoff)) { ioc->ic_umoffs[ioc->ic_umoffs_cnt] = umoff; ioc->ic_umoffs_cnt++; @@ -2572,7 +2567,8 @@ vos_update_end(daos_handle_t ioh, uint32_t pm_ver, daos_key_t *dkey, int err, if (err != 0) goto abort; - if (ioc->ic_pinned_obj != NULL && unlikely(vos_obj_is_evicted(ioc->ic_pinned_obj))) { + D_ASSERT(ioc->ic_obj != NULL); + if (unlikely(vos_obj_is_evicted(ioc->ic_obj))) { D_DEBUG(DB_IO, "Obj " DF_UOID " is evicted during update, need to restart TX.\n", DP_UOID(ioc->ic_oid)); @@ -2582,14 +2578,6 @@ vos_update_end(daos_handle_t ioh, uint32_t pm_ver, daos_key_t *dkey, int err, err = vos_ts_set_add(ioc->ic_ts_set, ioc->ic_cont->vc_ts_idx, NULL, 0); D_ASSERT(err == 0); - err = vos_obj_hold(ioc->ic_cont, ioc->ic_oid, &ioc->ic_epr, ioc->ic_bound, - flags, DAOS_INTENT_UPDATE, &ioc->ic_obj, ioc->ic_ts_set); - if (err != 0) - goto abort; - - if (ioc->ic_pinned_obj != NULL) - D_ASSERT(ioc->ic_pinned_obj == ioc->ic_obj); - err = vos_tx_begin(dth, umem, ioc->ic_cont->vc_pool->vp_sysdb, ioc->ic_obj); if (err != 0) goto abort; @@ -2767,19 +2755,9 @@ vos_update_begin(daos_handle_t coh, daos_unit_oid_t oid, daos_epoch_t epoch, goto error; } - /* Hold the object for the evictable md-on-ssd phase2 pool */ - if (vos_pool_is_evictable(vos_cont2pool(ioc->ic_cont))) { - /* - * FIXME: - * The same object will be referenced by vos_obj_acquire() and vos_obj_hold() - * (in vos_update_end()) twice, this is for avoiding the complication of adding - * object ilog to ts_set. We'll re-org vos_obj_hold() in the future to make the - * code look cleaner. - */ - rc = vos_obj_acquire(ioc->ic_cont, ioc->ic_oid, true, &ioc->ic_pinned_obj); - if (rc != 0) - goto error; - } + rc = vos_obj_acquire(ioc->ic_cont, ioc->ic_oid, true, &ioc->ic_obj); + if (rc != 0) + goto error; rc = dkey_update_begin(ioc); if (rc != 0) { diff --git a/src/vos/vos_obj.c b/src/vos/vos_obj.c index 117cf8baaab..210e71608cd 100644 --- a/src/vos/vos_obj.c +++ b/src/vos/vos_obj.c @@ -490,7 +490,7 @@ vos_obj_punch(daos_handle_t coh, daos_unit_oid_t oid, daos_epoch_t epoch, hold_flags = (flags & VOS_OF_COND_PUNCH) ? 0 : VOS_OBJ_CREATE; hold_flags |= VOS_OBJ_VISIBLE; - rc = vos_obj_hold(cont, oid, &epr, bound, hold_flags, DAOS_INTENT_PUNCH, &obj, ts_set); + rc = vos_obj_acquire(cont, oid, true, &obj); if (rc != 0) goto reset; @@ -842,8 +842,7 @@ vos_obj_mark_corruption(daos_handle_t coh, daos_epoch_t epoch, uint32_t pm_ver, } restart: - rc = vos_obj_hold(cont, oid, &epr, epoch, VOS_OBJ_VISIBLE | VOS_OBJ_CREATE, - DAOS_INTENT_MARK, &obj, NULL); + rc = vos_obj_acquire(cont, oid, true, &obj); if (rc != 0) goto log; diff --git a/src/vos/vos_obj_cache.c b/src/vos/vos_obj_cache.c index ba1898e0f25..8d92094cefe 100644 --- a/src/vos/vos_obj_cache.c +++ b/src/vos/vos_obj_cache.c @@ -1,6 +1,6 @@ /** * (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 */ @@ -535,23 +535,36 @@ vos_obj_incarnate(struct vos_object *obj, daos_epoch_range_t *epr, daos_epoch_t D_ASSERT(intent == DAOS_INTENT_PUNCH || intent == DAOS_INTENT_UPDATE || intent == DAOS_INTENT_MARK); + if (check_discard(obj, flags)) + return -DER_UPDATE_AGAIN; + + /* Lookup OI table if the cached object is negative */ if (obj->obj_df == NULL) { - rc = vos_oi_alloc(cont, obj->obj_id, epr->epr_hi, &obj->obj_df, ts_set); - if (rc) { - DL_ERROR(rc, DF_CONT": Failed to allocate OI "DF_UOID".", - DP_CONT(cont->vc_pool->vp_id, cont->vc_id), - DP_UOID(obj->obj_id)); + obj->obj_sync_epoch = 0; + rc = vos_oi_find(cont, obj->obj_id, &obj->obj_df, ts_set); + if (rc == 0) { + obj->obj_sync_epoch = obj->obj_df->vo_sync; + } else if (rc == -DER_NONEXIST) { + rc = vos_oi_alloc(cont, obj->obj_id, epr->epr_hi, &obj->obj_df, ts_set); + if (rc) { + DL_ERROR(rc, DF_CONT ": Failed to allocate OI " DF_UOID ".", + DP_CONT(cont->vc_pool->vp_id, cont->vc_id), + DP_UOID(obj->obj_id)); + return rc; + } + D_ASSERT(obj->obj_df); + } else if (rc) { + DL_ERROR(rc, DF_CONT ": Failed to find OI " DF_UOID ".", + DP_CONT(cont->vc_pool->vp_id, cont->vc_id), DP_UOID(obj->obj_id)); return rc; } - D_ASSERT(obj->obj_df); - } else { + } else if (likely(intent != DAOS_INTENT_MARK)) { vos_ilog_ts_ignore(vos_obj2umm(obj), &obj->obj_df->vo_ilog); + rc = vos_ilog_ts_add(ts_set, &obj->obj_df->vo_ilog, &obj->obj_id, + sizeof(obj->obj_id)); + D_ASSERT(rc == 0); /* Non-zero only valid for akey */ } - /* Check again since it could yield since vos_obj_hold() */ - if (check_discard(obj, flags)) - return -DER_UPDATE_AGAIN; - /* Check the sync epoch */ if (intent != DAOS_INTENT_MARK && epr->epr_hi <= obj->obj_sync_epoch && vos_dth_get(obj->obj_cont->vc_pool->vp_sysdb) != NULL) { @@ -979,14 +992,16 @@ vos_obj_acquire(struct vos_container *cont, daos_unit_oid_t oid, bool pin, } } - if (!obj->obj_bkt_alloted) - obj_allot_bkt(cont->vc_pool, obj); + if (vos_pool_is_evictable(cont->vc_pool)) { + if (!obj->obj_bkt_alloted) + obj_allot_bkt(cont->vc_pool, obj); - if (pin) { - rc = obj_pin_bkt(cont->vc_pool, obj); - if (rc) { - obj_put(occ, obj, false); - return rc; + if (pin) { + rc = obj_pin_bkt(cont->vc_pool, obj); + if (rc) { + obj_put(occ, obj, false); + return rc; + } } } From fff694b4b6027ae846fbd1f4cb7ffec6eaeac903 Mon Sep 17 00:00:00 2001 From: Niu Yawei Date: Sat, 7 Feb 2026 02:02:48 -0500 Subject: [PATCH 02/21] DAOS-18531 vos: add comment for vos_obj_hold() Add comment for vos_obj_hold(). Signed-off-by: Niu Yawei --- src/vos/vos_obj_cache.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/vos/vos_obj_cache.c b/src/vos/vos_obj_cache.c index 8d92094cefe..c880dcfe919 100644 --- a/src/vos/vos_obj_cache.c +++ b/src/vos/vos_obj_cache.c @@ -623,6 +623,10 @@ vos_obj_incarnate(struct vos_object *obj, daos_epoch_range_t *epr, daos_epoch_t return rc; } +/* + * The legacy function is being phased out. It is currently used to hold an object for fetch and + * iteration operations. Update and punch operations use vos_obj_acquire() to hold an object. + */ int vos_obj_hold(struct vos_container *cont, daos_unit_oid_t oid, daos_epoch_range_t *epr, daos_epoch_t bound, uint64_t flags, uint32_t intent, struct vos_object **obj_p, From 08a3d6682b6c3c288b76f5055dfb9da733913871 Mon Sep 17 00:00:00 2001 From: Jan Michalski Date: Wed, 11 Feb 2026 14:17:37 +0000 Subject: [PATCH 03/21] DAOS-18582 test: repro Test-tag: test_verify_dtx_metrics Skip-unit-tests: true Skip-func-test-vm: true Skip-test-el-8.6-rpms: true Skip-fault-injection-test: true Signed-off-by: Jan Michalski From 5ad0a6c087be38e520ab0b1be59ce9d5f097bd98 Mon Sep 17 00:00:00 2001 From: Jan Michalski Date: Wed, 11 Feb 2026 14:40:50 +0000 Subject: [PATCH 04/21] DAOS-18582 test: prune Jekinsfile + run test on both medium and large Test-tag: test_verify_dtx_metrics Signed-off-by: Jan Michalski --- Jenkinsfile | 676 ----------------------------- src/tests/ftest/pool/verify_dtx.py | 2 +- 2 files changed, 1 insertion(+), 677 deletions(-) diff --git a/Jenkinsfile b/Jenkinsfile index e36de3fb189..8c8ea3b328d 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -475,49 +475,6 @@ pipeline { } } // parallel } // stage('Check PR') - stage('Cancel Previous Builds') { - when { - beforeAgent true - expression { !paramsValue('CI_CANCEL_PREV_BUILD_SKIP', false) && !skipStage() } - } - steps { - cancelPreviousBuilds() - } - } - stage('Pre-build') { - when { - beforeAgent true - expression { !skipStage() } - } - parallel { - stage('Python Bandit check') { - when { - beforeAgent true - expression { !skipStage() } - } - agent { - dockerfile { - filename 'utils/docker/Dockerfile.code_scanning' - label 'docker_runner' - additionalBuildArgs dockerBuildArgs(add_repos: false) + - ' --build-arg FVERSION=37' - } - } - steps { - job_step_update(pythonBanditCheck()) - } - post { - always { - // Bandit will have empty results if it does not - // find any issues. - junit testResults: 'bandit.xml', - allowEmptyResults: true - job_status_update() - } - } - } // stage('Python Bandit check') - } - } stage('Build') { /* Don't use failFast here as whilst it avoids using extra resources * and gives faster results for PRs it's also on for master where we @@ -581,562 +538,8 @@ pipeline { } } } - stage('Build on EL 9.6') { - when { - beforeAgent true - expression { !skip_build_stage('el9') } - } - agent { - dockerfile { - filename 'utils/docker/Dockerfile.el.9' - label 'docker_runner' - additionalBuildArgs dockerBuildArgs(repo_type: 'stable', - deps_build: false, - parallel_build: true) + - " -t ${sanitized_JOB_NAME()}-el9 " + - ' --build-arg DAOS_PACKAGES_BUILD=no ' + - ' --build-arg DAOS_KEEP_SRC=yes ' + - ' --build-arg REPOS="' + prRepos() + '"' + - ' --build-arg POINT_RELEASE=.6 ' - } - } - steps { - script { - sh label: 'Install RPMs', - script: './ci/rpm/install_deps.sh el9 "' + env.DAOS_RELVAL + '"' - sh label: 'Build deps', - script: './ci/rpm/build_deps.sh' - job_step_update( - sconsBuild(parallel_build: true, - stash_files: 'ci/test_files_to_stash.txt', - build_deps: 'no', - stash_opt: true, - scons_args: sconsArgs() + - ' PREFIX=/opt/daos TARGET_TYPE=release')) - sh label: 'Generate RPMs', - script: './ci/rpm/gen_rpms.sh el9 "' + env.DAOS_RELVAL + '"' - } - } - post { - success { - uploadNewRPMs('el9', 'success') - } - unsuccessful { - sh '''if [ -f config.log ]; then - mv config.log config.log-el9-gcc - fi''' - archiveArtifacts artifacts: 'config.log-el9-gcc', - allowEmptyArchive: true - } - cleanup { - uploadNewRPMs('el9', 'cleanup') - job_status_update() - } - } - } - stage('Build on Leap 15.5') { - when { - beforeAgent true - expression { !skip_build_stage('leap15') } - } - agent { - dockerfile { - filename 'utils/docker/Dockerfile.leap.15' - label 'docker_runner' - additionalBuildArgs dockerBuildArgs(repo_type: 'stable', - parallel_build: true, - deps_build: false) + - ' --build-arg DAOS_PACKAGES_BUILD=no ' + - ' --build-arg DAOS_KEEP_SRC=yes ' + - " -t ${sanitized_JOB_NAME()}-leap15" + - ' --build-arg POINT_RELEASE=.5 ' - } - } - steps { - script { - sh label: 'Install RPMs', - script: './ci/rpm/install_deps.sh suse.lp155 "' + env.DAOS_RELVAL + '"' - sh label: 'Build deps', - script: './ci/rpm/build_deps.sh' - job_step_update( - sconsBuild(parallel_build: true, - scons_args: sconsFaultsArgs() + - ' PREFIX=/opt/daos TARGET_TYPE=release', - build_deps: 'yes')) - sh label: 'Generate RPMs', - script: './ci/rpm/gen_rpms.sh suse.lp155 "' + env.DAOS_RELVAL + '"' - } - } - post { - success { - uploadNewRPMs('leap15', 'success') - } - unsuccessful { - sh '''if [ -f config.log ]; then - mv config.log config.log-leap15-gcc - fi''' - archiveArtifacts artifacts: 'config.log-leap15-gcc', - allowEmptyArchive: true - } - cleanup { - uploadNewRPMs('leap15', 'cleanup') - job_status_update() - } - } - } - stage('Build on Leap 15.5 with Intel-C and TARGET_PREFIX') { - when { - beforeAgent true - expression { !skip_build_stage('leap15', 'icc') } - } - agent { - dockerfile { - filename 'utils/docker/Dockerfile.leap.15' - label 'docker_runner' - additionalBuildArgs dockerBuildArgs(repo_type: 'stable', - parallel_build: true, - deps_build: true) + - " -t ${sanitized_JOB_NAME()}-leap15-icc" + - ' --build-arg DAOS_PACKAGES_BUILD=no ' + - ' --build-arg COMPILER=icc' + - ' --build-arg POINT_RELEASE=.5 ' - } - } - steps { - job_step_update( - sconsBuild(parallel_build: true, - scons_args: sconsFaultsArgs() + - ' PREFIX=/opt/daos TARGET_TYPE=release', - build_deps: 'no')) - } - post { - unsuccessful { - sh '''if [ -f config.log ]; then - mv config.log config.log-leap15-intelc - fi''' - archiveArtifacts artifacts: 'config.log-leap15-intelc', - allowEmptyArchive: true - } - cleanup { - job_status_update() - } - } - } - } - } - stage('Unit Tests') { - when { - beforeAgent true - expression { !skipStage() } - } - parallel { - stage('Unit Test on EL 8.8') { - when { - beforeAgent true - expression { !skipStage() } - } - agent { - label cachedCommitPragma(pragma: 'VM1-label', def_val: params.CI_UNIT_VM1_LABEL) - } - steps { - job_step_update( - unitTest(timeout_time: 60, - unstash_opt: true, - inst_repos: daosRepos(), - inst_rpms: unitPackages())) - } - post { - always { - unitTestPost artifacts: ['unit_test_logs/'] - job_status_update() - } - } - } - stage('Unit Test bdev on EL 8.8') { - when { - beforeAgent true - expression { !skipStage() } - } - agent { - label params.CI_UNIT_VM1_NVME_LABEL - } - steps { - job_step_update( - unitTest(timeout_time: 60, - unstash_opt: true, - inst_repos: daosRepos(), - inst_rpms: unitPackages())) - } - post { - always { - unitTestPost artifacts: ['unit_test_bdev_logs/'] - job_status_update() - } - } - } - stage('NLT on EL 8.8') { - when { - beforeAgent true - expression { params.CI_NLT_TEST && !skipStage() } - } - agent { - label params.CI_NLT_1_LABEL - } - steps { - job_step_update( - unitTest(timeout_time: 60, - inst_repos: daosRepos(), - test_script: 'ci/unit/test_nlt.sh', - unstash_opt: true, - unstash_tests: false, - inst_rpms: unitPackages())) - // recordCoverage(tools: [[parser: 'COBERTURA', pattern:'nltir.xml']], - // skipPublishingChecks: true, - // id: 'tlc', name: 'Fault Injection Interim Report') - stash(name:'nltr', includes:'nltr.json', allowEmpty: true) - } - post { - always { - unitTestPost artifacts: ['nlt_logs/'], - testResults: 'nlt-junit.xml', - always_script: 'ci/unit/test_nlt_post.sh', - valgrind_stash: 'el8-gcc-nlt-memcheck' - recordIssues enabledForFailure: true, - failOnError: false, - ignoreQualityGate: true, - name: 'NLT server leaks', - qualityGates: [[threshold: 1, type: 'TOTAL', unstable: true]], - tool: issues(pattern: 'nlt-server-leaks.json', - name: 'NLT server results', - id: 'NLT_server'), - scm: 'daos-stack/daos' - job_status_update() - } - } - } - stage('Unit Test with memcheck on EL 8.8') { - when { - beforeAgent true - expression { !skipStage() } - } - agent { - label cachedCommitPragma(pragma: 'VM1-label', def_val: params.CI_UNIT_VM1_LABEL) - } - steps { - job_step_update( - unitTest(timeout_time: 160, - unstash_opt: true, - ignore_failure: true, - inst_repos: daosRepos(), - inst_rpms: unitPackages())) - } - post { - always { - unitTestPost artifacts: ['unit_test_memcheck_logs.tar.gz', - 'unit_test_memcheck_logs/**/*.log'], - valgrind_stash: 'el8-gcc-unit-memcheck' - job_status_update() - } - } - } // stage('Unit Test with memcheck on EL 8.8') - stage('Unit Test bdev with memcheck on EL 8.8') { - when { - beforeAgent true - expression { !skipStage() } - } - agent { - label params.CI_UNIT_VM1_NVME_LABEL - } - steps { - job_step_update( - unitTest(timeout_time: 180, - unstash_opt: true, - ignore_failure: true, - inst_repos: daosRepos(), - inst_rpms: unitPackages())) - } - post { - always { - unitTestPost artifacts: ['unit_test_memcheck_bdev_logs.tar.gz', - 'unit_test_memcheck_bdev_logs/**/*.log'], - valgrind_stash: 'el8-gcc-unit-memcheck-bdev' - job_status_update() - } - } - } // stage('Unit Test bdev with memcheck on EL 8') } } - stage('Test') { - when { - beforeAgent true - //expression { !paramsValue('CI_FUNCTIONAL_TEST_SKIP', false) && !skipStage() } - // Above not working, always skipping functional VM tests. - expression { !paramsValue('CI_FUNCTIONAL_TEST_SKIP', false) } - } - parallel { - stage('Functional on EL 8.8 with Valgrind') { - when { - beforeAgent true - expression { !skipStage() } - } - agent { - label vm9_label('EL8') - } - steps { - job_step_update( - functionalTest( - inst_repos: daosRepos(), - inst_rpms: functionalPackages(1, next_version(), 'tests-internal') + ' mercury-libfabric', - test_function: 'runTestFunctionalV2')) - } - post { - always { - functionalTestPostV2() - job_status_update() - } - } - } // stage('Functional on EL 8.8 with Valgrind') - stage('Functional on EL 8.8') { - when { - beforeAgent true - expression { !skipStage() } - } - agent { - label vm9_label('EL8') - } - steps { - job_step_update( - functionalTest( - inst_repos: daosRepos(), - inst_rpms: functionalPackages(1, next_version(), 'tests-internal') + ' mercury-libfabric', - test_function: 'runTestFunctionalV2')) - } - post { - always { - functionalTestPostV2() - job_status_update() - } - } - } // stage('Functional on EL 8.8') - stage('Functional on EL 9') { - when { - beforeAgent true - expression { !skipStage() } - } - agent { - label vm9_label('EL9') - } - steps { - job_step_update( - functionalTest( - inst_repos: daosRepos(), - inst_rpms: functionalPackages(1, next_version(), 'tests-internal') + ' mercury-libfabric', - test_function: 'runTestFunctionalV2')) - } - post { - always { - functionalTestPostV2() - job_status_update() - } - } - } // stage('Functional on EL 9') - stage('Functional on Leap 15.6') { - when { - beforeAgent true - expression { !skipStage() } - } - agent { - label vm9_label('Leap15') - } - steps { - job_step_update( - functionalTest( - inst_repos: daosRepos(), - inst_rpms: functionalPackages(1, next_version(), 'tests-internal') + ' mercury-libfabric', - test_function: 'runTestFunctionalV2', - image_version: 'leap15.6')) - } - post { - always { - functionalTestPostV2() - job_status_update() - } - } // post - } // stage('Functional on Leap 15.6') - stage('Functional on Ubuntu 20.04') { - when { - beforeAgent true - expression { !skipStage() } - } - agent { - label vm9_label('Ubuntu') - } - steps { - job_step_update( - functionalTest( - inst_repos: daosRepos(), - inst_rpms: functionalPackages(1, next_version(), 'tests-internal') + ' mercury-libfabric', - test_function: 'runTestFunctionalV2')) - } - post { - always { - functionalTestPostV2() - job_status_update() - } - } // post - } // stage('Functional on Ubuntu 20.04') - stage('Fault injection testing on EL 8.8') { - when { - beforeAgent true - expression { !skipStage() } - } - agent { - dockerfile { - filename 'utils/docker/Dockerfile.el.8' - label 'docker_runner' - additionalBuildArgs dockerBuildArgs(repo_type: 'stable', - parallel_build: true, - deps_build: true) - args '--tmpfs /mnt/daos_0' - } - } - steps { - job_step_update( - sconsBuild(parallel_build: true, - scons_args: 'PREFIX=/opt/daos TARGET_TYPE=release BUILD_TYPE=debug', - build_deps: 'no')) - job_step_update(nlt_test()) - // recordCoverage(tools: [[parser: 'COBERTURA', pattern:'nltr.xml']], - // skipPublishingChecks: true, - // id: 'fir', name: 'Fault Injection Report') - } - post { - always { - discoverGitReferenceBuild referenceJob: 'daos-stack/daos/master', - scm: 'daos-stack/daos', - requiredResult: hudson.model.Result.UNSTABLE - recordIssues enabledForFailure: true, - /* ignore warning/errors from PMDK logging system */ - filters: [excludeFile('pmdk/.+')], - failOnError: false, - ignoreQualityGate: true, - qualityGates: [[threshold: 1, type: 'TOTAL_ERROR'], - [threshold: 1, type: 'TOTAL_HIGH'], - [threshold: 1, type: 'NEW_NORMAL', unstable: true], - [threshold: 1, type: 'NEW_LOW', unstable: true]], - tools: [issues(pattern: 'nlt-errors.json', - name: 'Fault injection issues', - id: 'Fault_Injection'), - issues(pattern: 'nlt-client-leaks.json', - name: 'Fault injection leaks', - id: 'NLT_client')], - scm: 'daos-stack/daos' - junit testResults: 'nlt-junit.xml' - stash name: 'fault-inject-valgrind', - includes: '*.memcheck.xml', - allowEmpty: true - archiveArtifacts artifacts: 'nlt_logs/el8.fault-injection/', - allowEmptyArchive: true - job_status_update() - } - } - } // stage('Fault injection testing on EL 8.8') - stage('Test RPMs on EL 8.6') { - when { - beforeAgent true - expression { params.CI_TEST_EL8_RPMs && !skipStage() } - } - agent { - label params.CI_UNIT_VM1_LABEL - } - steps { - job_step_update( - testRpm(inst_repos: daosRepos(), - daos_pkg_version: daosPackagesVersion(next_version()), - inst_rpms: 'mercury-libfabric') - ) - } - post { - always { - rpm_test_post(env.STAGE_NAME, env.NODELIST) - } - } - } // stage('Test RPMs on EL 8.6') - stage('Test RPMs on Leap 15.5') { - when { - beforeAgent true - expression { params.CI_TEST_LEAP15_RPMs && !skipStage() } - } - agent { - label params.CI_UNIT_VM1_LABEL - } - steps { - /* neither of these work as FTest strips the first node - out of the pool requiring 2 node clusters at minimum - * additionally for this use-case, can't override - ftest_arg with this :-( - script { - 'Test RPMs on Leap 15.5': getFunctionalTestStage( - name: 'Test RPMs on Leap 15.5', - pragma_suffix: '', - label: params.CI_UNIT_VM1_LABEL, - next_version: next_version(), - stage_tags: '', - default_tags: 'test_daos_management', - nvme: 'auto', - run_if_pr: true, - run_if_landing: true, - job_status: job_status_internal - ) - } - job_step_update( - functionalTest( - test_tag: 'test_daos_management', - ftest_arg: '--yaml_extension single_host', - inst_repos: daosRepos(), - inst_rpms: functionalPackages(1, next_version(), 'tests-internal'), - test_function: 'runTestFunctionalV2')) - } - post { - always { - functionalTestPostV2() - job_status_update() - } - } */ - job_step_update( - testRpm(inst_repos: daosRepos(), - daos_pkg_version: daosPackagesVersion(next_version()), - inst_rpms: 'mercury-libfabric') - ) - } - post { - always { - rpm_test_post(env.STAGE_NAME, env.NODELIST) - } - } - } // stage('Test RPMs on Leap 15.5') - } // parallel - } // stage('Test') - stage('Test Storage Prep on EL 8.8') { - when { - beforeAgent true - expression { params.CI_STORAGE_PREP_LABEL != '' } - } - agent { - label params.CI_STORAGE_PREP_LABEL - } - steps { - job_step_update( - storagePrepTest( - inst_repos: daosRepos(), - inst_rpms: functionalPackages(1, next_version(), 'tests-internal'))) - } - post { - cleanup { - job_status_update() - } - } - } // stage('Test Storage Prep') stage('Test Hardware') { when { beforeAgent true @@ -1145,18 +548,6 @@ pipeline { steps { script { parallel( - 'Functional Hardware Medium': getFunctionalTestStage( - name: 'Functional Hardware Medium', - pragma_suffix: '-hw-medium', - label: params.FUNCTIONAL_HARDWARE_MEDIUM_LABEL, - next_version: next_version(), - stage_tags: 'hw,medium,-provider', - default_tags: startedByTimer() ? 'pr daily_regression' : 'pr', - nvme: 'auto', - run_if_pr: false, - run_if_landing: false, - job_status: job_status_internal - ), 'Functional Hardware Medium MD on SSD': getFunctionalTestStage( name: 'Functional Hardware Medium MD on SSD', pragma_suffix: '-hw-medium-md-on-ssd', @@ -1169,70 +560,6 @@ pipeline { run_if_landing: false, job_status: job_status_internal ), - 'Functional Hardware Medium VMD': getFunctionalTestStage( - name: 'Functional Hardware Medium VMD', - pragma_suffix: '-hw-medium-vmd', - label: params.FUNCTIONAL_HARDWARE_MEDIUM_VMD_LABEL, - next_version: next_version(), - stage_tags: 'hw_vmd,medium', - /* groovylint-disable-next-line UnnecessaryGetter */ - default_tags: startedByTimer() ? 'pr daily_regression' : 'pr', - nvme: 'auto', - run_if_pr: false, - run_if_landing: false, - job_status: job_status_internal - ), - 'Functional Hardware Medium Verbs Provider': getFunctionalTestStage( - name: 'Functional Hardware Medium Verbs Provider', - pragma_suffix: '-hw-medium-verbs-provider', - label: params.FUNCTIONAL_HARDWARE_MEDIUM_VERBS_PROVIDER_LABEL, - next_version: next_version(), - stage_tags: 'hw,medium,provider', - default_tags: startedByTimer() ? 'pr daily_regression' : 'pr', - default_nvme: 'auto', - provider: 'ofi+verbs;ofi_rxm', - run_if_pr: false, - run_if_landing: false, - job_status: job_status_internal - ), - 'Functional Hardware Medium Verbs Provider MD on SSD': getFunctionalTestStage( - name: 'Functional Hardware Medium Verbs Provider MD on SSD', - pragma_suffix: '-hw-medium-verbs-provider-md-on-ssd', - label: params.FUNCTIONAL_HARDWARE_MEDIUM_VERBS_PROVIDER_LABEL, - next_version: next_version(), - stage_tags: 'hw,medium,provider', - default_tags: startedByTimer() ? 'pr daily_regression' : 'pr', - default_nvme: 'auto_md_on_ssd', - provider: 'ofi+verbs;ofi_rxm', - run_if_pr: true, - run_if_landing: false, - job_status: job_status_internal - ), - 'Functional Hardware Medium UCX Provider': getFunctionalTestStage( - name: 'Functional Hardware Medium UCX Provider', - pragma_suffix: '-hw-medium-ucx-provider', - label: params.FUNCTIONAL_HARDWARE_MEDIUM_UCX_PROVIDER_LABEL, - next_version: next_version(), - stage_tags: 'hw,medium,provider', - default_tags: startedByTimer() ? 'pr daily_regression' : 'pr', - default_nvme: 'auto', - provider: cachedCommitPragma('Test-provider-ucx', 'ucx+ud_x'), - run_if_pr: false, - run_if_landing: false, - job_status: job_status_internal - ), - 'Functional Hardware Large': getFunctionalTestStage( - name: 'Functional Hardware Large', - pragma_suffix: '-hw-large', - label: params.FUNCTIONAL_HARDWARE_LARGE_LABEL, - next_version: next_version(), - stage_tags: 'hw,large', - default_tags: startedByTimer() ? 'pr daily_regression' : 'pr', - default_nvme: 'auto', - run_if_pr: false, - run_if_landing: false, - job_status: job_status_internal - ), 'Functional Hardware Large MD on SSD': getFunctionalTestStage( name: 'Functional Hardware Large MD on SSD', pragma_suffix: '-hw-large-md-on-ssd', @@ -1252,9 +579,6 @@ pipeline { } // stages post { always { - valgrindReportPublish valgrind_stashes: ['el8-gcc-nlt-memcheck', - 'el8-gcc-unit-memcheck', - 'fault-inject-valgrind'] job_status_update('final_status') jobStatusWrite(job_status_internal) } diff --git a/src/tests/ftest/pool/verify_dtx.py b/src/tests/ftest/pool/verify_dtx.py index 869d0c42a27..200199ecd9e 100644 --- a/src/tests/ftest/pool/verify_dtx.py +++ b/src/tests/ftest/pool/verify_dtx.py @@ -28,7 +28,7 @@ def test_verify_dtx_metrics(self): 5. Verify DTX metrics :avocado: tags=all,full_regression - :avocado: tags=hw,large + :avocado: tags=hw :avocado: tags=pool :avocado: tags=VerifyDTXMetrics,test_verify_dtx_metrics """ From db594dc0f9b6023b896962e810133bcbc9e328ac Mon Sep 17 00:00:00 2001 From: Jan Michalski Date: Wed, 11 Feb 2026 23:51:19 +0000 Subject: [PATCH 05/21] DAOS-18582 test: run test on both medium and large (fix) Test-tag: test_verify_dtx_metrics Signed-off-by: Jan Michalski --- src/tests/ftest/pool/verify_dtx.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/tests/ftest/pool/verify_dtx.py b/src/tests/ftest/pool/verify_dtx.py index 200199ecd9e..1861ecb6861 100644 --- a/src/tests/ftest/pool/verify_dtx.py +++ b/src/tests/ftest/pool/verify_dtx.py @@ -28,7 +28,8 @@ def test_verify_dtx_metrics(self): 5. Verify DTX metrics :avocado: tags=all,full_regression - :avocado: tags=hw + :avocado: tags=hw,large + :avocado: tags=hw,medium :avocado: tags=pool :avocado: tags=VerifyDTXMetrics,test_verify_dtx_metrics """ From a35ecd122d72d0960f80a7da98833bc48d833497 Mon Sep 17 00:00:00 2001 From: Jan Michalski Date: Thu, 12 Feb 2026 08:17:37 +0000 Subject: [PATCH 06/21] DAOS-18582 test: run on vm as well + add Jenkins stage Test-tag: test_verify_dtx_metrics Signed-off-by: Jan Michalski --- Jenkinsfile | 26 ++++++++++++++++++++++++++ src/tests/ftest/pool/verify_dtx.py | 1 + 2 files changed, 27 insertions(+) diff --git a/Jenkinsfile b/Jenkinsfile index 8c8ea3b328d..459d86e82fc 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -540,6 +540,32 @@ pipeline { } } } + stage('Test') { + parallel { + stage('Functional on EL 8.8') { + when { + beforeAgent true + expression { !skipStage() } + } + agent { + label vm9_label('EL8') + } + steps { + job_step_update( + functionalTest( + inst_repos: daosRepos(), + inst_rpms: functionalPackages(1, next_version(), 'tests-internal') + ' mercury-libfabric', + test_function: 'runTestFunctionalV2')) + } + post { + always { + functionalTestPostV2() + job_status_update() + } + } + } // stage('Functional on EL 8.8') + } + } stage('Test Hardware') { when { beforeAgent true diff --git a/src/tests/ftest/pool/verify_dtx.py b/src/tests/ftest/pool/verify_dtx.py index 1861ecb6861..3d6bd16de2a 100644 --- a/src/tests/ftest/pool/verify_dtx.py +++ b/src/tests/ftest/pool/verify_dtx.py @@ -30,6 +30,7 @@ def test_verify_dtx_metrics(self): :avocado: tags=all,full_regression :avocado: tags=hw,large :avocado: tags=hw,medium + :avocado: tags=vm :avocado: tags=pool :avocado: tags=VerifyDTXMetrics,test_verify_dtx_metrics """ From 8b0f8d737d781ae5e06dc286b35fed828ba33db9 Mon Sep 17 00:00:00 2001 From: Jan Michalski Date: Thu, 12 Feb 2026 11:34:08 +0000 Subject: [PATCH 07/21] DAOS-18582 test: reduce system_ram_reserved 64GiB -> 8GiB Test-tag: test_verify_dtx_metrics Signed-off-by: Jan Michalski --- src/tests/ftest/pool/verify_dtx.yaml | 1 + 1 file changed, 1 insertion(+) diff --git a/src/tests/ftest/pool/verify_dtx.yaml b/src/tests/ftest/pool/verify_dtx.yaml index e0947402b6b..ebde5876240 100644 --- a/src/tests/ftest/pool/verify_dtx.yaml +++ b/src/tests/ftest/pool/verify_dtx.yaml @@ -21,6 +21,7 @@ server_config: nr_xs_helpers: 0 log_file: daos_server1.log storage: auto + system_ram_reserved: 8 pool: !mux default: From 877014f837d41a2f054455d5e9fc8379a814e634 Mon Sep 17 00:00:00 2001 From: Jan Michalski Date: Thu, 12 Feb 2026 12:13:19 +0000 Subject: [PATCH 08/21] DAOS-18582 test: further reduce system_ram_reserved 8GiB -> 1GiB Test-tag: test_verify_dtx_metrics Signed-off-by: Jan Michalski --- src/tests/ftest/pool/verify_dtx.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/tests/ftest/pool/verify_dtx.yaml b/src/tests/ftest/pool/verify_dtx.yaml index ebde5876240..be49149c871 100644 --- a/src/tests/ftest/pool/verify_dtx.yaml +++ b/src/tests/ftest/pool/verify_dtx.yaml @@ -21,7 +21,7 @@ server_config: nr_xs_helpers: 0 log_file: daos_server1.log storage: auto - system_ram_reserved: 8 + system_ram_reserved: 1 pool: !mux default: From bc482dfbe2f20dece2cca56d438403688614b6dc Mon Sep 17 00:00:00 2001 From: Jan Michalski Date: Thu, 12 Feb 2026 13:33:27 +0000 Subject: [PATCH 09/21] DAOS-18582 test: reduce number of servers and clients to 3 and 1 Test-tag: test_verify_dtx_metrics Signed-off-by: Jan Michalski --- src/tests/ftest/pool/verify_dtx.yaml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/tests/ftest/pool/verify_dtx.yaml b/src/tests/ftest/pool/verify_dtx.yaml index be49149c871..04f26416e8b 100644 --- a/src/tests/ftest/pool/verify_dtx.yaml +++ b/src/tests/ftest/pool/verify_dtx.yaml @@ -2,8 +2,8 @@ launch: !filter-only : /run/pool/default # yamllint disable-line rule:colons hosts: - test_servers: 5 - test_clients: 3 + test_servers: 3 + test_clients: 1 timeout: 600 From f281027797c5923bcca3de840c782af96f6d28d3 Mon Sep 17 00:00:00 2001 From: Jan Michalski Date: Thu, 12 Feb 2026 14:52:20 +0000 Subject: [PATCH 10/21] DAOS-18582 test: remove one engine Test-tag: test_verify_dtx_metrics Signed-off-by: Jan Michalski --- src/tests/ftest/pool/verify_dtx.yaml | 5 ----- 1 file changed, 5 deletions(-) diff --git a/src/tests/ftest/pool/verify_dtx.yaml b/src/tests/ftest/pool/verify_dtx.yaml index 04f26416e8b..87ab75b21f5 100644 --- a/src/tests/ftest/pool/verify_dtx.yaml +++ b/src/tests/ftest/pool/verify_dtx.yaml @@ -16,11 +16,6 @@ server_config: nr_xs_helpers: 0 log_file: daos_server0.log storage: auto - 1: - pinned_numa_node: 1 - nr_xs_helpers: 0 - log_file: daos_server1.log - storage: auto system_ram_reserved: 1 pool: !mux From 2a02e405987c3adb2dd6830ab3ba9127516605e2 Mon Sep 17 00:00:00 2001 From: Jan Michalski Date: Thu, 12 Feb 2026 15:21:55 +0000 Subject: [PATCH 11/21] DAOS-18582 test: engines_per_host: 2 -> 1 (fix) Test-tag: test_verify_dtx_metrics Signed-off-by: Jan Michalski --- src/tests/ftest/pool/verify_dtx.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/tests/ftest/pool/verify_dtx.yaml b/src/tests/ftest/pool/verify_dtx.yaml index 87ab75b21f5..afb830beb9a 100644 --- a/src/tests/ftest/pool/verify_dtx.yaml +++ b/src/tests/ftest/pool/verify_dtx.yaml @@ -9,7 +9,7 @@ timeout: 600 server_config: name: daos_server - engines_per_host: 2 + engines_per_host: 1 engines: 0: pinned_numa_node: 0 From 046647285f733990cb2ee68e364679f78d9f57be Mon Sep 17 00:00:00 2001 From: Jan Michalski Date: Thu, 12 Feb 2026 16:58:46 +0000 Subject: [PATCH 12/21] DAOS-18582 test: targets: 8 -> 4 Test-tag: test_verify_dtx_metrics Signed-off-by: Jan Michalski --- src/tests/ftest/pool/verify_dtx.yaml | 1 + 1 file changed, 1 insertion(+) diff --git a/src/tests/ftest/pool/verify_dtx.yaml b/src/tests/ftest/pool/verify_dtx.yaml index afb830beb9a..7646c9adbc8 100644 --- a/src/tests/ftest/pool/verify_dtx.yaml +++ b/src/tests/ftest/pool/verify_dtx.yaml @@ -12,6 +12,7 @@ server_config: engines_per_host: 1 engines: 0: + targets: 4 pinned_numa_node: 0 nr_xs_helpers: 0 log_file: daos_server0.log From 7d10195bd1a9f4b08d842a2831e72bb44ddf7eb8 Mon Sep 17 00:00:00 2001 From: Jan Michalski Date: Thu, 12 Feb 2026 17:50:37 +0000 Subject: [PATCH 13/21] DAOS-18582 test: size: 575G -> 4G Test-tag: test_verify_dtx_metrics Signed-off-by: Jan Michalski --- src/tests/ftest/pool/verify_dtx.yaml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/tests/ftest/pool/verify_dtx.yaml b/src/tests/ftest/pool/verify_dtx.yaml index 7646c9adbc8..439b1f2ab81 100644 --- a/src/tests/ftest/pool/verify_dtx.yaml +++ b/src/tests/ftest/pool/verify_dtx.yaml @@ -21,9 +21,9 @@ server_config: pool: !mux default: - size: 575G + size: 4G md_on_ssd_p2: - size: 575G + size: 4G mem_ratio: 25 container: From 524966aa673970efa86ad2add9e85c83977360d8 Mon Sep 17 00:00:00 2001 From: Jan Michalski Date: Thu, 12 Feb 2026 18:32:38 +0000 Subject: [PATCH 14/21] DAOS-18582 test: remove unsupported object classes too few servers Test-tag: test_verify_dtx_metrics Signed-off-by: Jan Michalski --- src/tests/ftest/pool/verify_dtx.yaml | 16 ---------------- 1 file changed, 16 deletions(-) diff --git a/src/tests/ftest/pool/verify_dtx.yaml b/src/tests/ftest/pool/verify_dtx.yaml index 439b1f2ab81..cb5f8a4788c 100644 --- a/src/tests/ftest/pool/verify_dtx.yaml +++ b/src/tests/ftest/pool/verify_dtx.yaml @@ -42,20 +42,4 @@ mdtest: object_classes: - "EC_2P1G1" - - "EC_2P1G8" - "EC_2P1GX" - - "EC_2P2G1" - - "EC_2P2G8" - - "EC_2P2GX" - - "EC_4P1G1" - - "EC_4P1G8" - - "EC_4P1GX" - - "EC_4P2G1" - - "EC_4P2G8" - - "EC_4P2GX" - - "EC_4P3G1" - - "EC_4P3G8" - - "EC_4P3GX" - - "EC_8P2G1" - - "EC_8P2G8" - - "EC_8P2GX" From c89f2732a35792f113735d8640110825511e8280 Mon Sep 17 00:00:00 2001 From: Jan Michalski Date: Fri, 13 Feb 2026 11:31:54 +0000 Subject: [PATCH 15/21] DAOS-18582 test: remove VM and Large Cluster Test-tag: test_verify_dtx_metrics Signed-off-by: Jan Michalski --- Jenkinsfile | 38 -------------------------------------- 1 file changed, 38 deletions(-) diff --git a/Jenkinsfile b/Jenkinsfile index 459d86e82fc..3bacd74e85e 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -540,32 +540,6 @@ pipeline { } } } - stage('Test') { - parallel { - stage('Functional on EL 8.8') { - when { - beforeAgent true - expression { !skipStage() } - } - agent { - label vm9_label('EL8') - } - steps { - job_step_update( - functionalTest( - inst_repos: daosRepos(), - inst_rpms: functionalPackages(1, next_version(), 'tests-internal') + ' mercury-libfabric', - test_function: 'runTestFunctionalV2')) - } - post { - always { - functionalTestPostV2() - job_status_update() - } - } - } // stage('Functional on EL 8.8') - } - } stage('Test Hardware') { when { beforeAgent true @@ -586,18 +560,6 @@ pipeline { run_if_landing: false, job_status: job_status_internal ), - 'Functional Hardware Large MD on SSD': getFunctionalTestStage( - name: 'Functional Hardware Large MD on SSD', - pragma_suffix: '-hw-large-md-on-ssd', - label: params.FUNCTIONAL_HARDWARE_LARGE_LABEL, - next_version: next_version(), - stage_tags: 'hw,large', - default_tags: startedByTimer() ? 'pr daily_regression' : 'pr', - default_nvme: 'auto_md_on_ssd', - run_if_pr: true, - run_if_landing: false, - job_status: job_status_internal - ), ) } } From 552a73c94419db90009c35e9e6f24f4ecd93cae5 Mon Sep 17 00:00:00 2001 From: Jan Michalski Date: Fri, 13 Feb 2026 11:33:15 +0000 Subject: [PATCH 16/21] Revert "DAOS-18582 test: remove unsupported object classes" This reverts commit 524966aa673970efa86ad2add9e85c83977360d8. --- src/tests/ftest/pool/verify_dtx.yaml | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/src/tests/ftest/pool/verify_dtx.yaml b/src/tests/ftest/pool/verify_dtx.yaml index cb5f8a4788c..439b1f2ab81 100644 --- a/src/tests/ftest/pool/verify_dtx.yaml +++ b/src/tests/ftest/pool/verify_dtx.yaml @@ -42,4 +42,20 @@ mdtest: object_classes: - "EC_2P1G1" + - "EC_2P1G8" - "EC_2P1GX" + - "EC_2P2G1" + - "EC_2P2G8" + - "EC_2P2GX" + - "EC_4P1G1" + - "EC_4P1G8" + - "EC_4P1GX" + - "EC_4P2G1" + - "EC_4P2G8" + - "EC_4P2GX" + - "EC_4P3G1" + - "EC_4P3G8" + - "EC_4P3GX" + - "EC_8P2G1" + - "EC_8P2G8" + - "EC_8P2GX" From d6abf6803ccc1749d3a17e963cb756e3da34d1b3 Mon Sep 17 00:00:00 2001 From: Jan Michalski Date: Fri, 13 Feb 2026 11:37:19 +0000 Subject: [PATCH 17/21] Revert "DAOS-18582 test: size: 575G -> 4G" This reverts commit 7d10195bd1a9f4b08d842a2831e72bb44ddf7eb8. --- src/tests/ftest/pool/verify_dtx.yaml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/tests/ftest/pool/verify_dtx.yaml b/src/tests/ftest/pool/verify_dtx.yaml index 439b1f2ab81..7646c9adbc8 100644 --- a/src/tests/ftest/pool/verify_dtx.yaml +++ b/src/tests/ftest/pool/verify_dtx.yaml @@ -21,9 +21,9 @@ server_config: pool: !mux default: - size: 4G + size: 575G md_on_ssd_p2: - size: 4G + size: 575G mem_ratio: 25 container: From c7176ba3adc803e26945041d46e26b9d88e02327 Mon Sep 17 00:00:00 2001 From: Jan Michalski Date: Fri, 13 Feb 2026 11:37:37 +0000 Subject: [PATCH 18/21] Revert "DAOS-18582 test: targets: 8 -> 4" This reverts commit 046647285f733990cb2ee68e364679f78d9f57be. --- src/tests/ftest/pool/verify_dtx.yaml | 1 - 1 file changed, 1 deletion(-) diff --git a/src/tests/ftest/pool/verify_dtx.yaml b/src/tests/ftest/pool/verify_dtx.yaml index 7646c9adbc8..afb830beb9a 100644 --- a/src/tests/ftest/pool/verify_dtx.yaml +++ b/src/tests/ftest/pool/verify_dtx.yaml @@ -12,7 +12,6 @@ server_config: engines_per_host: 1 engines: 0: - targets: 4 pinned_numa_node: 0 nr_xs_helpers: 0 log_file: daos_server0.log From d7a345f5eaee6784811663a1ff6b6fa56a5dafc9 Mon Sep 17 00:00:00 2001 From: Jan Michalski Date: Fri, 13 Feb 2026 11:38:13 +0000 Subject: [PATCH 19/21] Revert "DAOS-18582 test: engines_per_host: 2 -> 1 (fix)" This reverts commit 2a02e405987c3adb2dd6830ab3ba9127516605e2. --- src/tests/ftest/pool/verify_dtx.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/tests/ftest/pool/verify_dtx.yaml b/src/tests/ftest/pool/verify_dtx.yaml index afb830beb9a..87ab75b21f5 100644 --- a/src/tests/ftest/pool/verify_dtx.yaml +++ b/src/tests/ftest/pool/verify_dtx.yaml @@ -9,7 +9,7 @@ timeout: 600 server_config: name: daos_server - engines_per_host: 1 + engines_per_host: 2 engines: 0: pinned_numa_node: 0 From d6634d23eb2efe13beb3e4cbbc843bf750be7dca Mon Sep 17 00:00:00 2001 From: Jan Michalski Date: Fri, 13 Feb 2026 11:38:26 +0000 Subject: [PATCH 20/21] Revert "DAOS-18582 test: remove one engine" This reverts commit f281027797c5923bcca3de840c782af96f6d28d3. --- src/tests/ftest/pool/verify_dtx.yaml | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/tests/ftest/pool/verify_dtx.yaml b/src/tests/ftest/pool/verify_dtx.yaml index 87ab75b21f5..04f26416e8b 100644 --- a/src/tests/ftest/pool/verify_dtx.yaml +++ b/src/tests/ftest/pool/verify_dtx.yaml @@ -16,6 +16,11 @@ server_config: nr_xs_helpers: 0 log_file: daos_server0.log storage: auto + 1: + pinned_numa_node: 1 + nr_xs_helpers: 0 + log_file: daos_server1.log + storage: auto system_ram_reserved: 1 pool: !mux From 2eb778bf3e5f2458efa8dba3ab4429c1fc558fdb Mon Sep 17 00:00:00 2001 From: Jan Michalski Date: Fri, 13 Feb 2026 11:45:50 +0000 Subject: [PATCH 21/21] DAOS-18582 test: re-run Test-tag: test_verify_dtx_metrics Signed-off-by: Jan Michalski