We recognized EAGAIN, ECANCELED, and success only.
Signed-off-by: Sage Weil <sage@inktank.com>
Reviewed-by: Joao Luis <joao.luis@inktank.com>
C_Updated(MDSMonitor *a, MMDSBeacon *c) :
mm(a), m(c) {}
void finish(int r) {
- if (r == -ECANCELED) {
- if (m)
- m->put();
- return;
- }
if (r >= 0)
mm->_updated(m); // success
+ else if (r == -ECANCELED)
+ m->put();
else
mm->dispatch((PaxosServiceMessage*)m); // try again
}
void finish(int r) {
if (r >= 0)
mon->reply_command(m, rc, rs, rdata, version);
- else if (r == -ECANCELED) {
+ else if (r == -ECANCELED)
m->put();
- } else
+ else if (r == -EAGAIN)
mon->_ms_dispatch(m);
+ else
+ assert(0 == "bad C_Command return value");
}
};
public:
C_RetryMessage(Monitor *m, Message *ms) : mon(m), msg(ms) {}
void finish(int r) {
- if (r == -ECANCELED) {
- msg->put();
- } else
+ if (r == -EAGAIN || r >= 0)
mon->_ms_dispatch(msg);
+ else if (r == -ECANCELED)
+ msg->put();
+ else
+ assert(0 == "bad C_RetryMessage return value");
}
};
cmon->_booted(m, logit);
else if (r == -ECANCELED)
m->put();
- else
+ else if (r == -EAGAIN)
cmon->dispatch((PaxosServiceMessage*)m);
+ else
+ assert(0 == "bad C_Booted return value");
}
};
epoch_t e;
C_ReplyMap(OSDMonitor *o, PaxosServiceMessage *mm, epoch_t ee) : osdmon(o), m(mm), e(ee) {}
void finish(int r) {
- if (r >= 0) {
+ if (r >= 0)
osdmon->_reply_map(m, e);
- } else if (r == -ECANCELED) {
+ else if (r == -ECANCELED)
m->put();
- } else {
+ else if (r == -EAGAIN)
osdmon->dispatch(m);
- }
+ else
+ assert(0 == "bad C_ReplyMap return value");
}
};
struct C_PoolOp : public Context {
reply_data = *rd;
}
void finish(int r) {
- if (r >= 0) {
+ if (r >= 0)
osdmon->_pool_op_reply(m, replyCode, epoch, &reply_data);
- } else if (r == -ECANCELED) {
+ else if (r == -ECANCELED)
m->put();
- } else {
+ else if (r == -EAGAIN)
osdmon->dispatch(m);
- }
+ else
+ assert(0 == "bad C_PoolOp return value");
}
};
} else if (r == -ECANCELED) {
req->put();
ack->put();
- } else {
+ } else if (r == -EAGAIN) {
+ pgmon->dispatch(req);
ack->put();
- dispatch(req);
+ } else {
+ assert(0 == "bad C_Stats return value");
}
}
};