From 8adb5dd168a21e9b3f455d32cd11e8e086a981b6 Mon Sep 17 00:00:00 2001 From: Sage Weil Date: Thu, 18 Sep 2008 13:43:51 -0700 Subject: [PATCH] osdmaptool: fix crush import --- src/osdmaptool.cc | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/src/osdmaptool.cc b/src/osdmaptool.cc index a1b03a21cb905..ef25fa2718162 100644 --- a/src/osdmaptool.cc +++ b/src/osdmaptool.cc @@ -134,10 +134,16 @@ int main(int argc, const char **argv) } // validate CrushWrapper cw; - //cw._decode(cbl, FIXME bufferlist::iterator p = cbl.begin(); - osdmap.crush.decode(p); - cout << me << ": imported crush map from " << import_crush << std::endl; + cw.decode(p); + + // apply + OSDMap::Incremental inc; + inc.fsid = osdmap.get_fsid(); + inc.epoch = osdmap.get_epoch()+1; + inc.crush = cbl; + osdmap.apply_incremental(inc); + cout << me << ": imported " << cbl.length() << " byte crush map from " << import_crush << std::endl; modified = true; } @@ -156,6 +162,7 @@ int main(int argc, const char **argv) cerr << me << ": no action specified?" << std::endl; usage(me); } + if (modified) osdmap.inc_epoch(); @@ -163,6 +170,7 @@ int main(int argc, const char **argv) printmap(me, &osdmap); if (modified) { + bl.clear(); osdmap.encode(bl); // write it out -- 2.39.5