From: Samuel Just Date: Thu, 16 Apr 2015 16:58:55 +0000 (-0700) Subject: Merge pull request #4012 from majianpeng/cache-tier-fadvise X-Git-Tag: v9.0.1~123 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=27aac3d070fd7bd40eba8dce1fd35ee9e7552a82;p=ceph.git Merge pull request #4012 from majianpeng/cache-tier-fadvise Cache tier fadvise Reviewed-by: Sage Weil --- 27aac3d070fd7bd40eba8dce1fd35ee9e7552a82 diff --cc src/osd/ReplicatedPG.cc index 31875f6bcdc2,937d4b281f67..1f9bbb1580cc --- a/src/osd/ReplicatedPG.cc +++ b/src/osd/ReplicatedPG.cc @@@ -1550,11 -1622,10 +1550,11 @@@ void ReplicatedPG::do_op(OpRequestRef& } if (agent_state) { - agent_choose_mode(); + if (agent_choose_mode(false, op)) + return; } - if ((m->get_flags() & CEPH_OSD_FLAG_IGNORE_CACHE) == 0 && + if (!(m->has_flag(CEPH_OSD_FLAG_IGNORE_CACHE)) && maybe_handle_cache(op, write_ordered, obc, r, missing_oid, false, in_hit_set)) return; @@@ -2186,7 -2247,18 +2200,17 @@@ void ReplicatedPG::promote_object(Objec assert(missing_oid != hobject_t()); obc = get_object_context(missing_oid, true); } - dout(10) << __func__ << " " << obc->obs.oi.soid << dendl; + /* + * Before promote complete, if there are proxy-reads for the object, + * for this case we don't use DONTNEED. + */ + unsigned src_fadvise_flags = LIBRADOS_OP_FLAG_FADVISE_SEQUENTIAL; + map >::iterator q = in_progress_proxy_reads.find(obc->obs.oi.soid); + if (q == in_progress_proxy_reads.end()) { + src_fadvise_flags |= LIBRADOS_OP_FLAG_FADVISE_DONTNEED; + } + PromoteCallback *cb = new PromoteCallback(obc, this); object_locator_t my_oloc = oloc; my_oloc.pool = pool.info.tier_of;