]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
crush: invalidate rmap on create (and thus decode)
authorSage Weil <sage@inktank.com>
Tue, 1 Oct 2013 22:53:42 +0000 (15:53 -0700)
committerSage Weil <sage@inktank.com>
Tue, 1 Oct 2013 22:56:44 +0000 (15:56 -0700)
If we have an existing CrushWrapper object and decode from a bufferlist,
reset build_rmaps so that they get rebuilt.

Remove the build_rmaps() all in decode that was useless on a redecode
(because have_rmaps == true in that case and it did nothing).

Fixes: #6442
Backport: dumpling, maybe cuttlefish
Signed-off-by: Sage Weil <sage@inktank.com>
Reviewed-by: Joao Eduardo Luis <joao.luis@inktank.com>
(cherry picked from commit 9b7a2ae329b6a511064dd3d6e549ba61f52cfd21)

src/crush/CrushWrapper.cc
src/crush/CrushWrapper.h

index 1fc86893e1d0421f05f5fba10230b949ae7986bb..ad0e8de0b24c48fdcc732b4a29cff8e053486fb7 100644 (file)
@@ -835,7 +835,6 @@ void CrushWrapper::decode(bufferlist::iterator& blp)
     decode_32_or_64_string_map(type_map, blp);
     decode_32_or_64_string_map(name_map, blp);
     decode_32_or_64_string_map(rule_name_map, blp);
-    build_rmaps();
 
     // tunables
     if (!blp.end()) {
index 9109156d066d3ae8ced697964203ee0826b6e0af..82bc0859bbdbd48acfef9a39786de0bae9dbaca0 100644 (file)
@@ -94,6 +94,7 @@ public:
       crush_destroy(crush);
     crush = crush_create();
     assert(crush);
+    have_rmaps = false;
   }
 
   // tunables