PG: Added a const spg_t member to the PG class

The const spg_t member is been insantiated from constructor
and now get_pgid() can reference this to return a spg_t instance
without the need of pg_info (thus not requiring to acquire pg_lock).

Signed-off-by: Somnath Roy <somnath.roy@sandisk.com>
This commit is contained in:
Somnath Roy 2014-06-10 18:10:30 -07:00
parent ecbb0056f9
commit 0bbeeee3b4
2 changed files with 4 additions and 2 deletions

View File

@ -194,7 +194,8 @@ PG::PG(OSDService *o, OSDMapRef curmap,
finish_sync_event(NULL),
scrub_after_recovery(false),
active_pushes(0),
recovery_state(this)
recovery_state(this),
pg_id(p)
{
#ifdef PG_DEBUG_REFS
osd->add_pgid(p, this);

View File

@ -1877,9 +1877,10 @@ public:
// Prevent copying
PG(const PG& rhs);
PG& operator=(const PG& rhs);
const spg_t pg_id;
public:
spg_t get_pgid() const { return info.pgid; }
const spg_t& get_pgid() const { return pg_id; }
int get_nrep() const { return acting.size(); }
void init_primary_up_acting(