libceph: fix pg_temp mapping update
authorSage Weil <sage@newdream.net>
Wed, 28 Sep 2011 17:11:04 +0000 (10:11 -0700)
committerSage Weil <sage@newdream.net>
Wed, 28 Sep 2011 17:13:35 +0000 (10:13 -0700)
commit8adc8b3d780363d5df0dd6ace10336e3d7e331a1
tree18ea04f84f3138561f5a5d09699271b213827f3e
parent782e182e91e97f529a1edb30fdece9f1bef90ecc
libceph: fix pg_temp mapping update

The incremental map updates have a record for each pg_temp mapping that is
to be add/updated (len > 0) or removed (len == 0).  The old code was
written as if the updates were a complete enumeration; that was just wrong.
Update the code to remove 0-length entries and drop the rbtree traversal.

This avoids misdirected (and hung) requests that manifest as server
errors like

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

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