]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
Merge pull request #4012 from majianpeng/cache-tier-fadvise
authorSamuel Just <sam.just@inktank.com>
Thu, 16 Apr 2015 16:58:55 +0000 (09:58 -0700)
committerSamuel Just <sam.just@inktank.com>
Thu, 16 Apr 2015 16:58:55 +0000 (09:58 -0700)
Cache tier fadvise

Reviewed-by: Sage Weil <sage@redhat.com>
1  2 
src/osd/ReplicatedPG.cc
src/osd/ReplicatedPG.h
src/osdc/Objecter.h

index 31875f6bcdc29dff927c9d6c95569e2389091033,937d4b281f67fd87df61f7153ec971ba86dc5299..1f9bbb1580ccefb3801e254370e77e5b9c5a1dd1
@@@ -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<hobject_t, list<OpRequestRef> >::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;
Simple merge
Simple merge