From: David Zafman Date: Thu, 27 Sep 2018 02:01:20 +0000 (-0700) Subject: osd: Simplify _process() logic recently added X-Git-Tag: v14.0.1~54^2~1 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=d4face595bfea6428c24fbf6ab9633470429c82a;p=ceph.git osd: Simplify _process() logic recently added Caused by: 6c583fe756c82ed6c196caa0ce783765d5e9ee41 Signed-off-by: David Zafman --- diff --git a/src/osd/OSD.cc b/src/osd/OSD.cc index 4b19739f0406..aedbc459fa5d 100644 --- a/src/osd/OSD.cc +++ b/src/osd/OSD.cc @@ -10200,30 +10200,8 @@ void OSD::ShardedOpWQ::_process(uint32_t thread_index, heartbeat_handle_d *hb) // peek at spg_t sdata->shard_lock.Lock(); - if (is_smallest_thread_index) { - if (sdata->pqueue->empty() && sdata->context_queue.empty()) { - sdata->sdata_wait_lock.Lock(); - if (!sdata->stop_waiting) { - dout(20) << __func__ << " empty q, waiting" << dendl; - osd->cct->get_heartbeat_map()->clear_timeout(hb); - sdata->shard_lock.Unlock(); - sdata->sdata_cond.Wait(sdata->sdata_wait_lock); - sdata->sdata_wait_lock.Unlock(); - sdata->shard_lock.Lock(); - if (sdata->pqueue->empty() && sdata->context_queue.empty()) { - sdata->shard_lock.Unlock(); - return; - } - osd->cct->get_heartbeat_map()->reset_timeout(hb, - osd->cct->_conf->threadpool_default_timeout, 0); - } else { - dout(20) << __func__ << " need return immediately" << dendl; - sdata->sdata_wait_lock.Unlock(); - sdata->shard_lock.Unlock(); - return; - } - } - } else if (sdata->pqueue->empty()) { + if (sdata->pqueue->empty() && + !(is_smallest_thread_index && !sdata->context_queue.empty())) { sdata->sdata_wait_lock.Lock(); if (!sdata->stop_waiting) { dout(20) << __func__ << " empty q, waiting" << dendl; @@ -10232,7 +10210,8 @@ void OSD::ShardedOpWQ::_process(uint32_t thread_index, heartbeat_handle_d *hb) sdata->sdata_cond.Wait(sdata->sdata_wait_lock); sdata->sdata_wait_lock.Unlock(); sdata->shard_lock.Lock(); - if (sdata->pqueue->empty()) { + if (sdata->pqueue->empty() && + !(is_smallest_thread_index && !sdata->context_queue.empty())) { sdata->shard_lock.Unlock(); return; }