Report pg/history from OSD on every degraded activation
Required to prevent data loss due to activation of an OSD with older data when PG OSD set change doesn't occur. I.e. fixes the simplest case: - Run 2 OSDs with 1 PG - Start writing into the PG - Stop OSD 2 - Stop OSD 1 - Start OSD 2 After this change the PG will refuse to start after the last step.
This commit is contained in:
+17
-13
@@ -4,23 +4,27 @@
|
||||
#pragma once
|
||||
|
||||
// Placement group states
|
||||
// STARTING -> [acquire lock] -> PEERING -> INCOMPLETE|ACTIVE -> STOPPING -> OFFLINE -> [release lock]
|
||||
// STARTING -> [acquire lock] -> PEERING -> PEERED
|
||||
// PEERED -> [report history if required!] -> INCOMPLETE|ACTIVE
|
||||
// ACTIVE -> REPEERING -> PEERING
|
||||
// ACTIVE -> STOPPING -> OFFLINE -> [release lock]
|
||||
// Exactly one of these:
|
||||
#define PG_STARTING (1<<0)
|
||||
#define PG_PEERING (1<<1)
|
||||
#define PG_INCOMPLETE (1<<2)
|
||||
#define PG_ACTIVE (1<<3)
|
||||
#define PG_REPEERING (1<<4)
|
||||
#define PG_STOPPING (1<<5)
|
||||
#define PG_OFFLINE (1<<6)
|
||||
#define PG_PEERED (1<<2)
|
||||
#define PG_INCOMPLETE (1<<3)
|
||||
#define PG_ACTIVE (1<<4)
|
||||
#define PG_REPEERING (1<<5)
|
||||
#define PG_STOPPING (1<<6)
|
||||
#define PG_OFFLINE (1<<7)
|
||||
// Plus any of these:
|
||||
#define PG_DEGRADED (1<<7)
|
||||
#define PG_HAS_INCOMPLETE (1<<8)
|
||||
#define PG_HAS_DEGRADED (1<<9)
|
||||
#define PG_HAS_MISPLACED (1<<10)
|
||||
#define PG_HAS_UNCLEAN (1<<11)
|
||||
#define PG_HAS_INVALID (1<<12)
|
||||
#define PG_LEFT_ON_DEAD (1<<13)
|
||||
#define PG_DEGRADED (1<<8)
|
||||
#define PG_HAS_INCOMPLETE (1<<9)
|
||||
#define PG_HAS_DEGRADED (1<<10)
|
||||
#define PG_HAS_MISPLACED (1<<11)
|
||||
#define PG_HAS_UNCLEAN (1<<12)
|
||||
#define PG_HAS_INVALID (1<<13)
|
||||
#define PG_LEFT_ON_DEAD (1<<14)
|
||||
|
||||
// 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
|
||||
|
||||
Reference in New Issue
Block a user