From: Sage Weil Date: Thu, 5 May 2011 23:08:58 +0000 (-0700) Subject: osdmap: fix temp osd pg mapping X-Git-Tag: v0.28~75^2 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=dc9be200064e09a2835852d1dc7d1e3de6a9bd7a;p=ceph.git osdmap: fix temp osd pg mapping If you feed in a raw pg (full precision) you should get the same mapping out as when you plug in the effective/reduced precision pg. The raw_to_temp_osds() wasn't doing that, which gave you results like flak:src 04:01 PM $ ./ceph pg map 0.4 2011-05-05 16:01:18.524051 mon <- [pg,map,0.4] 2011-05-05 16:01:18.524987 mon2 -> 'osdmap e11 pg 0.4 (0.4) -> up [1,0] acting [0]' (0) flak:src 04:01 PM $ ./ceph pg map 0.7ed4 2011-05-05 16:01:21.755490 mon <- [pg,map,0.7ed4] 2011-05-05 16:01:21.755996 mon1 -> 'osdmap e11 pg 0.7ed4 (0.4) -> up [1,0] acting [1,0]' (0) The objecter was feeding in raw pgs, so this was sending requests to the wrong nodes. Signed-off-by: Sage Weil --- diff --git a/src/osd/OSDMap.h b/src/osd/OSDMap.h index d291919ccfab..254bd31efb72 100644 --- a/src/osd/OSDMap.h +++ b/src/osd/OSDMap.h @@ -843,6 +843,7 @@ private: } bool raw_to_temp_osds(pg_t pg, vector& raw, vector& temp) { + pg = raw_pg_to_pg(pg); map >::iterator p = pg_temp.find(pg); if (p != pg_temp.end()) { temp.clear();