Skip to content

Commit 0a2f572

Browse files
yehudasacbodley
authored andcommitted
objecter: weaker memory ordering for extra_read_flags
Signed-off-by: Yehuda Sadeh <[email protected]>
1 parent 59c708c commit 0a2f572

File tree

1 file changed

+18
-19
lines changed

1 file changed

+18
-19
lines changed

src/osdc/Objecter.h

Lines changed: 18 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -2948,6 +2948,12 @@ class Objecter : public md_config_obs_t, public Dispatcher {
29482948
private:
29492949
int op_cancel(OSDSession *s, ceph_tid_t tid, int r);
29502950
int _op_cancel(ceph_tid_t tid, int r);
2951+
2952+
int get_read_flags(int flags) {
2953+
return flags | global_op_flags | extra_read_flags.load(std::memory_order_relaxed) |
2954+
CEPH_OSD_FLAG_READ;
2955+
}
2956+
29512957
public:
29522958
int op_cancel(ceph_tid_t tid, int r);
29532959
int op_cancel(const std::vector<ceph_tid_t>& tidls, int r);
@@ -3091,8 +3097,7 @@ class Objecter : public md_config_obs_t, public Dispatcher {
30913097
int *data_offset = NULL,
30923098
uint64_t features = 0,
30933099
ZTracer::Trace *parent_trace = nullptr) {
3094-
Op *o = new Op(oid, oloc, std::move(op.ops), flags | global_op_flags | extra_read_flags |
3095-
CEPH_OSD_FLAG_READ, onack, objver,
3100+
Op *o = new Op(oid, oloc, std::move(op.ops), get_read_flags(flags), onack, objver,
30963101
data_offset, parent_trace);
30973102
o->priority = op.priority;
30983103
o->snapid = snapid;
@@ -3127,8 +3132,8 @@ class Objecter : public md_config_obs_t, public Dispatcher {
31273132
int flags, Op::OpComp onack,
31283133
version_t *objver = nullptr, int *data_offset = nullptr,
31293134
uint64_t features = 0, ZTracer::Trace *parent_trace = nullptr) {
3130-
Op *o = new Op(oid, oloc, std::move(op.ops), flags | global_op_flags | extra_read_flags |
3131-
CEPH_OSD_FLAG_READ, std::move(onack), objver,
3135+
Op *o = new Op(oid, oloc, std::move(op.ops), get_read_flags(flags),
3136+
std::move(onack), objver,
31323137
data_offset, parent_trace);
31333138
o->priority = op.priority;
31343139
o->snapid = snapid;
@@ -3166,7 +3171,7 @@ class Objecter : public md_config_obs_t, public Dispatcher {
31663171
int *ctx_budget) {
31673172
Op *o = new Op(object_t(), oloc,
31683173
std::move(op.ops),
3169-
flags | global_op_flags | CEPH_OSD_FLAG_READ | extra_read_flags |
3174+
get_read_flags(flags) |
31703175
CEPH_OSD_FLAG_IGNORE_OVERLAY,
31713176
onack, NULL);
31723177
o->target.precalc_pgid = true;
@@ -3306,8 +3311,8 @@ class Objecter : public md_config_obs_t, public Dispatcher {
33063311
int i = init_ops(ops, 1, extra_ops);
33073312
ops[i].op.op = CEPH_OSD_OP_STAT;
33083313
C_Stat *fin = new C_Stat(psize, pmtime, onfinish);
3309-
Op *o = new Op(oid, oloc, std::move(ops), flags | global_op_flags |
3310-
CEPH_OSD_FLAG_READ | extra_read_flags, fin, objver);
3314+
Op *o = new Op(oid, oloc, std::move(ops),
3315+
get_read_flags(flags), fin, objver);
33113316
o->snapid = snap;
33123317
o->outbl = &fin->bl;
33133318
return o;
@@ -3338,8 +3343,7 @@ class Objecter : public md_config_obs_t, public Dispatcher {
33383343
ops[i].op.extent.truncate_size = 0;
33393344
ops[i].op.extent.truncate_seq = 0;
33403345
ops[i].op.flags = op_flags;
3341-
Op *o = new Op(oid, oloc, std::move(ops), flags | global_op_flags |
3342-
CEPH_OSD_FLAG_READ | extra_read_flags, onfinish, objver,
3346+
Op *o = new Op(oid, oloc, std::move(ops), get_read_flags(flags), onfinish, objver,
33433347
nullptr, parent_trace);
33443348
o->snapid = snap;
33453349
o->outbl = pbl;
@@ -3371,8 +3375,7 @@ class Objecter : public md_config_obs_t, public Dispatcher {
33713375
ops[i].op.extent.truncate_seq = 0;
33723376
ops[i].indata = cmp_bl;
33733377
ops[i].op.flags = op_flags;
3374-
Op *o = new Op(oid, oloc, std::move(ops), flags | global_op_flags |
3375-
CEPH_OSD_FLAG_READ | extra_read_flags, onfinish, objver);
3378+
Op *o = new Op(oid, oloc, std::move(ops), get_read_flags(flags), onfinish, objver);
33763379
o->snapid = snap;
33773380
return o;
33783381
}
@@ -3403,8 +3406,7 @@ class Objecter : public md_config_obs_t, public Dispatcher {
34033406
ops[i].op.extent.truncate_size = trunc_size;
34043407
ops[i].op.extent.truncate_seq = trunc_seq;
34053408
ops[i].op.flags = op_flags;
3406-
Op *o = new Op(oid, oloc, std::move(ops), flags | global_op_flags |
3407-
CEPH_OSD_FLAG_READ | extra_read_flags, onfinish, objver);
3409+
Op *o = new Op(oid, oloc, std::move(ops), get_read_flags(flags), onfinish, objver);
34083410
o->snapid = snap;
34093411
o->outbl = pbl;
34103412
ceph_tid_t tid;
@@ -3422,8 +3424,7 @@ class Objecter : public md_config_obs_t, public Dispatcher {
34223424
ops[i].op.extent.length = len;
34233425
ops[i].op.extent.truncate_size = 0;
34243426
ops[i].op.extent.truncate_seq = 0;
3425-
Op *o = new Op(oid, oloc, std::move(ops), flags | global_op_flags |
3426-
CEPH_OSD_FLAG_READ | extra_read_flags, onfinish, objver);
3427+
Op *o = new Op(oid, oloc, std::move(ops), get_read_flags(flags), onfinish, objver);
34273428
o->snapid = snap;
34283429
o->outbl = pbl;
34293430
ceph_tid_t tid;
@@ -3441,8 +3442,7 @@ class Objecter : public md_config_obs_t, public Dispatcher {
34413442
ops[i].op.xattr.value_len = 0;
34423443
if (name)
34433444
ops[i].indata.append(name, ops[i].op.xattr.name_len);
3444-
Op *o = new Op(oid, oloc, std::move(ops), flags | global_op_flags |
3445-
CEPH_OSD_FLAG_READ | extra_read_flags, onfinish, objver);
3445+
Op *o = new Op(oid, oloc, std::move(ops), get_read_flags(flags), onfinish, objver);
34463446
o->snapid = snap;
34473447
o->outbl = pbl;
34483448
ceph_tid_t tid;
@@ -3458,8 +3458,7 @@ class Objecter : public md_config_obs_t, public Dispatcher {
34583458
int i = init_ops(ops, 1, extra_ops);
34593459
ops[i].op.op = CEPH_OSD_OP_GETXATTRS;
34603460
C_GetAttrs *fin = new C_GetAttrs(attrset, onfinish);
3461-
Op *o = new Op(oid, oloc, std::move(ops), flags | global_op_flags |
3462-
CEPH_OSD_FLAG_READ | extra_read_flags, fin, objver);
3461+
Op *o = new Op(oid, oloc, std::move(ops), get_read_flags(flags), fin, objver);
34633462
o->snapid = snap;
34643463
o->outbl = &fin->bl;
34653464
ceph_tid_t tid;

0 commit comments

Comments
 (0)