]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commit
osdc/Objecter: use SafeTimer; make callbacks race-tolerant 2631/head
authorSage Weil <sage@redhat.com>
Thu, 2 Oct 2014 22:22:56 +0000 (15:22 -0700)
committerSage Weil <sage@redhat.com>
Thu, 2 Oct 2014 22:22:56 +0000 (15:22 -0700)
commit8253ead1748fc429bf48f5334ee4460ee865d941
tree9a4a612833cf7afecc94595fd19e3f8a62af17bd
parentb1ca1f23ff47857a27f6196c5a050f83f3acc9fc
osdc/Objecter: use SafeTimer; make callbacks race-tolerant

The RWTimer event cancellation is racy.  Instead, just make all of our
callbacks tolerate cancellation races.  This is already true of most of
them (in fact, they are probably broken because they try to take a write
lock while holding a read lock).  Fix C_CancelOp so that it calls the
other op_cancel (that takes a tid).

Then switch the RWTimer back to a SafeTimer.  Put it in unsafe callbacks
mode because we don't want to introduce lock cycles with timer_lock.

Fixes: #9582
See also: #9650
Signed-off-by: Sage Weil <sage@redhat.com>
src/osdc/Objecter.cc
src/osdc/Objecter.h