]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commit
crimson/os/seastore, osd/PGLog: handle omap_iterate retry to avoid duplicate entries
authormyoungwon oh <ohmyoungwon@gmail.com>
Sat, 28 Feb 2026 04:38:16 +0000 (13:38 +0900)
committermyoungwon oh <ohmyoungwon@gmail.com>
Tue, 17 Mar 2026 08:38:07 +0000 (17:38 +0900)
commit5dbd9ae51741bde2abfb4eaad5cc80dd64edd950
treeacef92370d2c208ae32583b16a42f04d04fdeaf4
parente55f0c79b10d290e6bde9b018ed6a51f236117f8
crimson/os/seastore, osd/PGLog: handle omap_iterate retry to avoid duplicate entries

Seastore omap_iterate may retry internally on conflicts, which can
cause PGLog to process the same entries multiple times when entries
are handled directly in the iteration callback.

Introduce a conflict hook in omap_iterate so callers can reset
iteration state on retry. PGLog now buffers entries during iteration and
applies process_entry() only after a successful pass, clearing the buffer
on retry to avoid duplicates.

Signed-off-by: Myoungwon Oh <ohmyoungwon@gmail.com>
12 files changed:
src/crimson/os/alienstore/alien_store.cc
src/crimson/os/alienstore/alien_store.h
src/crimson/os/cyanstore/cyan_store.cc
src/crimson/os/cyanstore/cyan_store.h
src/crimson/os/futurized_store.h
src/crimson/os/seastore/seastore.cc
src/crimson/os/seastore/seastore.h
src/crimson/osd/osd_operations/scrub_events.cc
src/crimson/osd/pg_backend.cc
src/crimson/osd/replicated_recovery_backend.cc
src/osd/PGLog.cc
src/osd/SnapMapper.cc