From: Yehuda Sadeh Date: Fri, 29 Mar 2024 20:20:38 +0000 (-0400) Subject: objecter: weaker memory ordering for extra_read_flags X-Git-Tag: testing/wip-hyelloji-testing-20250127.141229~35^2~6 X-Git-Url: http://git.apps.os.sepia.ceph.com/?a=commitdiff_plain;h=0a2f572d4f611a02a3ab4158d1af31ed30865571;p=ceph-ci.git objecter: weaker memory ordering for extra_read_flags Signed-off-by: Yehuda Sadeh --- diff --git a/src/osdc/Objecter.h b/src/osdc/Objecter.h index 2ed8c3f27db..fcddcc55b86 100644 --- a/src/osdc/Objecter.h +++ b/src/osdc/Objecter.h @@ -2948,6 +2948,12 @@ public: private: int op_cancel(OSDSession *s, ceph_tid_t tid, int r); int _op_cancel(ceph_tid_t tid, int r); + + int get_read_flags(int flags) { + return flags | global_op_flags | extra_read_flags.load(std::memory_order_relaxed) | + CEPH_OSD_FLAG_READ; + } + public: int op_cancel(ceph_tid_t tid, int r); int op_cancel(const std::vector& tidls, int r); @@ -3091,8 +3097,7 @@ public: int *data_offset = NULL, uint64_t features = 0, ZTracer::Trace *parent_trace = nullptr) { - Op *o = new Op(oid, oloc, std::move(op.ops), flags | global_op_flags | extra_read_flags | - CEPH_OSD_FLAG_READ, onack, objver, + Op *o = new Op(oid, oloc, std::move(op.ops), get_read_flags(flags), onack, objver, data_offset, parent_trace); o->priority = op.priority; o->snapid = snapid; @@ -3127,8 +3132,8 @@ public: int flags, Op::OpComp onack, version_t *objver = nullptr, int *data_offset = nullptr, uint64_t features = 0, ZTracer::Trace *parent_trace = nullptr) { - Op *o = new Op(oid, oloc, std::move(op.ops), flags | global_op_flags | extra_read_flags | - CEPH_OSD_FLAG_READ, std::move(onack), objver, + Op *o = new Op(oid, oloc, std::move(op.ops), get_read_flags(flags), + std::move(onack), objver, data_offset, parent_trace); o->priority = op.priority; o->snapid = snapid; @@ -3166,7 +3171,7 @@ public: int *ctx_budget) { Op *o = new Op(object_t(), oloc, std::move(op.ops), - flags | global_op_flags | CEPH_OSD_FLAG_READ | extra_read_flags | + get_read_flags(flags) | CEPH_OSD_FLAG_IGNORE_OVERLAY, onack, NULL); o->target.precalc_pgid = true; @@ -3306,8 +3311,8 @@ public: int i = init_ops(ops, 1, extra_ops); ops[i].op.op = CEPH_OSD_OP_STAT; C_Stat *fin = new C_Stat(psize, pmtime, onfinish); - Op *o = new Op(oid, oloc, std::move(ops), flags | global_op_flags | - CEPH_OSD_FLAG_READ | extra_read_flags, fin, objver); + Op *o = new Op(oid, oloc, std::move(ops), + get_read_flags(flags), fin, objver); o->snapid = snap; o->outbl = &fin->bl; return o; @@ -3338,8 +3343,7 @@ public: 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, std::move(ops), flags | global_op_flags | - CEPH_OSD_FLAG_READ | extra_read_flags, onfinish, objver, + Op *o = new Op(oid, oloc, std::move(ops), get_read_flags(flags), onfinish, objver, nullptr, parent_trace); o->snapid = snap; o->outbl = pbl; @@ -3371,8 +3375,7 @@ public: ops[i].op.extent.truncate_seq = 0; ops[i].indata = cmp_bl; ops[i].op.flags = op_flags; - Op *o = new Op(oid, oloc, std::move(ops), flags | global_op_flags | - CEPH_OSD_FLAG_READ | extra_read_flags, onfinish, objver); + Op *o = new Op(oid, oloc, std::move(ops), get_read_flags(flags), onfinish, objver); o->snapid = snap; return o; } @@ -3403,8 +3406,7 @@ public: 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, std::move(ops), flags | global_op_flags | - CEPH_OSD_FLAG_READ | extra_read_flags, onfinish, objver); + Op *o = new Op(oid, oloc, std::move(ops), get_read_flags(flags), onfinish, objver); o->snapid = snap; o->outbl = pbl; ceph_tid_t tid; @@ -3422,8 +3424,7 @@ public: ops[i].op.extent.length = len; ops[i].op.extent.truncate_size = 0; ops[i].op.extent.truncate_seq = 0; - Op *o = new Op(oid, oloc, std::move(ops), flags | global_op_flags | - CEPH_OSD_FLAG_READ | extra_read_flags, onfinish, objver); + Op *o = new Op(oid, oloc, std::move(ops), get_read_flags(flags), onfinish, objver); o->snapid = snap; o->outbl = pbl; ceph_tid_t tid; @@ -3441,8 +3442,7 @@ public: ops[i].op.xattr.value_len = 0; if (name) ops[i].indata.append(name, ops[i].op.xattr.name_len); - Op *o = new Op(oid, oloc, std::move(ops), flags | global_op_flags | - CEPH_OSD_FLAG_READ | extra_read_flags, onfinish, objver); + Op *o = new Op(oid, oloc, std::move(ops), get_read_flags(flags), onfinish, objver); o->snapid = snap; o->outbl = pbl; ceph_tid_t tid; @@ -3458,8 +3458,7 @@ public: int i = init_ops(ops, 1, extra_ops); ops[i].op.op = CEPH_OSD_OP_GETXATTRS; C_GetAttrs *fin = new C_GetAttrs(attrset, onfinish); - Op *o = new Op(oid, oloc, std::move(ops), flags | global_op_flags | - CEPH_OSD_FLAG_READ | extra_read_flags, fin, objver); + Op *o = new Op(oid, oloc, std::move(ops), get_read_flags(flags), fin, objver); o->snapid = snap; o->outbl = &fin->bl; ceph_tid_t tid;