ceph: fix incremental osdmap pg_temp decoding bug
authorSage Weil <sage@newdream.net>
Tue, 22 Dec 2009 00:02:37 +0000 (16:02 -0800)
committerSage Weil <sage@newdream.net>
Tue, 22 Dec 2009 00:40:00 +0000 (16:40 -0800)
An incremental pg_temp wasn't being decoded properly (wrong bound on
for loop).

Also remove unused local variable, while we're at it.

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

index a9416308de6f32d7c9a8c25fc72f10daeaa964ab..0dbd606e21c4fa34c502ade1e667c5a4876a47ab 100644 (file)
@@ -538,7 +538,6 @@ struct ceph_osdmap *osdmap_apply_incremental(void **p, void *end,
                                             struct ceph_osdmap *map,
                                             struct ceph_messenger *msgr)
 {
-       struct ceph_osdmap *newmap = map;
        struct crush_map *newcrush = NULL;
        struct ceph_fsid fsid;
        u32 epoch = 0;
@@ -701,7 +700,7 @@ struct ceph_osdmap *osdmap_apply_incremental(void **p, void *end,
                        }
                        pg->pgid = pgid;
                        pg->len = pglen;
-                       for (j = 0; j < len; j++)
+                       for (j = 0; j < pglen; j++)
                                pg->osds[j] = ceph_decode_32(p);
                        err = __insert_pg_mapping(pg, &map->pg_temp);
                        if (err)