From 136fd14fc1edabc9aa9e8d0a41c6758b9741fd7e Mon Sep 17 00:00:00 2001 From: Sage Weil Date: Fri, 21 Dec 2007 15:45:46 -0800 Subject: [PATCH] moved crush defs around, fixed crush call site --- src/include/ceph_fs.h | 8 +++++++- src/kernel/osd_client.c | 19 +++++++++++-------- src/osd/osd_types.h | 5 ----- 3 files changed, 18 insertions(+), 14 deletions(-) diff --git a/src/include/ceph_fs.h b/src/include/ceph_fs.h index 4c1d1c8f2510b..d34fb7a9a4096 100644 --- a/src/include/ceph_fs.h +++ b/src/include/ceph_fs.h @@ -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; diff --git a/src/kernel/osd_client.c b/src/kernel/osd_client.c index 6a161afc358bc..08d30715e5bcc 100644 --- a/src/kernel/osd_client.c +++ b/src/kernel/osd_client.c @@ -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; iosdmap, 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"); } diff --git a/src/osd/osd_types.h b/src/osd/osd_types.h index 49ead46ee7927..6809dd18b9424 100644 --- a/src/osd/osd_types.h +++ b/src/osd/osd_types.h @@ -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 { -- 2.39.5