Remove PG "peered" state
parent
36a7dd3671
commit
2c8241b7db
|
@ -261,7 +261,7 @@ const etcd_tree = {
|
||||||
/* <pool_id>: {
|
/* <pool_id>: {
|
||||||
<pg_id>: {
|
<pg_id>: {
|
||||||
primary: osd_num_t,
|
primary: osd_num_t,
|
||||||
state: ("starting"|"peering"|"peered"|"incomplete"|"active"|"repeering"|"stopping"|"offline"|
|
state: ("starting"|"peering"|"incomplete"|"active"|"repeering"|"stopping"|"offline"|
|
||||||
"degraded"|"has_incomplete"|"has_degraded"|"has_misplaced"|"has_unclean"|
|
"degraded"|"has_incomplete"|"has_degraded"|"has_misplaced"|"has_unclean"|
|
||||||
"has_invalid"|"left_on_dead")[],
|
"has_invalid"|"left_on_dead")[],
|
||||||
}
|
}
|
||||||
|
|
|
@ -683,7 +683,7 @@ void osd_t::apply_pg_config()
|
||||||
auto vec_all_peers = std::vector<osd_num_t>(all_peers.begin(), all_peers.end());
|
auto vec_all_peers = std::vector<osd_num_t>(all_peers.begin(), all_peers.end());
|
||||||
if (currently_taken)
|
if (currently_taken)
|
||||||
{
|
{
|
||||||
if (pg_it->second.state & (PG_ACTIVE | PG_INCOMPLETE | PG_PEERING | PG_REPEERING | PG_PEERED))
|
if (pg_it->second.state & (PG_ACTIVE | PG_INCOMPLETE | PG_PEERING | PG_REPEERING))
|
||||||
{
|
{
|
||||||
if (pg_it->second.target_set == pg_cfg.target_set &&
|
if (pg_it->second.target_set == pg_cfg.target_set &&
|
||||||
pg_it->second.target_history == pg_cfg.target_history &&
|
pg_it->second.target_history == pg_cfg.target_history &&
|
||||||
|
@ -963,13 +963,6 @@ void osd_t::report_pg_states()
|
||||||
}
|
}
|
||||||
this->pgs.erase(pg_it);
|
this->pgs.erase(pg_it);
|
||||||
}
|
}
|
||||||
else if (pg_it->second.state & PG_PEERED)
|
|
||||||
{
|
|
||||||
// Activate PG after PG PEERED state is reported along with history
|
|
||||||
// (if the state wasn't changed again)
|
|
||||||
pg_it->second.state = pg_it->second.state & ~PG_PEERED | PG_ACTIVE;
|
|
||||||
report_pg_state(pg_it->second);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// Push other PG state updates, if any
|
// Push other PG state updates, if any
|
||||||
|
|
|
@ -50,10 +50,6 @@ void osd_t::handle_peers()
|
||||||
still = true;
|
still = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if (p.second.state & PG_PEERED)
|
|
||||||
{
|
|
||||||
still = true;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
if (!still)
|
if (!still)
|
||||||
{
|
{
|
||||||
|
@ -74,10 +70,6 @@ void osd_t::handle_peers()
|
||||||
}
|
}
|
||||||
still = true;
|
still = true;
|
||||||
}
|
}
|
||||||
else if (p.second.state & PG_PEERED)
|
|
||||||
{
|
|
||||||
still = true;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
if (!still)
|
if (!still)
|
||||||
{
|
{
|
||||||
|
@ -100,7 +92,7 @@ void osd_t::repeer_pgs(osd_num_t peer_osd)
|
||||||
{
|
{
|
||||||
auto & pg = p.second;
|
auto & pg = p.second;
|
||||||
bool repeer = false;
|
bool repeer = false;
|
||||||
if (pg.state & (PG_PEERING | PG_PEERED | PG_ACTIVE | PG_INCOMPLETE))
|
if (pg.state & (PG_PEERING | PG_ACTIVE | PG_INCOMPLETE))
|
||||||
{
|
{
|
||||||
for (osd_num_t pg_osd: pg.all_peers)
|
for (osd_num_t pg_osd: pg.all_peers)
|
||||||
{
|
{
|
||||||
|
|
|
@ -88,13 +88,9 @@ void pg_obj_state_check_t::walk()
|
||||||
{
|
{
|
||||||
// Activate as degraded
|
// Activate as degraded
|
||||||
// Current OSD set will be added into target_history on first write
|
// Current OSD set will be added into target_history on first write
|
||||||
pg->state |= PG_DEGRADED | PG_PEERED;
|
pg->state |= PG_DEGRADED;
|
||||||
}
|
}
|
||||||
else
|
|
||||||
{
|
|
||||||
// Just activate
|
|
||||||
pg->state |= PG_ACTIVE;
|
pg->state |= PG_ACTIVE;
|
||||||
}
|
|
||||||
if (pg->state == PG_ACTIVE && pg->cur_peers.size() < pg->all_peers.size())
|
if (pg->state == PG_ACTIVE && pg->cur_peers.size() < pg->all_peers.size())
|
||||||
{
|
{
|
||||||
pg->state |= PG_LEFT_ON_DEAD;
|
pg->state |= PG_LEFT_ON_DEAD;
|
||||||
|
@ -460,11 +456,10 @@ void pg_t::calc_object_states(int log_level)
|
||||||
void pg_t::print_state()
|
void pg_t::print_state()
|
||||||
{
|
{
|
||||||
printf(
|
printf(
|
||||||
"[PG %u/%u] is %s%s%s%s%s%s%s%s%s%s%s%s%s%s%s (%lu objects)\n", pool_id, pg_num,
|
"[PG %u/%u] is %s%s%s%s%s%s%s%s%s%s%s%s%s%s (%lu objects)\n", pool_id, pg_num,
|
||||||
(state & PG_STARTING) ? "starting" : "",
|
(state & PG_STARTING) ? "starting" : "",
|
||||||
(state & PG_OFFLINE) ? "offline" : "",
|
(state & PG_OFFLINE) ? "offline" : "",
|
||||||
(state & PG_PEERING) ? "peering" : "",
|
(state & PG_PEERING) ? "peering" : "",
|
||||||
(state & PG_PEERED) ? "peered" : "",
|
|
||||||
(state & PG_INCOMPLETE) ? "incomplete" : "",
|
(state & PG_INCOMPLETE) ? "incomplete" : "",
|
||||||
(state & PG_ACTIVE) ? "active" : "",
|
(state & PG_ACTIVE) ? "active" : "",
|
||||||
(state & PG_REPEERING) ? "repeering" : "",
|
(state & PG_REPEERING) ? "repeering" : "",
|
||||||
|
|
|
@ -3,12 +3,11 @@
|
||||||
|
|
||||||
#include "pg_states.h"
|
#include "pg_states.h"
|
||||||
|
|
||||||
const int pg_state_bit_count = 16;
|
const int pg_state_bit_count = 14;
|
||||||
|
|
||||||
const int pg_state_bits[16] = {
|
const int pg_state_bits[14] = {
|
||||||
PG_STARTING,
|
PG_STARTING,
|
||||||
PG_PEERING,
|
PG_PEERING,
|
||||||
PG_PEERED,
|
|
||||||
PG_INCOMPLETE,
|
PG_INCOMPLETE,
|
||||||
PG_ACTIVE,
|
PG_ACTIVE,
|
||||||
PG_REPEERING,
|
PG_REPEERING,
|
||||||
|
@ -23,10 +22,9 @@ const int pg_state_bits[16] = {
|
||||||
PG_LEFT_ON_DEAD,
|
PG_LEFT_ON_DEAD,
|
||||||
};
|
};
|
||||||
|
|
||||||
const char *pg_state_names[16] = {
|
const char *pg_state_names[14] = {
|
||||||
"starting",
|
"starting",
|
||||||
"peering",
|
"peering",
|
||||||
"peered",
|
|
||||||
"incomplete",
|
"incomplete",
|
||||||
"active",
|
"active",
|
||||||
"repeering",
|
"repeering",
|
||||||
|
|
|
@ -4,27 +4,25 @@
|
||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
// Placement group states
|
// Placement group states
|
||||||
// STARTING -> [acquire lock] -> PEERING -> PEERED
|
// STARTING -> [acquire lock] -> PEERING -> INCOMPLETE|ACTIVE
|
||||||
// PEERED -> [report history if required!] -> INCOMPLETE|ACTIVE
|
|
||||||
// ACTIVE -> REPEERING -> PEERING
|
// ACTIVE -> REPEERING -> PEERING
|
||||||
// ACTIVE -> STOPPING -> OFFLINE -> [release lock]
|
// ACTIVE -> STOPPING -> OFFLINE -> [release lock]
|
||||||
// Exactly one of these:
|
// Exactly one of these:
|
||||||
#define PG_STARTING (1<<0)
|
#define PG_STARTING (1<<0)
|
||||||
#define PG_PEERING (1<<1)
|
#define PG_PEERING (1<<1)
|
||||||
#define PG_PEERED (1<<2)
|
#define PG_INCOMPLETE (1<<2)
|
||||||
#define PG_INCOMPLETE (1<<3)
|
#define PG_ACTIVE (1<<3)
|
||||||
#define PG_ACTIVE (1<<4)
|
#define PG_REPEERING (1<<4)
|
||||||
#define PG_REPEERING (1<<5)
|
#define PG_STOPPING (1<<5)
|
||||||
#define PG_STOPPING (1<<6)
|
#define PG_OFFLINE (1<<6)
|
||||||
#define PG_OFFLINE (1<<7)
|
|
||||||
// Plus any of these:
|
// Plus any of these:
|
||||||
#define PG_DEGRADED (1<<8)
|
#define PG_DEGRADED (1<<7)
|
||||||
#define PG_HAS_INCOMPLETE (1<<9)
|
#define PG_HAS_INCOMPLETE (1<<8)
|
||||||
#define PG_HAS_DEGRADED (1<<10)
|
#define PG_HAS_DEGRADED (1<<9)
|
||||||
#define PG_HAS_MISPLACED (1<<11)
|
#define PG_HAS_MISPLACED (1<<10)
|
||||||
#define PG_HAS_UNCLEAN (1<<12)
|
#define PG_HAS_UNCLEAN (1<<11)
|
||||||
#define PG_HAS_INVALID (1<<13)
|
#define PG_HAS_INVALID (1<<12)
|
||||||
#define PG_LEFT_ON_DEAD (1<<14)
|
#define PG_LEFT_ON_DEAD (1<<13)
|
||||||
|
|
||||||
// Lower bits that represent object role (EC 0/1/2... or always 0 with replication)
|
// Lower bits that represent object role (EC 0/1/2... or always 0 with replication)
|
||||||
// 12 bits is a safe default that doesn't depend on pg_stripe_size or pg_block_size
|
// 12 bits is a safe default that doesn't depend on pg_stripe_size or pg_block_size
|
||||||
|
|
Loading…
Reference in New Issue