From: Zhiqiang Wang Date: Tue, 18 Nov 2014 23:47:32 +0000 (-0800) Subject: osd: tiering: proxy reads during promote X-Git-Tag: v0.92~33^2~8 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=8e145e08ede625adfb5d41216d7777d6c9707bd0;p=ceph.git osd: tiering: proxy reads during promote wip 9980. Do proxy read and async promotion for writeback. Signed-off-by: Zhiqiang Wang --- diff --git a/src/osd/ReplicatedPG.cc b/src/osd/ReplicatedPG.cc index 75c8dc4effd..de677e38a47 100644 --- a/src/osd/ReplicatedPG.cc +++ b/src/osd/ReplicatedPG.cc @@ -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::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;