]> git.apps.os.sepia.ceph.com Git - ceph.git/commit
osd: EC Optimizations fix bugs in applying pwlc to update info and log
authorBill Scales <bill_scales@uk.ibm.com>
Wed, 11 Jun 2025 14:53:48 +0000 (15:53 +0100)
committerAlex Ainscow <aainscow@uk.ibm.com>
Sun, 7 Sep 2025 22:59:48 +0000 (23:59 +0100)
commitd2e2c7dfd8cbc188589f096586f2ba47d6fba9b4
tree14a58bb135d2ba9cd9e9021e5a1485bc482ed1e7
parent4ad5cc4bf715a322100388e405ff15952296cc27
osd: EC Optimizations fix bugs in applying pwlc to update info and log

1. Refactor the code that applies pwlc to update info and log so that there
is one function rather than multiple copies of the code.

2. pwlc information is used to track shards that have not been updated by
partial writes. It is used to advance last_complete (and last_update and
the log head) to account for log entries that the shard missed. It was
only being applied if last_complete matched the range of partial writes
recorded in pwlc. When a shard has missing objects last_complete is
deliberately held before the oldest need, this stops pwlc being applied.
This is wrong - pwlc can still try and update last update and the log
head even if it cannot update last_complete.

3. When the primary receives info (and pwlc) information from OSD x(y)
it uses the pwlc information to update x(y)'s info. During backfill
there may be other shards z(y) which should also be updated using the
pwlc information.

Signed-off-by: Bill Scales <bill_scales@uk.ibm.com>
(cherry picked from commit c6d2bb9f6479767927ef01f6e2871dc1bb6d0f54)
src/osd/PeeringState.cc
src/osd/PeeringState.h