All paths to pipe shutdown should have cleared the con->pipe reference
already. Assert as much.
Also, do it under pipe_lock!
Signed-off-by: Sage Weil <sage@inktank.com>
ldout(cct,10) << "reaper reaping pipe " << p << " " << p->get_peer_addr() << dendl;
p->pipe_lock.Lock();
p->discard_out_queue();
+ if (p->connection_state) {
+ // mark_down, mark_down_all, or fault() should have done this, but make sure!
+ bool cleared = p->connection_state->clear_pipe(p);
+ assert(!cleared);
+ }
p->pipe_lock.Unlock();
p->unregister_pipe();
assert(pipes.count(p));
if (p->sd >= 0)
::close(p->sd);
ldout(cct,10) << "reaper reaped pipe " << p << " " << p->get_peer_addr() << dendl;
- if (p->connection_state)
- p->connection_state->clear_pipe(p);
p->put();
ldout(cct,10) << "reaper deleted pipe " << p << dendl;
}