}
bool has_flag(__u32 flag) const { return flags & flag; };
- bool wants_ack() const { return flags & CEPH_OSD_FLAG_ACK; }
- bool wants_ondisk() const { return flags & CEPH_OSD_FLAG_ONDISK; }
- bool wants_onnvram() const { return flags & CEPH_OSD_FLAG_ONNVRAM; }
-
- void set_want_ack(bool b) { flags |= CEPH_OSD_FLAG_ACK; }
- void set_want_onnvram(bool b) { flags |= CEPH_OSD_FLAG_ONNVRAM; }
- void set_want_ondisk(bool b) { flags |= CEPH_OSD_FLAG_ONDISK; }
bool is_retry_attempt() const { return flags & CEPH_OSD_FLAG_RETRY; }
void set_retry_attempt(unsigned a) {
const MOSDOp *m = static_cast<const MOSDOp*>(pwop->op->get_req());
assert(m != NULL);
- if (m->wants_ondisk() && !pwop->sent_disk) {
+ if (!pwop->sent_reply) {
// send commit.
MOSDOpReply *reply = pwop->ctx->reply;
if (reply)
reply->add_flags(CEPH_OSD_FLAG_ACK | CEPH_OSD_FLAG_ONDISK);
dout(10) << " sending commit on " << pwop << " " << reply << dendl;
osd->send_message_osd_client(reply, m->get_connection());
- pwop->sent_disk = true;
+ pwop->sent_reply = true;
pwop->ctx->op->mark_commit_sent();
- } else if (m->wants_ack() && !pwop->sent_ack && !pwop->sent_disk) {
- // send ack
- MOSDOpReply *reply = pwop->ctx->reply;
- if (reply)
- pwop->ctx->reply = NULL;
- else {
- reply = new MOSDOpReply(m, r, get_osdmap()->get_epoch(), 0, true);
- reply->set_reply_versions(eversion_t(), pwop->user_version);
- }
- reply->add_flags(CEPH_OSD_FLAG_ACK);
- dout(10) << " sending ack on " << pwop << " " << reply << dendl;
- osd->send_message_osd_client(reply, m->get_connection());
- pwop->sent_ack = true;
}
delete pwop->ctx;
log_op_stats(
ctx);
- if (m && (m->wants_ondisk() || m->wants_ack()) && !ctx->sent_reply) {
+ if (m && !ctx->sent_reply) {
MOSDOpReply *reply = ctx->reply;
if (reply)
ctx->reply = NULL;
if (m)
dout(10) << "eval_repop " << *repop
- << " wants=" << (m->wants_ack() ? "a":"") << (m->wants_ondisk() ? "d":"")
<< (repop->rep_done ? " DONE" : "")
<< dendl;
else
ceph_tid_t objecter_tid;
vector<OSDOp> &ops;
version_t user_version;
- bool sent_disk;
- bool sent_ack;
+ bool sent_reply;
utime_t mtime;
bool canceled;
osd_reqid_t reqid;
ProxyWriteOp(OpRequestRef _op, hobject_t oid, vector<OSDOp>& _ops, osd_reqid_t _reqid)
: ctx(NULL), op(_op), soid(oid),
objecter_tid(0), ops(_ops),
- user_version(0), sent_disk(false),
- sent_ack(false), canceled(false),
+ user_version(0), sent_reply(false),
+ canceled(false),
reqid(_reqid) { }
};
typedef ceph::shared_ptr<ProxyWriteOp> ProxyWriteOpRef;
int flags = op->target.flags;
flags |= CEPH_OSD_FLAG_KNOWN_REDIR;
- if (op->onfinish)
- flags |= CEPH_OSD_FLAG_ONDISK;
+
+ // Nothing checks this any longer, but needed for compatibility with
+ // pre-luminous osds
+ flags |= CEPH_OSD_FLAG_ONDISK;
if (!honor_osdmap_full)
flags |= CEPH_OSD_FLAG_FULL_FORCE;