From 3b5f237cd7b2306699f27bbca8b00b7bcd73fa25 Mon Sep 17 00:00:00 2001 From: Sage Weil Date: Thu, 18 Sep 2008 14:26:57 -0700 Subject: [PATCH] osdmaptool: lpg_bits specifiable --- src/config.cc | 1 + src/config.h | 1 + src/osd/OSDMap.cc | 9 ++++++--- src/osd/OSDMap.h | 3 ++- src/osdmaptool.cc | 7 +++++-- 5 files changed, 15 insertions(+), 6 deletions(-) diff --git a/src/config.cc b/src/config.cc index c17b5f6c30576..8cd230275e426 100644 --- a/src/config.cc +++ b/src/config.cc @@ -405,6 +405,7 @@ md_config_t g_conf = { osd_min_pg_size_without_alive: 2, // smallest pg we allow to activate without telling the monitor osd_pg_bits: 6, // bits per osd + osd_lpg_bits: 1, // bits per osd osd_object_layout: CEPH_OBJECT_LAYOUT_HASHINO,//LINEAR,//HASHINO, osd_pg_layout: CEPH_PG_LAYOUT_CRUSH,//LINEAR,//CRUSH, osd_min_rep: 2, diff --git a/src/config.h b/src/config.h index b7819c1154312..44faf4362581b 100644 --- a/src/config.h +++ b/src/config.h @@ -266,6 +266,7 @@ struct md_config_t { int osd_min_pg_size_without_alive; int osd_pg_bits; + int osd_lpg_bits; int osd_object_layout; int osd_pg_layout; int osd_min_rep; diff --git a/src/osd/OSDMap.cc b/src/osd/OSDMap.cc index a686682b23471..518b234cb7ac5 100644 --- a/src/osd/OSDMap.cc +++ b/src/osd/OSDMap.cc @@ -20,17 +20,20 @@ void OSDMap::build_simple(epoch_t e, ceph_fsid &fsid, - int num_osd, int pg_bits, int mds_local_osd) + int num_osd, int pg_bits, int lpg_bits, + int mds_local_osd) { dout(10) << "build_simple on " << num_osd - << " osds with " << pg_bits << " pg bits per osd" << dendl; + << " osds with " << pg_bits << " pg bits per osd, " + << lpg_bits << " lpg bits" << dendl; epoch = e; set_fsid(fsid); ctime = g_clock.now(); set_max_osd(num_osd); pg_num = pgp_num = num_osd << pg_bits; - + lpg_num = lpgp_num = lpg_bits ? (1 << (lpg_bits-1)) : 0; + // crush map build_simple_crush_map(crush, num_osd); diff --git a/src/osd/OSDMap.h b/src/osd/OSDMap.h index 75b526c52ab86..53faed49679bb 100644 --- a/src/osd/OSDMap.h +++ b/src/osd/OSDMap.h @@ -744,7 +744,8 @@ private: * handy helpers to build simple maps... */ void build_simple(epoch_t e, ceph_fsid &fsid, - int num_osd, int pg_bits, int mds_local_osd); + int num_osd, int pg_bits, int lpg_bits, + int mds_local_osd); static void build_simple_crush_map(CrushWrapper& crush, int num_osd); }; diff --git a/src/osdmaptool.cc b/src/osdmaptool.cc index ef25fa2718162..fb9d1375b7652 100644 --- a/src/osdmaptool.cc +++ b/src/osdmaptool.cc @@ -60,6 +60,7 @@ int main(int argc, const char **argv) const char *monmapfn = 0; int num_osd = 0; int pg_bits = g_conf.osd_pg_bits; + int lpg_bits = g_conf.osd_lpg_bits; bool clobber = false; bool modified = false; const char *export_crush = 0; @@ -75,8 +76,10 @@ int main(int argc, const char **argv) num_osd = atoi(args[++i]); } else if (strcmp(args[i], "--clobber") == 0) clobber = true; - else if (strcmp(args[i], "--pgbits") == 0) + else if (strcmp(args[i], "--pg_bits") == 0) pg_bits = atoi(args[++i]); + else if (strcmp(args[i], "--lpg_bits") == 0) + lpg_bits = atoi(args[++i]); else if (strcmp(args[i], "--export-crush") == 0) export_crush = args[++i]; else if (strcmp(args[i], "--import-crush") == 0) @@ -121,7 +124,7 @@ int main(int argc, const char **argv) cerr << me << ": osd count must be > 0" << std::endl; exit(1); } - osdmap.build_simple(0, monmap.fsid, num_osd, pg_bits, 0); + osdmap.build_simple(0, monmap.fsid, num_osd, pg_bits, lpg_bits, 0); modified = true; } -- 2.39.5