]> git.apps.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)
committerSamuel Just <sam.just@inktank.com>
Mon, 28 Apr 2014 19:45:38 +0000 (12:45 -0700)
commitd83b8f58513e86c68aa6c25d4f909d9a3c4a103e
tree3b431299e6850288fb04bf91461e9428ebd8d135
parent2708c3c559d99e6f3b557ee1d223efa3745f655c
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>
src/osd/ReplicatedPG.cc
src/osd/ReplicatedPG.h