const PushOp &op,
RecoveryMessages *m)
{
+ ostringstream ss;
+ if (get_parent()->check_failsafe_full(ss)) {
+ dout(10) << __func__ << " Out of space (failsafe) processing push request: " << ss.str() << dendl;
+ ceph_abort();
+ }
bool oneshot = op.before_progress.first && op.after_progress.data_complete;
ghobject_t tobj;
virtual LogClientTemp clog_error() = 0;
+ virtual bool check_failsafe_full(ostream &ss) = 0;
+
virtual ~Listener() {}
};
Listener *parent;
return r;
}
+bool PrimaryLogPG::check_failsafe_full(ostream &ss) {
+ return osd->check_failsafe_full(ss);
+}
+
void intrusive_ptr_add_ref(PrimaryLogPG *pg) { pg->get("intptr"); }
void intrusive_ptr_release(PrimaryLogPG *pg) { pg->put("intptr"); }
void on_flushed() override;
void on_removal(ObjectStore::Transaction *t) override;
void on_shutdown() override;
+ bool check_failsafe_full(ostream &ss) override;
// attr cache handling
void setattr_maybe_cache(
vector<PushReplyOp> replies;
ObjectStore::Transaction t;
+ ostringstream ss;
+ if (get_parent()->check_failsafe_full(ss)) {
+ dout(10) << __func__ << " Out of space (failsafe) processing push request: " << ss.str() << dendl;
+ ceph_abort();
+ }
for (vector<PushOp>::const_iterator i = m->pushes.begin();
i != m->pushes.end();
++i) {
op->mark_started();
vector<PullOp> replies(1);
+
+ ostringstream ss;
+ if (get_parent()->check_failsafe_full(ss)) {
+ dout(10) << __func__ << " Out of space (failsafe) processing pull response (push): " << ss.str() << dendl;
+ ceph_abort();
+ }
+
ObjectStore::Transaction t;
list<pull_complete_info> to_continue;
for (vector<PushOp>::const_iterator i = m->pushes.begin();