]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
osd/OSDMap: pass pps value out from _pg_to_osds
authorSage Weil <sage@inktank.com>
Tue, 11 Feb 2014 17:31:20 +0000 (09:31 -0800)
committerSage Weil <sage@inktank.com>
Wed, 12 Feb 2014 21:38:12 +0000 (13:38 -0800)
The primary affinity code needs a seed to determine it's pseudo-random
behavior.  Pass pps (optionally) out of _pg_to_osds() for this purpose.

Signed-off-by: Sage Weil <sage@inktank.com>
src/osd/OSDMap.cc
src/osd/OSDMap.h

index d48347facf14c8833813f28f7719e98fb614deaa..4f621c4b0c44dca5b0495bf5c682901670187151 100644 (file)
@@ -1351,7 +1351,8 @@ void OSDMap::_remove_nonexistent_osds(const pg_pool_t& pool,
 }
 
 int OSDMap::_pg_to_osds(const pg_pool_t& pool, pg_t pg,
-                        vector<int> *osds, int *primary) const
+                        vector<int> *osds, int *primary,
+                       ps_t *ppps) const
 {
   // map to osds[]
   ps_t pps = pool.raw_pg_to_pps(pg);  // placement ps
@@ -1365,6 +1366,8 @@ int OSDMap::_pg_to_osds(const pg_pool_t& pool, pg_t pg,
   _remove_nonexistent_osds(pool, *osds);
 
   *primary = (osds->empty() ? -1 : osds->front());
+  if (ppps)
+    *ppps = pps;
 
   return osds->size();
 }
index d2e0aaee3415078274d84948af0565e7867b7599..4b4481c88d1ec1b97c70b016ad946ccac325e097 100644 (file)
@@ -555,7 +555,8 @@ public:
 private:
   /// pg -> (raw osd list)
   int _pg_to_osds(const pg_pool_t& pool, pg_t pg,
-                  vector<int> *osds, int *primary) const;
+                  vector<int> *osds, int *primary,
+                 ps_t *ppps) const;
   void _remove_nonexistent_osds(const pg_pool_t& pool, vector<int>& osds) const;
 
   /// pg -> (up osd list)