]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commit
osd/PGLog: write only changed dup entries 17378/head
authorJosh Durgin <jdurgin@redhat.com>
Thu, 24 Aug 2017 22:03:36 +0000 (18:03 -0400)
committerJan Fajerski <jfajerski@suse.com>
Wed, 30 Aug 2017 16:18:03 +0000 (18:18 +0200)
commit33dc4e65b2862fbadd7eba504247144d4c710a7c
tree7f98fda9e0bc27fe7a141825e780735f8577a235
parent4c5db08e6600b47cb4e2a3b940ab008bc9b1cb72
osd/PGLog: write only changed dup entries

Writing all of the dup entries whenever one is changed causes a large
regression in performance.

Instead, keep track of ranges that need to be cleared and written
after log merging (dirty_{to,from}_dups) and the earliest dup entry we
haven't written yet during normal operation (write_from_dups). This
parallels the way we track unpersisted log entries.

Check that the correct set of dups is persisted by adding a roundtrip
through memstore to each merge_log unit test.

Fixes: http://tracker.ceph.com/issues/21026
Signed-off-by: Josh Durgin <jdurgin@redhat.com>
(cherry picked from commit 75af72f758aacc1260b8d828d0b8bb7786597fdf)
src/osd/PGLog.cc
src/osd/PGLog.h
src/osd/osd_types.h
src/test/osd/TestPGLog.cc
src/tools/ceph_objectstore_tool.cc