From: Jianpeng Ma Date: Fri, 21 Aug 2015 05:44:41 +0000 (+0800) Subject: osdc/Objecter: make sg_read/write support iohint_flags. X-Git-Tag: v9.1.0~101^2~5 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=7c09e508f688f9defeabcb1e3c69f54644959bf8;p=ceph.git osdc/Objecter: make sg_read/write support iohint_flags. --- diff --git a/src/osdc/Objecter.h b/src/osdc/Objecter.h index 1a9857899553..34adc43a4263 100644 --- a/src/osdc/Objecter.h +++ b/src/osdc/Objecter.h @@ -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 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 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 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 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 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& 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 resultbl(extents.size()); int i=0; for (vector::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& extents, snapid_t snap, bufferlist *bl, int flags, Context *onfinish) { - sg_read_trunc(extents, snap, bl, flags, 0, 0, onfinish); + void sg_read(vector& 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& 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& 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);