]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commit
ReplicatedPG: do not preserve op context during flush
authorSamuel Just <sam.just@inktank.com>
Fri, 11 Apr 2014 01:15:30 +0000 (18:15 -0700)
committerSage Weil <sage@inktank.com>
Wed, 30 Apr 2014 22:05:55 +0000 (15:05 -0700)
commitd700d99f76e0a29bfb419bc85d19ef1950b62a9a
tree0c7800e4e307fbd4bfd5c624520e8970ae5926cc
parenta0271000c12486d3c5adb2b0732e1c70c3789a4f
ReplicatedPG: do not preserve op context during flush

Any information stashed in the OpContext may be obsolete by the time we
actually mark the object clean.  Instead, let the start_flush caller
clean up its OpContext and in try_flush_mark_clean we'll create a new
one.  The primary reason to keep the OpContext would have been locking,
but we can set the obc as blocking without holding an OpContext, and
that would allow trimming to happen in the mean time (which is good
since trim_object does not respect rw locks since it doesn't change user
visible state).  In try_flush_mark_clean, we requeue the fop->op along
with (but ahead of) the fop->dup_ops.

Fixes: #8068
Signed-off-by: Samuel Just <sam.just@inktank.com>
(cherry picked from commit d83b8f58513e86c68aa6c25d4f909d9a3c4a103e)
src/osd/ReplicatedPG.cc
src/osd/ReplicatedPG.h