]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
moved crush defs around, fixed crush call site
authorSage Weil <sage@newdream.net>
Fri, 21 Dec 2007 23:45:46 +0000 (15:45 -0800)
committerSage Weil <sage@newdream.net>
Fri, 21 Dec 2007 23:45:46 +0000 (15:45 -0800)
src/include/ceph_fs.h
src/kernel/osd_client.c
src/osd/osd_types.h

index 4c1d1c8f2510b8640183a3429caec2a2b2e10f1a..d34fb7a9a40969e9efe2643c440561f048d06d5e 100644 (file)
@@ -121,6 +121,12 @@ union ceph_pg {
 #define ceph_pg_is_rep(pg)   (pg.pg.type == CEPH_PG_TYPE_REP)
 #define ceph_pg_is_raid4(pg) (pg.pg.type == CEPH_PG_TYPE_RAID4)
 
+/*
+ * crush rule ids.  fixme.
+ */
+#define CRUSH_REP_RULE(nrep) (nrep) 
+#define CRUSH_RAID_RULE(num) (10+num)
+
 /*
  * stable_mod func is used to control number of placement groups
  *  b <= bmask and bmask=(2**n)-1
@@ -441,7 +447,7 @@ struct ceph_osd_request_head {
        __u32                     op;
        __u64                     offset, length;
        struct ceph_object        oid;
-       struct ceph_object_layout  layout;
+       struct ceph_object_layout layout;
        ceph_epoch_t              osdmap_epoch;
 
        __u32                     flags;
index 6a161afc358bc36fbbdf50f523e9559a15d0bbc0..08d30715e5bccdf464f7fac658daef56a60ea416 100644 (file)
@@ -8,6 +8,7 @@ int ceph_debug_osdc = 50;
 
 #include "osd_client.h"
 #include "messenger.h"
+#include "crush/mapper.h"
 
 
 void ceph_osdc_init(struct ceph_osd_client *osdc, struct ceph_client *client)
@@ -192,18 +193,20 @@ static void send_request(struct ceph_osd_client *osdc, struct ceph_osd_request *
        default:
                BUG_ON(1);
        }
-       int nr_all = crush_do_rule(osdmap->crush, rule, req->r_pgid.pg.ps, osds, 10, req->layout.ol_preferred);
+       nr_osds = crush_do_rule(osdc->osdmap->crush, rule, 
+                               req->r_pgid.pg.ps, osds, 10, 
+                               req->r_pgid.pg.preferred);
        for (i=0; i<nr_osds; i++) {
                if (ceph_osd_is_up(osdc->osdmap, osds[i]))
                        break;
        }
-       if (i < nr_all) {
-               dout(10, "send_request %p tid %lu to osd%d\n", req, req->r_tid, osds[i]);
-               req->m_request->hdr.dst.name.type = CEPH_ENTITY_TYPE_OSD;
-               req->m_request->hdr.dst.name.num = osds[i];
-               req->m_request->hdr.dst.addr = osdc->osdmap->osd_addr[osds[i]];
-               ceph_msg_get(req->m_request); /* send consumes a ref */
-               ceph_msg_send(osdc->client->msgr, req->m_request);
+       if (i < nr_osds) {
+               dout(10, "send_request %p tid %llu to osd%d\n", req, req->r_tid, osds[i]);
+               req->r_request->hdr.dst.name.type = CEPH_ENTITY_TYPE_OSD;
+               req->r_request->hdr.dst.name.num = osds[i];
+               req->r_request->hdr.dst.addr = osdc->osdmap->osd_addr[osds[i]];
+               ceph_msg_get(req->r_request); /* send consumes a ref */
+               ceph_msg_send(osdc->client->msgr, req->r_request, 0);
        } else {
                dout(10, "send_request no osds in pg are up\n");
        }
index 49ead46ee7927925e5f8809ee2d7d4ae1094d261..6809dd18b9424ed8bd5cf2d427562bac66457f36 100644 (file)
@@ -71,11 +71,6 @@ typedef uint16_t ps_t;
 typedef uint8_t pruleset_t;
 
 
-// crush rule ids
-#define CRUSH_REP_RULE(nrep) (nrep)  // replication
-#define CRUSH_RAID_RULE(num) (10+num)   // raid
-
-
 
 // placement group id
 struct pg_t {