]> git.apps.os.sepia.ceph.com Git - ceph-ci.git/commitdiff
osd: avoid unnecessary map lookups in PrimaryLogPG::do_op.
authorRadoslaw Zarzynski <rzarzyns@redhat.com>
Wed, 24 Oct 2018 17:55:06 +0000 (19:55 +0200)
committerRadoslaw Zarzynski <rzarzyns@redhat.com>
Wed, 24 Oct 2018 17:55:09 +0000 (19:55 +0200)
Signed-off-by: Radoslaw Zarzynski <rzarzyns@redhat.com>
src/osd/PrimaryLogPG.cc

index 5a2968c791e898d57b1fb23f9a29c0af48dc57dd..4177409e4cc91116e0289994b1e63ac97e84db89 100644 (file)
@@ -2114,26 +2114,27 @@ void PrimaryLogPG::do_op(OpRequestRef& op)
   }
 
   // blocked on snap?
-  map<hobject_t, snapid_t>::iterator blocked_iter =
-    objects_blocked_on_degraded_snap.find(head);
-  if (write_ordered && blocked_iter != objects_blocked_on_degraded_snap.end()) {
-    hobject_t to_wait_on(head);
-    to_wait_on.snap = blocked_iter->second;
-    wait_for_degraded_object(to_wait_on, op);
-    return;
-  }
-  map<hobject_t, ObjectContextRef>::iterator blocked_snap_promote_iter =
-    objects_blocked_on_snap_promotion.find(head);
-  if (write_ordered && 
-      blocked_snap_promote_iter != objects_blocked_on_snap_promotion.end()) {
-    wait_for_blocked_object(
-      blocked_snap_promote_iter->second->obs.oi.soid,
-      op);
-    return;
-  }
-  if (write_ordered && objects_blocked_on_cache_full.count(head)) {
-    block_write_on_full_cache(head, op);
-    return;
+  if (write_ordered) {
+    map<hobject_t, snapid_t>::iterator blocked_iter =
+      objects_blocked_on_degraded_snap.find(head);
+    if (blocked_iter != objects_blocked_on_degraded_snap.end()) {
+      hobject_t to_wait_on(head);
+      to_wait_on.snap = blocked_iter->second;
+      wait_for_degraded_object(to_wait_on, op);
+      return;
+    }
+    map<hobject_t, ObjectContextRef>::iterator blocked_snap_promote_iter =
+      objects_blocked_on_snap_promotion.find(head);
+    if (blocked_snap_promote_iter != objects_blocked_on_snap_promotion.end()) {
+      wait_for_blocked_object(
+        blocked_snap_promote_iter->second->obs.oi.soid,
+        op);
+      return;
+    }
+    if (objects_blocked_on_cache_full.count(head)) {
+      block_write_on_full_cache(head, op);
+      return;
+    }
   }
 
   // dup/resent?