Project

General

Profile

Feature #14041

Updated by Samuel Just about 8 years ago

EC overwrites preclude our current checksumming strategy.    Instead, We need something to replace it.    We probably need per-stripe checksums on each shard (only for that shard, we'll maintain a set of omap entries (prefixed so that we can use the omap space on the object not for other things later) where each entry contains N per-stripe checksums.    N should be configurable at pool creation time or when the pool is switched to allow overwrites (and is fixed forever after).    Notably, whole stripe since we need don't want to be able to switch an append-only ec pool to allow overwrites. 

 When an object update shards which was written in append-only mode is overwritten, the OSD should clear the append-only checksum attr, set the checksum didn't change for the modified extents, and initialize all of the other block checksums to a value which indicates that it is non-determinant. partial write).    When an append-only object Step one is deep-scrubbed after the mode is switched, the correct checksums should be immediately written out. 

 We also need to come up with a cache for unstable checksums. 

 As with several of the other features, this feature is complete once when the ec overwrites testing flag is enabled, current ec pools use the new checksumming scheme. design and add it to doc/dev/osd_internals!

Back