]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
ReplicatedPG::agent_work: skip hitset objects before getting object context 1674/head
authorSamuel Just <sam.just@inktank.com>
Mon, 14 Apr 2014 18:07:58 +0000 (11:07 -0700)
committerSamuel Just <sam.just@inktank.com>
Mon, 14 Apr 2014 18:08:00 +0000 (11:08 -0700)
Otherwise, we might read the attr on a hitset object we are in the
process of deleting.

Fixes: #8086
Signed-off-by: Samuel Just <sam.just@inktank.com>
src/osd/ReplicatedPG.cc

index 8910e00d7c5ccae054cdb8047283396be5739670..70a878442d75e75261d56ac2609f727ae7ed49c1 100644 (file)
@@ -10763,6 +10763,11 @@ void ReplicatedPG::agent_work(int start_max)
   for (vector<hobject_t>::iterator p = ls.begin();
        p != ls.end();
        ++p) {
+    if (p->nspace == cct->_conf->osd_hit_set_namespace) {
+      dout(20) << __func__ << " skip (hit set) " << *p << dendl;
+      osd->logger->inc(l_osd_agent_skip);
+      continue;
+    }
     if (is_degraded_object(*p)) {
       dout(20) << __func__ << " skip (degraded) " << *p << dendl;
       osd->logger->inc(l_osd_agent_skip);
@@ -10785,11 +10790,6 @@ void ReplicatedPG::agent_work(int start_max)
       osd->logger->inc(l_osd_agent_skip);
       continue;
     }
-    if (obc->obs.oi.soid.nspace == cct->_conf->osd_hit_set_namespace) {
-      dout(20) << __func__ << " skip (hit set) " << obc->obs.oi << dendl;
-      osd->logger->inc(l_osd_agent_skip);
-      continue;
-    }
     if (obc->is_blocked()) {
       dout(20) << __func__ << " skip (blocked) " << obc->obs.oi << dendl;
       osd->logger->inc(l_osd_agent_skip);