Reset PG state when stopping them
parent
09b3e4e789
commit
8bdd6d8d78
|
@ -160,6 +160,7 @@ class osd_t
|
||||||
void submit_list_subop(osd_num_t role_osd, pg_peering_state_t *ps);
|
void submit_list_subop(osd_num_t role_osd, pg_peering_state_t *ps);
|
||||||
void discard_list_subop(osd_op_t *list_op);
|
void discard_list_subop(osd_op_t *list_op);
|
||||||
bool stop_pg(pg_t & pg);
|
bool stop_pg(pg_t & pg);
|
||||||
|
void reset_pg(pg_t & pg);
|
||||||
void finish_stop_pg(pg_t & pg);
|
void finish_stop_pg(pg_t & pg);
|
||||||
|
|
||||||
// flushing, recovery and backfill
|
// flushing, recovery and backfill
|
||||||
|
|
|
@ -98,13 +98,9 @@ void osd_t::repeer_pgs(osd_num_t peer_osd)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Repeer on each connect/disconnect peer event
|
// Reset PG state (when peering or stopping)
|
||||||
void osd_t::start_pg_peering(pg_t & pg)
|
void osd_t::reset_pg(pg_t & pg)
|
||||||
{
|
{
|
||||||
pg.state = PG_PEERING;
|
|
||||||
this->peering_state |= OSD_PEERING_PGS;
|
|
||||||
report_pg_state(pg);
|
|
||||||
// Reset PG state
|
|
||||||
pg.cur_peers.clear();
|
pg.cur_peers.clear();
|
||||||
pg.state_dict.clear();
|
pg.state_dict.clear();
|
||||||
incomplete_objects -= pg.incomplete_objects.size();
|
incomplete_objects -= pg.incomplete_objects.size();
|
||||||
|
@ -135,6 +131,15 @@ void osd_t::start_pg_peering(pg_t & pg)
|
||||||
it++;
|
it++;
|
||||||
}
|
}
|
||||||
dirty_pgs.erase({ .pool_id = pg.pool_id, .pg_num = pg.pg_num });
|
dirty_pgs.erase({ .pool_id = pg.pool_id, .pg_num = pg.pg_num });
|
||||||
|
}
|
||||||
|
|
||||||
|
// Repeer on each connect/disconnect peer event
|
||||||
|
void osd_t::start_pg_peering(pg_t & pg)
|
||||||
|
{
|
||||||
|
pg.state = PG_PEERING;
|
||||||
|
this->peering_state |= OSD_PEERING_PGS;
|
||||||
|
reset_pg(pg);
|
||||||
|
report_pg_state(pg);
|
||||||
// Drop connections of clients who have this PG in dirty_pgs
|
// Drop connections of clients who have this PG in dirty_pgs
|
||||||
if (immediate_commit != IMMEDIATE_ALL)
|
if (immediate_commit != IMMEDIATE_ALL)
|
||||||
{
|
{
|
||||||
|
@ -494,6 +499,7 @@ bool osd_t::stop_pg(pg_t & pg)
|
||||||
void osd_t::finish_stop_pg(pg_t & pg)
|
void osd_t::finish_stop_pg(pg_t & pg)
|
||||||
{
|
{
|
||||||
pg.state = PG_OFFLINE;
|
pg.state = PG_OFFLINE;
|
||||||
|
reset_pg(pg);
|
||||||
report_pg_state(pg);
|
report_pg_state(pg);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue