OK, sorry for all the quick e-mails, but I got it to compile. For some reason there are a few errors from decompiling the CRUSH map. 1. The decompiled map has "alg straw2" which is not vaild, removing the 2 lets it compile 2. The hosts have weight 0.000, which I don't think prevents the map from compiling, but will cause other issues. I created the rack entries on the command line and moved the host buckets to the racks, then exported the CRUSH to modify the rules. ceph osd crush add-bucket racka rack ceph osd crush add-bucket rackb rack ceph osd crush move nodev rack=racka ceph osd crush move nodew rack=racka ceph osd crush move nodex rack=rackb ceph osd crush move nodey rack=rackb ceph osd crush move racka root=default ceph osd crush move rackb root=default ceph osd crush add-bucket ssd-racka rack ceph osd crush add-bucket ssd-rackb rack ceph osd crush move ssd-racka root=ssd ceph osd crush move ssd-rackb root=ssd ceph osd crush move nodev-ssd rack=ssd-racka ceph osd crush move nodew-ssd rack=ssd-racka ceph osd crush move nodex-ssd rack=ssd-rackb ceph osd crush move nodey-ssd rack=ssd-rackb Just saw the e-mail from Sage saying that is all fixed after .93 (which we are on). Saving for posterity's sake. Thanks Sage! On Mon, Mar 23, 2015 at 1:09 PM, Robert LeBlanc <robert@xxxxxxxxxxxxx> wrote: > Ok, so the decompile error is because I didn't download the CRUSH map > (found that out using hexdump), but I still can't compile an > unmodified CRUSH map. > > [root@nodezz ~]# crushtool -d map.crush -o map > [root@nodezz ~]# crushtool -c map -o map.crush > map:105 error: parse error at '' > > For some reason it doesn't like the rack definition. I can move things > around, like putting root before it and it always chokes on the first > rack definition no matter which one it is. > > On Mon, Mar 23, 2015 at 12:53 PM, Robert LeBlanc <robert@xxxxxxxxxxxxx> wrote: >> I was trying to decompile and edit the CRUSH map to adjust the CRUSH >> rules. My first attempt created a map that would decompile, but I >> could not recompile the CRUSH even if didn't modify it. When trying to >> download the CRUSH fresh, now the decompile fails. >> >> [root@nodezz ~]# ceph osd getmap -o map.crush >> got osdmap epoch 12792 >> [root@nodezz ~]# crushtool -d map.crush -o map >> terminate called after throwing an instance of 'ceph::buffer::malformed_input' >> what(): buffer::malformed_input: bad magic number >> *** Caught signal (Aborted) ** >> in thread 7f889ed24780 >> ceph version 0.93 (bebf8e9a830d998eeaab55f86bb256d4360dd3c4) >> 1: crushtool() [0x4f4542] >> 2: (()+0xf130) [0x7f889df97130] >> 3: (gsignal()+0x39) [0x7f889cfd05c9] >> 4: (abort()+0x148) [0x7f889cfd1cd8] >> 5: (__gnu_cxx::__verbose_terminate_handler()+0x165) [0x7f889d8d49d5] >> 6: (()+0x5e946) [0x7f889d8d2946] >> 7: (()+0x5e973) [0x7f889d8d2973] >> 8: (()+0x5eb9f) [0x7f889d8d2b9f] >> 9: (CrushWrapper::decode(ceph::buffer::list::iterator&)+0x5b8) [0x523fa8] >> 10: (main()+0x1e0e) [0x4ead4e] >> 11: (__libc_start_main()+0xf5) [0x7f889cfbcaf5] >> 12: crushtool() [0x4ee5a9] >> 2015-03-23 12:46:34.637635 7f889ed24780 -1 *** Caught signal (Aborted) ** >> in thread 7f889ed24780 >> >> ceph version 0.93 (bebf8e9a830d998eeaab55f86bb256d4360dd3c4) >> 1: crushtool() [0x4f4542] >> 2: (()+0xf130) [0x7f889df97130] >> 3: (gsignal()+0x39) [0x7f889cfd05c9] >> 4: (abort()+0x148) [0x7f889cfd1cd8] >> 5: (__gnu_cxx::__verbose_terminate_handler()+0x165) [0x7f889d8d49d5] >> 6: (()+0x5e946) [0x7f889d8d2946] >> 7: (()+0x5e973) [0x7f889d8d2973] >> 8: (()+0x5eb9f) [0x7f889d8d2b9f] >> 9: (CrushWrapper::decode(ceph::buffer::list::iterator&)+0x5b8) [0x523fa8] >> 10: (main()+0x1e0e) [0x4ead4e] >> 11: (__libc_start_main()+0xf5) [0x7f889cfbcaf5] >> 12: crushtool() [0x4ee5a9] >> NOTE: a copy of the executable, or `objdump -rdS <executable>` is >> needed to interpret this. >> >> --- begin dump of recent events --- >> -14> 2015-03-23 12:46:34.633547 7f889ed24780 5 asok(0x3229cc0) >> register_command perfcounters_dump hook 0x322be00 >> -13> 2015-03-23 12:46:34.633580 7f889ed24780 5 asok(0x3229cc0) >> register_command 1 hook 0x322be00 >> -12> 2015-03-23 12:46:34.633587 7f889ed24780 5 asok(0x3229cc0) >> register_command perf dump hook 0x322be00 >> -11> 2015-03-23 12:46:34.633596 7f889ed24780 5 asok(0x3229cc0) >> register_command perfcounters_schema hook 0x322be00 >> -10> 2015-03-23 12:46:34.633604 7f889ed24780 5 asok(0x3229cc0) >> register_command 2 hook 0x322be00 >> -9> 2015-03-23 12:46:34.633609 7f889ed24780 5 asok(0x3229cc0) >> register_command perf schema hook 0x322be00 >> -8> 2015-03-23 12:46:34.633615 7f889ed24780 5 asok(0x3229cc0) >> register_command perf reset hook 0x322be00 >> -7> 2015-03-23 12:46:34.633639 7f889ed24780 5 asok(0x3229cc0) >> register_command config show hook 0x322be00 >> -6> 2015-03-23 12:46:34.633654 7f889ed24780 5 asok(0x3229cc0) >> register_command config set hook 0x322be00 >> -5> 2015-03-23 12:46:34.633661 7f889ed24780 5 asok(0x3229cc0) >> register_command config get hook 0x322be00 >> -4> 2015-03-23 12:46:34.633672 7f889ed24780 5 asok(0x3229cc0) >> register_command config diff hook 0x322be00 >> -3> 2015-03-23 12:46:34.633685 7f889ed24780 5 asok(0x3229cc0) >> register_command log flush hook 0x322be00 >> -2> 2015-03-23 12:46:34.633698 7f889ed24780 5 asok(0x3229cc0) >> register_command log dump hook 0x322be00 >> -1> 2015-03-23 12:46:34.633711 7f889ed24780 5 asok(0x3229cc0) >> register_command log reopen hook 0x322be00 >> 0> 2015-03-23 12:46:34.637635 7f889ed24780 -1 *** Caught signal >> (Aborted) ** >> in thread 7f889ed24780 >> >> ceph version 0.93 (bebf8e9a830d998eeaab55f86bb256d4360dd3c4) >> 1: crushtool() [0x4f4542] >> 2: (()+0xf130) [0x7f889df97130] >> 3: (gsignal()+0x39) [0x7f889cfd05c9] >> 4: (abort()+0x148) [0x7f889cfd1cd8] >> 5: (__gnu_cxx::__verbose_terminate_handler()+0x165) [0x7f889d8d49d5] >> 6: (()+0x5e946) [0x7f889d8d2946] >> 7: (()+0x5e973) [0x7f889d8d2973] >> 8: (()+0x5eb9f) [0x7f889d8d2b9f] >> 9: (CrushWrapper::decode(ceph::buffer::list::iterator&)+0x5b8) [0x523fa8] >> 10: (main()+0x1e0e) [0x4ead4e] >> 11: (__libc_start_main()+0xf5) [0x7f889cfbcaf5] >> 12: crushtool() [0x4ee5a9] >> NOTE: a copy of the executable, or `objdump -rdS <executable>` is >> needed to interpret this. >> >> --- logging levels --- >> 0/ 5 none >> 0/ 1 lockdep >> 0/ 1 context >> 1/ 1 crush >> 1/ 5 mds >> 1/ 5 mds_balancer >> 1/ 5 mds_locker >> 1/ 5 mds_log >> 1/ 5 mds_log_expire >> 1/ 5 mds_migrator >> 0/ 1 buffer >> 0/ 1 timer >> 0/ 1 filer >> 0/ 1 striper >> 0/ 1 objecter >> 0/ 5 rados >> 0/ 5 rbd >> 0/ 5 rbd_replay >> 0/ 5 journaler >> 0/ 5 objectcacher >> 0/ 5 client >> 0/ 5 osd >> 0/ 5 optracker >> 0/ 5 objclass >> 1/ 3 filestore >> 1/ 3 keyvaluestore >> 1/ 3 journal >> 0/ 5 ms >> 1/ 5 mon >> 0/10 monc >> 1/ 5 paxos >> 0/ 5 tp >> 1/ 5 auth >> 1/ 5 crypto >> 1/ 1 finisher >> 1/ 5 heartbeatmap >> 1/ 5 perfcounter >> 1/ 5 rgw >> 1/10 civetweb >> 1/ 5 javaclient >> 1/ 5 asok >> 1/ 1 throttle >> 0/ 0 refs >> 1/ 5 xio >> -2/-2 (syslog threshold) >> 99/99 (stderr threshold) >> max_recent 500 >> max_new 1000 >> log_file >> --- end dump of recent events --- >> Aborted >> >> map.orig is the first map that would not compile even without edits. >> map.crush is the file that would not decompile. >> >> Any ideas? _______________________________________________ ceph-users mailing list ceph-users@xxxxxxxxxxxxxx http://lists.ceph.com/listinfo.cgi/ceph-users-ceph.com