]> git.apps.os.sepia.ceph.com Git - ceph-ci.git/commit
osd: EC optimizations: changes to rollback to support partial writes
authorBill Scales <156200352+bill-scales@users.noreply.github.com>
Thu, 6 Mar 2025 09:46:05 +0000 (09:46 +0000)
committerBill Scales <bill_scales@uk.ibm.com>
Thu, 10 Apr 2025 08:12:56 +0000 (09:12 +0100)
commit5ad1aaf9c67086e8ad694e923c7dee3466f27d70
tree4f04194e0a28045969789b844186d873e44bd07b
parentedbce5fdd543b66775974ec7f80338f63099622b
osd: EC optimizations: changes to rollback to support partial writes

EC Pools create an ObjectModDesc entry in each log entry that describes
how to undo the modifcation. During peering if it is determined that
only some of the shards completed an update then these shards are
instructed to rollback the change. This ensures that each update
is either applied to all or none of the shards.

For EC optimized pools rollback becomes a bit more complicated.
Firstly because not all shards may have been updated the rollback
needs to be more selective in what is undone. Secondly optimized
pools do not pad objects to be a multiple of the stripe width
which means shards can be different sizes.

There is a single ObjectModDesc entry that contains a set of
operations applied by every shard, individial operations need
to include enough information to work out what has to be undone
on each shard.

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