]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
osdc/Objecter: make sg_read/write support iohint_flags.
authorJianpeng Ma <jianpeng.ma@intel.com>
Fri, 21 Aug 2015 05:44:41 +0000 (13:44 +0800)
committerJianpeng Ma <jianpeng.ma@intel.com>
Fri, 11 Sep 2015 05:07:33 +0000 (13:07 +0800)
src/osdc/Objecter.h

index 1a985789955336fc8cfdf4b6bf7020354086110e..34adc43a42635798b7b02715ddabecca5357482d 100644 (file)
@@ -2213,7 +2213,8 @@ public:
   ceph_tid_t read(const object_t& oid, const object_locator_t& oloc,
             uint64_t off, uint64_t len, snapid_t snap, bufferlist *pbl, int flags,
             Context *onfinish,
-            version_t *objver = NULL, ObjectOperation *extra_ops = NULL) {
+            version_t *objver = NULL, ObjectOperation *extra_ops = NULL,
+            int op_flags = 0) {
     vector<OSDOp> ops;
     int i = init_ops(ops, 1, extra_ops);
     ops[i].op.op = CEPH_OSD_OP_READ;
@@ -2221,6 +2222,7 @@ public:
     ops[i].op.extent.length = len;
     ops[i].op.extent.truncate_size = 0;
     ops[i].op.extent.truncate_seq = 0;
+    ops[i].op.flags = op_flags;
     Op *o = new Op(oid, oloc, ops, flags | global_op_flags.read() | CEPH_OSD_FLAG_READ, onfinish, 0, objver);
     o->snapid = snap;
     o->outbl = pbl;
@@ -2230,8 +2232,9 @@ public:
   ceph_tid_t read_trunc(const object_t& oid, const object_locator_t& oloc,
             uint64_t off, uint64_t len, snapid_t snap, bufferlist *pbl, int flags,
             uint64_t trunc_size, __u32 trunc_seq,
-            Context *onfinish,
-            version_t *objver = NULL, ObjectOperation *extra_ops = NULL) {
+            Context *onfinish, 
+            version_t *objver = NULL, ObjectOperation *extra_ops = NULL,
+            int op_flags = 0) {
     vector<OSDOp> ops;
     int i = init_ops(ops, 1, extra_ops);
     ops[i].op.op = CEPH_OSD_OP_READ;
@@ -2239,6 +2242,7 @@ public:
     ops[i].op.extent.length = len;
     ops[i].op.extent.truncate_size = trunc_size;
     ops[i].op.extent.truncate_seq = trunc_seq;
+    ops[i].op.flags = op_flags;
     Op *o = new Op(oid, oloc, ops, flags | global_op_flags.read() | CEPH_OSD_FLAG_READ, onfinish, 0, objver);
     o->snapid = snap;
     o->outbl = pbl;
@@ -2314,7 +2318,8 @@ public:
              uint64_t off, uint64_t len, const SnapContext& snapc, const bufferlist &bl,
              utime_t mtime, int flags,
              Context *onack, Context *oncommit,
-             version_t *objver = NULL, ObjectOperation *extra_ops = NULL) {
+             version_t *objver = NULL, ObjectOperation *extra_ops = NULL,
+             int op_flags = 0) {
     vector<OSDOp> ops;
     int i = init_ops(ops, 1, extra_ops);
     ops[i].op.op = CEPH_OSD_OP_WRITE;
@@ -2323,6 +2328,7 @@ public:
     ops[i].op.extent.truncate_size = 0;
     ops[i].op.extent.truncate_seq = 0;
     ops[i].indata = bl;
+    ops[i].op.flags = op_flags;
     Op *o = new Op(oid, oloc, ops, flags | global_op_flags.read() | CEPH_OSD_FLAG_WRITE, onack, oncommit, objver);
     o->mtime = mtime;
     o->snapc = snapc;
@@ -2351,7 +2357,8 @@ public:
              utime_t mtime, int flags,
              uint64_t trunc_size, __u32 trunc_seq,
              Context *onack, Context *oncommit,
-             version_t *objver = NULL, ObjectOperation *extra_ops = NULL) {
+             version_t *objver = NULL, ObjectOperation *extra_ops = NULL,
+             int op_flags = 0) {
     vector<OSDOp> ops;
     int i = init_ops(ops, 1, extra_ops);
     ops[i].op.op = CEPH_OSD_OP_WRITE;
@@ -2360,6 +2367,7 @@ public:
     ops[i].op.extent.truncate_size = trunc_size;
     ops[i].op.extent.truncate_seq = trunc_seq;
     ops[i].indata = bl;
+    ops[i].op.flags = op_flags;
     Op *o = new Op(oid, oloc, ops, flags | global_op_flags.read() | CEPH_OSD_FLAG_WRITE, onack, oncommit, objver);
     o->mtime = mtime;
     o->snapc = snapc;
@@ -2368,13 +2376,15 @@ public:
   ceph_tid_t write_full(const object_t& oid, const object_locator_t& oloc,
                   const SnapContext& snapc, const bufferlist &bl, utime_t mtime, int flags,
                   Context *onack, Context *oncommit,
-                  version_t *objver = NULL, ObjectOperation *extra_ops = NULL) {
+                  version_t *objver = NULL, ObjectOperation *extra_ops = NULL,
+                  int op_flags = 0) {
     vector<OSDOp> ops;
     int i = init_ops(ops, 1, extra_ops);
     ops[i].op.op = CEPH_OSD_OP_WRITEFULL;
     ops[i].op.extent.offset = 0;
     ops[i].op.extent.length = bl.length();
     ops[i].indata = bl;
+    ops[i].op.flags = op_flags;
     Op *o = new Op(oid, oloc, ops, flags | global_op_flags.read() | CEPH_OSD_FLAG_WRITE, onack, oncommit, objver);
     o->mtime = mtime;
     o->snapc = snapc;
@@ -2559,33 +2569,36 @@ public:
   };
 
   void sg_read_trunc(vector<ObjectExtent>& extents, snapid_t snap, bufferlist *bl, int flags,
-               uint64_t trunc_size, __u32 trunc_seq, Context *onfinish) {
+               uint64_t trunc_size, __u32 trunc_seq, Context *onfinish, int op_flags = 0) {
     if (extents.size() == 1) {
       read_trunc(extents[0].oid, extents[0].oloc, extents[0].offset, extents[0].length,
-          snap, bl, flags, extents[0].truncate_size, trunc_seq, onfinish);
+          snap, bl, flags, extents[0].truncate_size, trunc_seq, onfinish, 
+          0, 0, op_flags);
     } else {
       C_GatherBuilder gather(cct);
       vector<bufferlist> resultbl(extents.size());
       int i=0;
       for (vector<ObjectExtent>::iterator p = extents.begin(); p != extents.end(); ++p) {
        read_trunc(p->oid, p->oloc, p->offset, p->length,
-            snap, &resultbl[i++], flags, p->truncate_size, trunc_seq, gather.new_sub());
+            snap, &resultbl[i++], flags, p->truncate_size, trunc_seq, gather.new_sub(),
+            0, 0, op_flags);
       }
       gather.set_finisher(new C_SGRead(this, extents, resultbl, bl, onfinish));
       gather.activate();
     }
   }
 
