]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commit
librbd: account m_processing when failing request after refresh 12160/head
authorVenky Shankar <vshankar@redhat.com>
Wed, 23 Nov 2016 09:05:03 +0000 (14:35 +0530)
committerVenky Shankar <vshankar@redhat.com>
Wed, 23 Nov 2016 10:55:17 +0000 (16:25 +0530)
commitcc2f222a9b8b987510601260cc76d5e2fba3b4a8
tree53e4ae043c52d5f0dc3569a90e7908cb2f014f9f
parent6332a2017097c20d931daf403578cb7b48eefbe8
librbd: account m_processing when failing request after refresh

AioImageRequestWQ::_void_process() dequeues an item from the
work queue by invoking ThreadPool::_void_process() which also
performs accounting by incrementing ->m_processing which never
gets decremented if an image refresh fails. This is exactly
the flow when running test_lock_fence.sh which blacklists a
client and expects failed I/O operation from the client.

Without this fix, running test_lock_fence.sh in a loop fails
with an assert in PointerWQ dtor within 100 odd runs.

Fixes: http://tracker.ceph.com/issues/17973
Signed-off-by: Venky Shankar <vshankar@redhat.com>
src/librbd/AioImageRequestWQ.cc