I think I assumed no_reply() was releasing the references, but it is
not. Which is better, since send_reply() doesn't either. Fix the leaks
by dropping the message ref explicitly.
Signed-off-by: Sage Weil <sage@inktank.com>
Reviewed-by: Joao Eduardo Luis <joao.luis@inktank.com>
<< m->get_orig_source_inst() << "\n";
failure_info_t& fi = failure_info[target_osd];
MOSDFailure *old = fi.add_report(reporter, failed_since, m);
- if (old)
+ if (old) {
mon->no_reply(old);
+ old->put();
+ }
return check_failure(now, target_osd, fi);
} else {
fi.cancel_report(reporter);
while (!ls.empty()) {
mon->no_reply(ls.front());
+ ls.front()->put();
ls.pop_front();
}
if (fi.reporters.empty()) {
dout(10) << " no failure_info for osd." << target_osd << dendl;
}
mon->no_reply(m);
+ m->put();
}
return false;