]> git.apps.os.sepia.ceph.com Git - ceph.git/commit
ReplicatedBackend: don't hold ObjectContexts in pull completion callback 760/head
authorSamuel Just <sam.just@inktank.com>
Mon, 28 Oct 2013 18:02:34 +0000 (11:02 -0700)
committerSamuel Just <sam.just@inktank.com>
Mon, 28 Oct 2013 20:35:17 +0000 (13:35 -0700)
commit8db03ed0279a8b3f61af1dfc8193a5f01363d6a3
tree47713d93848ff5b7a24c964bab7cf86551a13599
parent5a416dab6e25909c62aefb0fa3d773ec2d5a01a1
ReplicatedBackend: don't hold ObjectContexts in pull completion callback

We need flushing the sequencer to ensure that all Contexts which hold
ObjectContextRefs have been run or deleted.
C_ReplicatedBackend_OnPullComplete, however, gets queued in a second
work queue in order to avoid performing expensive push related reads
in the FileStore finisher.

Rather than keep the objects contexts around, we instead put off
removing the object from the pulling map until the call back
fires and read the object context out of the pulling map.  This
way the ObjectContextRef will be cleaned up along with the rest
of the pulling map in on_change.

Signed-off-by: Samuel Just <sam.just@inktank.com>
src/osd/ReplicatedBackend.h
src/osd/ReplicatedPG.cc