]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
osd: Simplify _process() logic recently added
authorDavid Zafman <dzafman@redhat.com>
Thu, 27 Sep 2018 02:01:20 +0000 (19:01 -0700)
committerDavid Zafman <dzafman@redhat.com>
Thu, 27 Sep 2018 02:39:55 +0000 (19:39 -0700)
Caused by: 6c583fe756c82ed6c196caa0ce783765d5e9ee41

Signed-off-by: David Zafman <dzafman@redhat.com>
src/osd/OSD.cc

index 4b19739f0406531d6551660de3352ff234a27895..aedbc459fa5dfacb6e7b4dc1bb2c199a20e83a03 100644 (file)
@@ -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;
       }