]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
osd/ReplicatedPG: factor out must_promote case from all cache modes
authorSage Weil <sage@redhat.com>
Thu, 23 Oct 2014 23:52:22 +0000 (16:52 -0700)
committerSage Weil <sage@redhat.com>
Sun, 11 Jan 2015 04:35:03 +0000 (20:35 -0800)
Signed-off-by: Sage Weil <sage@redhat.com>
src/osd/ReplicatedPG.cc

index 27180c6bec2846807d68b751919f443073127ffe..475555322d0a8ef15b6ea2d73bbf8ab302636ca1 100644 (file)
@@ -1769,6 +1769,11 @@ bool ReplicatedPG::maybe_handle_cache(OpRequestRef op,
   MOSDOp *m = static_cast<MOSDOp*>(op->get_req());
   const object_locator_t& oloc = m->get_object_locator();
 
+  if (must_promote) {
+    promote_object(obc, missing_oid, oloc, op);
+    return true;
+  }
+
   switch (pool.info.cache_mode) {
   case pg_pool_t::CACHEMODE_NONE:
     return false;
@@ -1785,10 +1790,10 @@ bool ReplicatedPG::maybe_handle_cache(OpRequestRef op,
       waiting_for_cache_not_full.push_back(op);
       return true;
     }
-    if (!must_promote && can_skip_promote(op, obc)) {
+    if (can_skip_promote(op, obc)) {
       return false;
     }
-    if (op->may_write() || write_ordered || must_promote || !hit_set) {
+    if (op->may_write() || write_ordered || !hit_set) {
       promote_object(obc, missing_oid, oloc, op);
     } else {
       switch (pool.info.min_read_recency_for_promote) {
@@ -1828,10 +1833,7 @@ bool ReplicatedPG::maybe_handle_cache(OpRequestRef op,
     return true;
 
   case pg_pool_t::CACHEMODE_FORWARD:
-    if (must_promote)
-      promote_object(obc, missing_oid, oloc, op);
-    else
-      do_cache_redirect(op, obc);
+    do_cache_redirect(op, obc);
     return true;
 
   case pg_pool_t::CACHEMODE_READONLY:
@@ -1857,7 +1859,7 @@ bool ReplicatedPG::maybe_handle_cache(OpRequestRef op,
        waiting_for_cache_not_full.push_back(op);
        return true;
       }
-      if (!must_promote && can_skip_promote(op, obc)) {
+      if (can_skip_promote(op, obc)) {
        return false;
       }
       promote_object(obc, missing_oid, oloc, op);
@@ -1865,10 +1867,7 @@ bool ReplicatedPG::maybe_handle_cache(OpRequestRef op,
     }
 
     // If it is a read, we can read, we need to forward it
-    if (must_promote)
-      promote_object(obc, missing_oid, oloc, op);
-    else
-      do_cache_redirect(op, obc);
+    do_cache_redirect(op, obc);
     return true;
 
   default: