libceph: fix pg_temp mapping calculation
authorSage Weil <sage@newdream.net>
Wed, 28 Sep 2011 17:08:27 +0000 (10:08 -0700)
committerSage Weil <sage@newdream.net>
Wed, 28 Sep 2011 17:13:31 +0000 (10:13 -0700)
commit782e182e91e97f529a1edb30fdece9f1bef90ecc
tree1a7834111ce59e6cc9136e36e9ad846b0250d5d2
parent935b639a049053d0ccbcf7422f2f9cd221642f58
libceph: fix pg_temp mapping calculation

We need to apply the modulo pg_num calculation before looking up a pgid in
the pg_temp mapping rbtree.  This fixes pg_temp mappings, and fixes
(some) misdirected requests that result in messages like

[WRN] client4104 10.0.1.219:0/275025290 misdirected client4104.1:129 0.1 to osd0 not [1,0] in e11/11

on the server and stall make the client block without getting a reply (at
least until the pg_temp mapping goes way, but that can take a long long
time).

Reorder calc_pg_raw() a bit to make more sense.

Signed-off-by: Sage Weil <sage@newdream.net>
net/ceph/osdmap.c