// subop metadata
tid_t rep_tid;
eversion_t version;
- uint32_t inc_lock;
bool old_exists;
__u64 old_size;
::decode(acks_wanted, p);
::decode(rep_tid, p);
::decode(version, p);
- ::decode(inc_lock, p);
::decode(old_exists, p);
::decode(old_size, p);
::decode(old_version, p);
::encode(acks_wanted, payload);
::encode(rep_tid, payload);
::encode(version, payload);
- ::encode(inc_lock, payload);
::encode(old_exists, payload);
::encode(old_size, payload);
::encode(old_version, payload);
MOSDSubOp(osd_reqid_t r, pg_t p, pobject_t po, vector<ceph_osd_op>& o, bool noop_, int aw,
- epoch_t mape, tid_t rtid, unsigned il, eversion_t v) :
+ epoch_t mape, tid_t rtid, eversion_t v) :
Message(MSG_OSD_SUBOP),
map_epoch(mape),
reqid(r),
ops(o), noop(noop_),
rep_tid(rtid),
version(v),
- inc_lock(il),
old_exists(false), old_size(0)
{
memset(&peer_stat, 0, sizeof(peer_stat));
goto done; // we have no revision for this request.
}
- // check inc_lock?
- if (op->get_inc_lock() > 0) {
- bufferlist b;
- __u32 cur = 0;
- osd->store->getattr(info.pgid.to_coll(), poid, "inc_lock", b);
- if (b.length()) {
- ::decode(cur, b);
- if (cur > op->get_inc_lock()) {
- dout(10) << " inc_lock " << cur << " > " << op->get_inc_lock()
- << " on " << poid << dendl;
- result = -EINCLOCKED;
- goto done;
- }
- }
- }
-
for (vector<ceph_osd_op>::iterator p = op->ops.begin(); p != op->ops.end(); p++) {
switch (p->op) {
case CEPH_OSD_OP_READ:
vector<ceph_osd_op>& ops, bufferlist& bl,
bool& exists, __u64& size, object_info_t& oi,
eversion_t at_version, SnapContext& snapc,
- __u32 inc_lock, eversion_t trim_to)
+ eversion_t trim_to)
{
bufferlist log_bl;
eversion_t log_version = at_version;
// finish.
oi.version = at_version;
if (exists) {
- if (inc_lock) {
- bufferlist b(sizeof(inc_lock));
- ::encode(inc_lock, b);
- t.setattr(info.pgid.to_coll(), poid, "inc_lock", b);
- }
-
oi.version = at_version;
oi.prior_version = old_version;
oi.last_reqid = reqid;
MOSDSubOp *wr = new MOSDSubOp(repop->op->get_reqid(), info.pgid, poid,
repop->op->ops, repop->noop, acks_wanted,
osd->osdmap->get_epoch(),
- repop->rep_tid, repop->op->get_inc_lock(), repop->at_version);
+ repop->rep_tid, repop->at_version);
wr->old_exists = repop->pinfo->exists;
wr->old_size = repop->pinfo->size;
wr->old_version = repop->pinfo->oi.version;
block_if_wrlocked(op))
return; // op will be handled later, after the object unlocks
- // check inc_lock?
- if (op->get_inc_lock() > 0) {
- bufferlist b;
- osd->store->getattr(info.pgid.to_coll(), poid, "inc_lock", b);
- if (b.length()) {
- __u32 cur = 0;
- ::decode(cur, b);
- if (cur > op->get_inc_lock()) {
- dout(10) << " inc_lock " << cur << " > " << op->get_inc_lock()
- << " on " << poid << dendl;
- osd->reply_op_error(op, -EINCLOCKED);
- return;
- }
- }
- }
-
// balance-reads set?
#if 0
char v;
prepare_transaction(repop->t, op->get_reqid(), poid, op->ops, op->get_data(),
pinfo->exists, pinfo->size, pinfo->oi,
at_version, snapc,
- op->get_inc_lock(), trim_to);
+ trim_to);
}
// keep peer_info up to date
prepare_transaction(t, op->reqid,
op->poid, op->ops, op->get_data(),
op->old_exists, op->old_size, oi, op->version,
- op->snapc, op->inc_lock, op->pg_trim_to);
+ op->snapc, op->pg_trim_to);
}
C_OSD_RepModifyCommit *oncommit = new C_OSD_RepModifyCommit(this, op, ackerosd, info.last_complete);
vector<ceph_osd_op> pull(1);
pull[0].op = CEPH_OSD_OP_PULL;
MOSDSubOp *subop = new MOSDSubOp(rid, info.pgid, poid, pull, false, CEPH_OSD_OP_ACK,
- osd->osdmap->get_epoch(), tid, 0, v);
+ osd->osdmap->get_epoch(), tid, v);
subop->data_subset.swap(data_subset);
// do not include clone_subsets in pull request; we will recalculate this
// when the object is pushed back.
push[0].offset = 0;
push[0].length = size;
MOSDSubOp *subop = new MOSDSubOp(rid, info.pgid, poid, push, false, 0,
- osd->osdmap->get_epoch(), osd->get_tid(), 0, oi.version);
+ osd->osdmap->get_epoch(), osd->get_tid(), oi.version);
subop->data_subset.swap(data_subset);
subop->clone_subsets.swap(clone_subsets);
subop->set_data(bl); // note: claims bl, set length above here!