]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commit
os/Transaction: initialize unused fields in TransactionData 65075/head
authorKefu Chai <tchaikov@gmail.com>
Mon, 18 Aug 2025 02:41:07 +0000 (10:41 +0800)
committerKefu Chai <tchaikov@gmail.com>
Wed, 20 Aug 2025 02:57:09 +0000 (10:57 +0800)
commitb06a68b4b80d5b3824938019a356a6a4fa15ca64
tree2c97dc12256f121e4af00a53d623d8a99d6acd2a
parentee99b1aee79304f8d240b14a85d2e12e52d3d3ec
os/Transaction: initialize unused fields in TransactionData

Initialize unused1, unused2, and unused3 fields to zero in TransactionData
to ensure consistent encoding/decoding behavior.

Background:
In commit a0c9fec7, we updated TransactionData encoding/decoding and bumped
the Transaction encoding version from 9 to 10. As part of this change, we
renamed three fields to mark them as unused:
- largest_data_len → unused1
- largest_data_off → unused2
- largest_data_off_in_data_bl → unused3

The move constructor was also updated to stop setting these fields, leaving
them uninitialized after move operations.

Problem:
This worked with existing tests because check-generated.sh reused struct
instances, preserving stale values across encode/decode cycles. However,
an upcoming test change will stop reusing instances and compare hexdumps
of encoded/re-encoded values to verify consistency. Uninitialized fields
cause these comparisons to fail due to garbage values.

Solution:
Initialize the unused fields to zero in the move constructor. This preserves
existing behavior while ensuring consistent encoding. These fields can be
removed entirely in a future change.

Signed-off-by: Kefu Chai <tchaikov@gmail.com>
src/os/Transaction.h