]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
kclient: fix osd writes
authorSage Weil <sage@newdream.net>
Fri, 23 Jan 2009 20:52:19 +0000 (12:52 -0800)
committerSage Weil <sage@newdream.net>
Fri, 23 Jan 2009 20:52:19 +0000 (12:52 -0800)
Fixes commit 9664adfcb293c18fa69febad550f6b98b9d2feb5.

src/kernel/osd_client.c

index 248b29147409369db9b4710c7c691b238e75ab26..888a80f9b496c541a4139ad20c1fbb8b5d8de34a 100644 (file)
@@ -272,11 +272,15 @@ static int map_osds(struct ceph_osd_client *osdc,
                if (ceph_osd_is_up(osdc->osdmap, osds[i]))
                        osds[j++] = osds[i];
        num = j;
+       dout(20, "map_osds req %p maps to %d osds\n", req, num);
 
        /* same? */
        if (num == req->r_pg_num_osds &&
-           memcpy(osds, req->r_pg_osds, sizeof(osds[0]) * num) == 0)
+           memcmp(osds, req->r_pg_osds, sizeof(osds[0]) * num) == 0)
                return 0;
+
+       memcpy(req->r_pg_osds, osds, sizeof(osds[0]) * num);
+       req->r_pg_num_osds = num;
        return 1;
 }