]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
librbd: For rbd copy, add correctly fadvise flags.
authorJianpeng Ma <jianpeng.ma@intel.com>
Tue, 23 Jun 2015 05:20:12 +0000 (13:20 +0800)
committerJianpeng Ma <jianpeng.ma@intel.com>
Tue, 23 Jun 2015 05:20:12 +0000 (13:20 +0800)
Signed-off-by: Jianpeng Ma <jianpeng.ma@intel.com>
src/librbd/internal.cc

index 44ecf54fcb0e82d3a207ae2be70430997cf86558..2ecb93bfb96b07106c68373371550cfb45fda156 100644 (file)
@@ -2643,7 +2643,7 @@ reprotect_and_return_err:
 
       Context *ctx = new C_CopyWrite(m_throttle, m_bl);
       AioCompletion *comp = aio_create_completion_internal(ctx, rbd_ctx_cb);
-      aio_write(m_dest, m_offset, m_bl->length(), m_bl->c_str(), comp, 0);
+      aio_write(m_dest, m_offset, m_bl->length(), m_bl->c_str(), comp, LIBRADOS_OP_FLAG_FADVISE_DONTNEED);
     }
   private:
     SimpleThrottle *m_throttle;
@@ -2685,6 +2685,7 @@ reprotect_and_return_err:
 
     SimpleThrottle throttle(src->concurrent_management_ops, false);
     uint64_t period = src->get_stripe_period();
+    unsigned fadvise_flags = LIBRADOS_OP_FLAG_FADVISE_SEQUENTIAL | LIBRADOS_OP_FLAG_FADVISE_NOCACHE;
     for (uint64_t offset = 0; offset < src_size; offset += period) {
       if (throttle.pending_error()) {
         return throttle.wait_for_ret();
@@ -2694,7 +2695,7 @@ reprotect_and_return_err:
       bufferlist *bl = new bufferlist();
       Context *ctx = new C_CopyRead(&throttle, dest, offset, bl);
       AioCompletion *comp = aio_create_completion_internal(ctx, rbd_ctx_cb);
-      aio_read(src, offset, len, NULL, bl, comp, 0);
+      aio_read(src, offset, len, NULL, bl, comp, fadvise_flags);
       prog_ctx.update_progress(offset, src_size);
     }