]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commit
crimson/osd: Use for loop in PG splitting 67225/head
authorAishwarya Mathuria <amathuri@redhat.com>
Mon, 23 Feb 2026 10:37:46 +0000 (16:07 +0530)
committerAishwarya Mathuria <amathuri@redhat.com>
Thu, 26 Feb 2026 11:00:11 +0000 (16:30 +0530)
commit003cc2753eff73552212bb7dd6623240bf3a563d
tree3f082f770138be5d34e2cc4fdf1d751010c0905d
parent6708b3169bc2c5ad00c68a2eaf9b24fe607ff3c6
crimson/osd: Use for loop in PG splitting

Currently, we use parallel_for_each when splitting a PG into multiple children.
In BlueStore's path, the sequential processing means the last split_collection call
(highest bits child) sets the final parent bits.
In SeaStore with parallel_for_each, separate transactions race, and a lower-bits child can overwrite the correct value.
With incorrect split_bits, the parent PG's list_objects computes a wider hash range than it should,
causing do_delete_work to list and delete objects that actually belong to a child PG.
When that child later tries to access those objects, SeaStore hits an unexpected ENOENT and aborts.

Fixes: https://tracker.ceph.com/issues/74982
Signed-off-by: Aishwarya Mathuria <amathuri@redhat.com>
src/crimson/osd/osd_operations/pg_advance_map.cc