]> git.apps.os.sepia.ceph.com Git - ceph.git/commit
osd: rewind_divergent_log needs to dirty log if crt changes or ...
authorBill Scales <bill_scales@uk.ibm.com>
Mon, 23 Jun 2025 09:12:10 +0000 (10:12 +0100)
committerAlex Ainscow <aainscow@uk.ibm.com>
Sun, 7 Sep 2025 23:10:41 +0000 (00:10 +0100)
commit551bb50c32805fefde550068751dfad2c113d650
tree70015506b524ab154c9310b6dfd10a19e84ba3ee
parentd02bf3c404811bb682c1e95b4c909cc94385bc19
osd: rewind_divergent_log needs to dirty log if crt changes or ...
rollback_info_trimmed_to changes

PGLog::rewind_divergent_log was only causing the log to be marked
dirty and checkpointed if there were divergent entries. However
after a PG split it is possible that the log can be rewound
modifying crt and/or rollback_info_trimmed_to without creating
divergent entries because the entries being rolled back were
all split into the other PG.

Failing to checkpoint the log generates a window where if the OSD
is reset you can end up with crt (and rollback_info_trimmed_to) > head.
One consequence of this is asserts like
ceph_assert(rollback_info_trimmed_to == head); firing.

Fixes: https://tracker.ceph.com/issues/55141
Signed-off-by: Bill Scales <bill_scales@uk.ibm.com>
(cherry picked from commit d8f78adf85f8cb11deeae3683a28db92046779b5)
src/osd/PGLog.cc
src/osd/PGLog.h
src/osd/osd_types.h