MCPcopy Create free account
hub / github.com/ceph/ceph / close_session

Method close_session

src/osdc/Objecter.cc:1997–2056  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

1995}
1996
1997void Objecter::close_session(OSDSession *s)
1998{
1999 // rwlock is locked unique
2000
2001 ldout(cct, 10) << "close_session for osd." << s->osd << dendl;
2002 if (s->con) {
2003 s->con->set_priv(NULL);
2004 s->con->mark_down();
2005 logger->inc(l_osdc_osd_session_close);
2006 }
2007 unique_lock sl(s->lock);
2008
2009 std::list<LingerOp*> homeless_lingers;
2010 std::list<CommandOp*> homeless_commands;
2011 std::list<Op*> homeless_ops;
2012
2013 while (!s->linger_ops.empty()) {
2014 auto i = s->linger_ops.begin();
2015 ldout(cct, 10) << " linger_op " << i->first << dendl;
2016 homeless_lingers.push_back(i->second);
2017 _session_linger_op_remove(s, i->second);
2018 }
2019
2020 while (!s->ops.empty()) {
2021 auto i = s->ops.begin();
2022 ldout(cct, 10) << " op " << i->first << dendl;
2023 homeless_ops.push_back(i->second);
2024 _session_op_remove(s, i->second);
2025 }
2026
2027 while (!s->command_ops.empty()) {
2028 auto i = s->command_ops.begin();
2029 ldout(cct, 10) << " command_op " << i->first << dendl;
2030 homeless_commands.push_back(i->second);
2031 _session_command_op_remove(s, i->second);
2032 }
2033
2034 osd_sessions.erase(s->osd);
2035 sl.unlock();
2036 put_session(s);
2037
2038 // Assign any leftover ops to the homeless session
2039 {
2040 unique_lock hsl(homeless_session->lock);
2041 for (auto i = homeless_lingers.begin();
2042 i != homeless_lingers.end(); ++i) {
2043 _session_linger_op_assign(homeless_session, *i);
2044 }
2045 for (auto i = homeless_ops.begin();
2046 i != homeless_ops.end(); ++i) {
2047 _session_op_assign(homeless_session, *i);
2048 }
2049 for (auto i = homeless_commands.begin();
2050 i != homeless_commands.end(); ++i) {
2051 _session_command_op_assign(homeless_session, *i);
2052 }
2053 }
2054

Callers

nothing calls this directly

Calls 11

set_privMethod · 0.80
mark_downMethod · 0.45
incMethod · 0.45
emptyMethod · 0.45
beginMethod · 0.45
push_backMethod · 0.45
eraseMethod · 0.45
unlockMethod · 0.45
endMethod · 0.45
setMethod · 0.45
sizeMethod · 0.45

Tested by

no test coverage detected