]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
librados: add src_fadvise_flags in ceph_osd_op::copy_from
authorJianpeng Ma <jianpeng.ma@intel.com>
Wed, 18 Mar 2015 01:47:27 +0000 (09:47 +0800)
committerJianpeng Ma <jianpeng.ma@intel.com>
Mon, 23 Mar 2015 10:00:55 +0000 (18:00 +0800)
Using this field as the src object fadvise flags. the flags of
ceph_osd_op mean the dest object fadvise flags.

Signed-off-by: Jianpeng Ma <jianpeng.ma@intel.com>
src/include/rados.h
src/librados/librados.cc
src/osd/ReplicatedPG.cc
src/osdc/Objecter.h

index 3691a2ceadb02deeade133922b00a83e4abe6c77..b2b8123329e975af8b8083cc2c8627cbe84542bc 100644 (file)
@@ -520,6 +520,11 @@ struct ceph_osd_op {
                        __le64 snapid;
                        __le64 src_version;
                        __u8 flags;
+                       /*
+                        * __le32 flags: CEPH_OSD_OP_FLAG_FADVISE_: mean the fadvise flags for dest object
+                        * src_fadvise_flags mean the fadvise flags for src object
+                        */
+                       __le32 src_fadvise_flags;
                } __attribute__ ((packed)) copy_from;
                struct {
                        struct ceph_timespec stamp;
index cbefe0b35d86afe36631e1643dcc62faa5cfa234..a9eadfa4deff3520d260d872e0dd1fdb86eba517 100644 (file)
@@ -424,7 +424,7 @@ void librados::ObjectWriteOperation::copy_from(const std::string& src,
 {
   ::ObjectOperation *o = (::ObjectOperation *)impl;
   o->copy_from(object_t(src), src_ioctx.io_ctx_impl->snap_seq,
-              src_ioctx.io_ctx_impl->oloc, src_version, 0);
+              src_ioctx.io_ctx_impl->oloc, src_version, 0, 0);
 }
 
 void librados::ObjectWriteOperation::undirty()
index c3210d0fc0a4543179228b5a96a288ea54de0439..a65af74e0d89d412f0a8fda56ff13e52569b412e 100644 (file)
@@ -7151,7 +7151,8 @@ int ReplicatedPG::start_flush(
                CEPH_OSD_COPY_FROM_FLAG_FLUSH |
                CEPH_OSD_COPY_FROM_FLAG_IGNORE_OVERLAY |
                CEPH_OSD_COPY_FROM_FLAG_IGNORE_CACHE |
-               CEPH_OSD_COPY_FROM_FLAG_MAP_SNAP_CLONE);
+               CEPH_OSD_COPY_FROM_FLAG_MAP_SNAP_CLONE,
+               0);
   }
   C_Flush *fin = new C_Flush(this, soid, get_last_peering_reset());
 
index 68c429d58f37cd44c4d2ed686e50caab5f95bcf6..352afd0e0807e3656dc4955a45346b9e32d725d6 100644 (file)
@@ -956,11 +956,13 @@ struct ObjectOperation {
   }
 
   void copy_from(object_t src, snapid_t snapid, object_locator_t src_oloc,
-                version_t src_version, unsigned flags) {
+                version_t src_version, unsigned flags,
+                unsigned src_fadvise_flags) {
     OSDOp& osd_op = add_op(CEPH_OSD_OP_COPY_FROM);
     osd_op.op.copy_from.snapid = snapid;
     osd_op.op.copy_from.src_version = src_version;
     osd_op.op.copy_from.flags = flags;
+    osd_op.op.copy_from.src_fadvise_flags = src_fadvise_flags;
     ::encode(src, osd_op.indata);
     ::encode(src_oloc, osd_op.indata);
   }