Skip to content

Liang/b2 8 cp fio fix oct18 - #19312

Open
gnailzenh wants to merge 3 commits into
release/2.8from
liang/b2_8_cp_fio_fix_oct18
Open

gnailzenh wants to merge 3 commits into
release/2.8from
liang/b2_8_cp_fio_fix_oct18

Conversation

@gnailzenh

Copy link
Copy Markdown
Collaborator

Steps for the author:

  • Commit message follows the guidelines.
  • Appropriate Features or Test-tag pragmas were used.
  • Appropriate Functional Test Stages were run.
  • At least two positive code reviews including at least one code owner from each category referenced in the PR.
  • Testing is complete. If necessary, forced-landing label added and a reason added in a comment.

After all prior steps are complete:

  • Gatekeeper requested (daos-gatekeeper added as a reviewer).

Nasf-Fan and others added 3 commits October 18, 2026 06:51
1. In theory, it is possible that when exclude some engine, related
   ULT maybe trying to abort a DTX because of some failure happened
   during local modification (but related modification has succeeded
   on remote targets). Related DTX_ABORT RPC has been sent out but
   not been received or processed by related remote targets. Under
   such case, the DTX leader is switched because of related engine
   is exlcuded. And then DTX resync is triggered by new DTX leader
   who may regard such DTX as committable since all alive targets
   claim 'PREPARED'. Then the new DTX leader will make different
   decision that conflict with old DTX leader did. That may cause
   related DTX to be aborted on some targets but committed on the
   others, as to data inconsistency among related redundancy group.
   The new logic forbids to abort DTX from old DTX leader to avoid
   such inconsistency.

2. During DTX resync, the DTX CHECK RPC should not be sent to the
   target which UP status and co_in_ver is newer than related DTX
   version. Because related DTX is either non-exist or removed on
   the target being reintegrated.

3. Convert dtx_leader_begin() returned failure -DER_TX_RESTART as
   -DER_INPROGRESS to help client to properly handle related RPC.

Signed-off-by: Fan Yong <fan.yong@hpe.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Replicated-object migration enumerates a shard in batches and resumes
with the VOS anchors returned by the previous batch.  If the leader
returned an error (e.g. -DER_REBUILD_DELAY from the rebuild fence right
after a failure), migrate_obj_epoch() fell back to a random non-leader
replica for the next attempt, and after each successful batch it
restored DIOF_TO_LEADER, so one enumeration could hop between replicas.

The evtree recx anchor is the last visible extent of the shard that
produced it, and evt_iter_probe_find() positions by overlap.  Replicas
have differently-shaped visible extents (independent aggregation,
split/overwrite ordering), so re-probing an anchor on another replica
skips the extents up to the next boundary.  Those extents were never
listed, never migrated, and rebuild still reported success: the
rebuilt shard silently lacks committed data (zeroed 64K blocks seen by
fio verify in the field and by the REBUILD50 reproducer, runs 20-22).

Fix:
- obj_list_obj_cb() records the shard that served a non-EOF migration
  batch in dkey_anchor->da_shard.
- migrate_obj_epoch() pins all following batches to that shard with
  DIOF_TO_SPEC_SHARD instead of returning to the leader or picking
  another random replica, and keeps retrying in place on
  -DER_INPROGRESS once pinned.
- -DER_REBUILD_DELAY from the leader is retried on the leader (bounded)
  rather than immediately switching to a non-leader replica.

Signed-off-by: Xuezhao Liu <xuezhao.liu@hpe.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
- Captured recovery version is used consistently for CHECK and ABORT.
- Busy/error local statuses are preserved.
- Post-yield abort checks reject stale authority but allow equal/higher
  authority—including the regression fix.
- Collective local errors propagate, and sole-survivor recovery can commit.
- Forced cleanup and version-zero behavior remain intact.

Signed-off-by: Liang Zhen <gnailzenh@gmail.com>
@gnailzenh
gnailzenh requested review from a team as code owners October 18, 2026 00:06
@github-actions

Copy link
Copy Markdown

Errors are component not formatted correctly,Ticket number prefix incorrect,PR title is malformatted. See https://daosio.atlassian.net/wiki/spaces/DC/pages/11133911069/Commit+Comments,Unable to load ticket data
https://daosio.atlassian.net/browse/Liang/b2

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Development

Successfully merging this pull request may close these issues.

3 participants