Skip to content

cls/rbd: mark cls_rbd_snap as forward incompatible since nautilus#24

Merged
idryomov merged 1 commit intoceph:masterfrom
tchaikov:wip-cls_rbd_snap-incompat
Jun 18, 2025
Merged

cls/rbd: mark cls_rbd_snap as forward incompatible since nautilus#24
idryomov merged 1 commit intoceph:masterfrom
tchaikov:wip-cls_rbd_snap-incompat

Conversation

@tchaikov
Copy link
Contributor

ceph/ceph@32b14ed1 broke backward compatibility of cls_rbd_snap's on-disk format by removing decoding of the "parent" field. When re-encoding instances, this field is now lost even if originally non-empty.

This breaking change should have been caught by readable.sh tests, but the tests passed because they reused the same instance for re-encoding, preserving undecoded fields by only overwriting decoded ones.

An upcoming change in ceph/ceph will allocate fresh instances for each decode operation instead of reusing existing ones. This will expose the compatibility break and cause test failures.

Mark cls_rbd_snap as forward incompatible starting from v15 (earliest version with archived corpus) to properly handle this breaking change and prepare for the improved testing approach.

@tchaikov
Copy link
Contributor Author

@idryomov hi Ilya, could you please help review this change?

@cbodley
Copy link
Contributor

cbodley commented Jun 16, 2025

nit: pr and commit title say "cls/rgw" not rbd

@tchaikov tchaikov force-pushed the wip-cls_rbd_snap-incompat branch from b5ba3e5 to 6689a47 Compare June 17, 2025 06:35
@tchaikov tchaikov changed the title cls/rgw: mark cls_rbd_snap as forward incompatible since nautilus cls/rbd: mark cls_rbd_snap as forward incompatible since nautilus Jun 17, 2025
@tchaikov
Copy link
Contributor Author

nit: pr and commit title say "cls/rgw" not rbd

indeed. corrected.

ceph/ceph@32b14ed1 broke backward compatibility of cls_rbd_snap's on-disk
format by removing decoding of the "parent" field. When re-encoding
instances, this field is now lost even if originally non-empty.

This breaking change should have been caught by readable.sh tests, but
the tests passed because they reused the same instance for re-encoding,
preserving undecoded fields by only overwriting decoded ones.

An upcoming change in ceph/ceph will allocate fresh instances for each
decode operation instead of reusing existing ones. This will expose the
compatibility break and cause test failures.

Mark cls_rbd_snap as forward incompatible starting from v15 (earliest
version with archived corpus) to properly handle this breaking change
and prepare for the improved testing approach.

Signed-off-by: Kefu Chai <tchaikov@gmail.com>
@tchaikov tchaikov force-pushed the wip-cls_rbd_snap-incompat branch from 6689a47 to 57b7487 Compare June 18, 2025 00:31
@tchaikov
Copy link
Contributor Author

changelog

  • mark cls_rbd_snap in the first corpus dumped with v15 incompatible instead the second one.

@tchaikov
Copy link
Contributor Author

@idryomov hi Ilya, thanks for your review! could you take another look?

@idryomov idryomov merged commit 9670a0e into ceph:master Jun 18, 2025
@tchaikov tchaikov deleted the wip-cls_rbd_snap-incompat branch June 18, 2025 11:39
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants