if (output_data_file)
write_integer_indexed_vector_data_string(tester_data.placement_information, x, out);
+ bool has_item_none = false;
for (unsigned i = 0; i < out.size(); i++) {
- per[out[i]]++;
- temporary_per[out[i]]++;
+ if (out[i] != CRUSH_ITEM_NONE) {
+ per[out[i]]++;
+ temporary_per[out[i]]++;
+ } else {
+ has_item_none = true;
+ }
}
batch_per[current_batch] = temporary_per;
sizes[out.size()]++;
- if (output_bad_mappings && out.size() != (unsigned)nr) {
+ if (output_bad_mappings &&
+ (out.size() != (unsigned)nr ||
+ has_item_none)) {
err << "bad mapping rule " << r << " x " << x << " num_rep " << nr << " result " << out << std::endl;
}
}
$ crushtool -c "$TESTDIR/bad-mappings.crushmap.txt" -o "$TESTDIR/bad-mappings.crushmap"
$ crushtool -i "$TESTDIR/bad-mappings.crushmap" --test --show-bad-mappings --rule 0 --x 1 --num-rep 10
bad mapping rule 0 x 1 num_rep 10 result [4,0,2,3,1]
+ $ crushtool -i "$TESTDIR/bad-mappings.crushmap" --test --show-bad-mappings --rule 1 --x 1 --num-rep 10
+ bad mapping rule 1 x 1 num_rep 10 result [4,0,2,1,3,2147483647,2147483647,2147483647,2147483647,2147483647]