]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
osd: tiering: proxy reads during promote
authorZhiqiang Wang <zhiqiang.wang@intel.com>
Tue, 18 Nov 2014 23:47:32 +0000 (15:47 -0800)
committerSage Weil <sage@redhat.com>
Sun, 11 Jan 2015 04:35:30 +0000 (20:35 -0800)
wip 9980. Do proxy read and async promotion for writeback.

Signed-off-by: Zhiqiang Wang <zhiqiang.wang@intel.com>
src/osd/ReplicatedPG.cc

index 75c8dc4effd25657b51a1259fe1aee41e42ac24e..de677e38a47a30bafaf5180685efb663fd9a43e6 100644 (file)
@@ -1797,21 +1797,24 @@ bool ReplicatedPG::maybe_handle_cache(OpRequestRef op,
       promote_object(obc, missing_oid, oloc, op);
       return true;
     }
+
+    // Always proxy
+    do_proxy_read(op);
+
+    // Promote too?
     switch (pool.info.min_read_recency_for_promote) {
     case 0:
-      promote_object(obc, missing_oid, oloc, op);
+      promote_object(obc, missing_oid, oloc, OpRequestRef());
       break;
     case 1:
       // Check if in the current hit set
       if (in_hit_set) {
-       promote_object(obc, missing_oid, oloc, op);
-      } else {
-       do_cache_redirect(op, obc);
+       promote_object(obc, missing_oid, oloc, OpRequestRef());
       }
       break;
     default:
       if (in_hit_set) {
-       promote_object(obc, missing_oid, oloc, op);
+       promote_object(obc, missing_oid, oloc, OpRequestRef());
       } else {
        // Check if in other hit sets
        map<time_t,HitSetRef>::iterator itor;
@@ -1823,9 +1826,7 @@ bool ReplicatedPG::maybe_handle_cache(OpRequestRef op,
          }
        }
        if (in_other_hit_sets) {
-         promote_object(obc, missing_oid, oloc, op);
-       } else {
-         do_cache_redirect(op, obc);
+         promote_object(obc, missing_oid, oloc, OpRequestRef());
        }
       }
       break;