class MOSDOpReply : public Message {
- static const int HEAD_VERSION = 4;
+ static const int HEAD_VERSION = 5;
static const int COMPAT_VERSION = 2;
object_t oid;
int64_t flags;
int32_t result;
eversion_t replay_version;
+ version_t user_version;
epoch_t osdmap_epoch;
int32_t retry_attempt;
int get_result() const { return result; }
eversion_t get_replay_version() { return replay_version; }
+ version_t get_user_version() { return user_version; }
void set_result(int r) { result = r; }
void set_replay_version(eversion_t v) { replay_version = v; }
+ void set_user_version(version_t v) { user_version = v; }
void add_flags(int f) { flags |= f; }
pgid = req->pgid;
osdmap_epoch = e;
replay_version = req->reassert_version;
+ user_version = 0;
retry_attempt = req->get_retry_attempt();
// zero out ops payload_len
for (unsigned i = 0; i < num_ops; i++)
::encode(ops[i].rval, payload);
+
+ ::encode(user_version, payload);
}
}
virtual void decode_payload() {
result = head.result;
flags = head.flags;
replay_version = head.reassert_version;
+ user_version = replay_version.version;
osdmap_epoch = head.osdmap_epoch;
retry_attempt = -1;
} else {
OSDOp::split_osd_op_vector_out_data(ops, data);
}
+
+ if (header.version >= 5)
+ ::decode(user_version, p);
+ else
+ user_version = replay_version.version;
}
}