]> git.apps.os.sepia.ceph.com Git - ceph-ci.git/commitdiff
objecter: weaker memory ordering for extra_read_flags
authorYehuda Sadeh <ysadehwe@ibm.com>
Fri, 29 Mar 2024 20:20:38 +0000 (16:20 -0400)
committerCasey Bodley <cbodley@redhat.com>
Thu, 12 Dec 2024 22:04:16 +0000 (17:04 -0500)
Signed-off-by: Yehuda Sadeh <ysadehwe@ibm.com>
src/osdc/Objecter.h

index 2ed8c3f27db036fb00547803dd835f4f3ffd4a3a..fcddcc55b8607843791a687b6f63ce1cb0ea6b2d 100644 (file)
@@ -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<ceph_tid_t>& 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;