-  void sg_read(vector<ObjectExtent>& extents, snapid_t snap, bufferlist *bl, int flags, Context *onfinish) {
-    sg_read_trunc(extents, snap, bl, flags, 0, 0, onfinish);
+  void sg_read(vector<ObjectExtent>& extents, snapid_t snap, bufferlist *bl, int flags, Context *onfinish, int op_flags = 0) {
+    sg_read_trunc(extents, snap, bl, flags, 0, 0, onfinish, op_flags);
   }
 
   void sg_write_trunc(vector<ObjectExtent>& extents, const SnapContext& snapc, const bufferlist& bl, utime_t mtime,
                int flags, uint64_t trunc_size, __u32 trunc_seq,
-               Context *onack, Context *oncommit) {
+               Context *onack, Context *oncommit, int op_flags = 0) {
     if (extents.size() == 1) {
       write_trunc(extents[0].oid, extents[0].oloc, extents[0].offset, extents[0].length,
-           snapc, bl, mtime, flags, extents[0].truncate_size, trunc_seq, onack, oncommit);
+           snapc, bl, mtime, flags, extents[0].truncate_size, trunc_seq, onack, oncommit,
+           0, 0, op_flags);
     } else {
       C_GatherBuilder gack(cct, onack);
       C_GatherBuilder gcom(cct, oncommit);
@@ -2599,7 +2612,8 @@ public:
        write_trunc(p->oid, p->oloc, p->offset, p->length, 
              snapc, cur, mtime, flags, p->truncate_size, trunc_seq,
              onack ? gack.new_sub():0,
-             oncommit ? gcom.new_sub():0);
+             oncommit ? gcom.new_sub():0,
+             0, 0, op_flags);
       }
       gack.activate();
       gcom.activate();
@@ -2607,8 +2621,8 @@ public:
   }
 
   void sg_write(vector<ObjectExtent>& extents, const SnapContext& snapc, const bufferlist& bl, utime_t mtime,
-               int flags, Context *onack, Context *oncommit) {
-    sg_write_trunc(extents, snapc, bl, mtime, flags, 0, 0, onack, oncommit);
+               int flags, Context *onack, Context *oncommit, int op_flags = 0) {
+    sg_write_trunc(extents, snapc, bl, mtime, flags, 0, 0, onack, oncommit, op_flags);
   }
 
   void ms_handle_connect(Connection *con);