return;
}
+ // do i need a backlog due to mis-trimmed log?
+ if (info.last_complete < log.tail && !log.backlog) {
+ dout(10) << "must generate backlog because my last_complete " << info.last_complete
+ << " < log.tail " << log.tail << " and no backlog" << dendl;
+ osd->queue_generate_backlog(this);
+ return;
+ }
+ for (unsigned i=0; i<acting.size(); i++) {
+ int o = acting[i];
+ Info& pi = peer_info[o];
+ if (pi.last_complete < pi.log_tail && !pi.log_backlog &&
+ pi.last_complete < log.tail && !log.backlog) {
+ dout(10) << "must generate backlog for replica peer osd" << o
+ << " who has a last_complete " << pi.last_complete
+ << " < their log.tail " << pi.log_tail << " and no backlog" << dendl;
+ osd->queue_generate_backlog(this);
+ return;
+ }
+ }
+
// do i need a backlog for an up peer excluded from acting?
bool need_backlog = false;
for (unsigned i=0; i<up.size(); i++) {
if (need_backlog)
osd->queue_generate_backlog(this);
- // do we need to wait for our backlog?
- if (info.last_complete < log.tail && !log.backlog)
- return;
-
/** COLLECT MISSING+LOG FROM PEERS **********/
/*