]> git.apps.os.sepia.ceph.com Git - ceph-ci.git/commit
osd: EC optimizations: add nonprimary_shards set to pg_pool_t
authorBill Scales <156200352+bill-scales@users.noreply.github.com>
Thu, 6 Mar 2025 07:53:02 +0000 (07:53 +0000)
committerBill Scales <bill_scales@uk.ibm.com>
Mon, 7 Apr 2025 14:00:55 +0000 (15:00 +0100)
commit5c6f34603ec7db5eb794600ba4f04bfce0712005
tree4c02602602dbdc36b188215f39be7c89cbe86bfc
parentc1ca6f485f6b874595eddb20afda839e5c2a4251
osd: EC optimizations: add nonprimary_shards set to pg_pool_t

EC optimizations pools do not update every shard on every I/O. The primary
must have a complete log and requires objects to have up to date object
attributes, so the choice of primary has to be restricted. Shards that
cannot become a primary are listed in the nonprimary_shards set.

For a K+M EC pool with optimizations enabled the 1st data shard and all
M coding parity shards are always updated and can become a primary, the
other shards will be marked as nonprimary.

The new set nonprimary_shards stores shards that cannot become the primary,
by default it is an empty set which retains existing behavior. When
optimisations are enabled on an EC pool this set will be filled in to
restrict the choice of primary.

Signed-off-by: Bill Scales <bill_scales@uk.ibm.com>
src/osd/osd_types.cc
src/osd/osd_types.h