]> git.apps.os.sepia.ceph.com Git - ceph.git/commit
osd/PGLog: write only changed dup entries
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:25:47 +0000 (18:25 +0200)
commitbbfab3a3a2d3ec7e3260916c1902bb646aacf9f4
treedb45dac466ffa194509e3c8881322ec79429b7c3
parent1a6395763edcfed9e5351c9f45d5f0289c370492
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