mirror of
https://github.com/ceph/ceph
synced 2024-12-16 08:26:25 +00:00
f1d80ff750
This will prevent the current crush rule from referencing a non-existent shadow tree and hence avoid a coredump such as below: 0> 2017-08-05 09:54:19.943349 7f73887d6700 -1 /clove/vm/xxg/rpm/ceph/rpmbuild/BUILD/ceph-12.1.2.1/src/crush/CrushWrapper.cc: In function 'int CrushWrapper::get_rule_weight_osd_map(unsigned int, std::map<int, float>*)' thread 7f73887d6700 time 2017-08-05 09:54:19.941291 /clove/vm/xxg/rpm/ceph/rpmbuild/BUILD/ceph-12.1.2.1/src/crush/CrushWrapper.cc: 1631: FAILED assert(b) ceph version 12.1.2.1-11-gd0f812a (d0f812a3a757b319c26794f558b57770663ab324) luminous (rc) 1: (ceph::__ceph_assert_fail(char const*, char const*, int, char const*)+0x110) [0x7f7398b66ea0] 2: (CrushWrapper::get_rule_weight_osd_map(unsigned int, std::map<int, float, std::less<int>, std::allocator<std::pair<int const, float> > >*)+0x54e) [0x7f7398daac4e] 3: (PGMap::get_rule_avail(OSDMap const&, int) const+0x68) [0x7f73989a6428] 4: (PGMap::get_rules_avail(OSDMap const&, std::map<int, long, std::less<int>, std::allocator<std::pair<int const, long> > >*) const+0x35c) [0x7f73989b748c] 5: (PGMap::encode_digest(OSDMap const&, ceph::buffer::list&, unsigned long) const+0x16) [0x7f73989b7506] 6: (DaemonServer::send_report()+0x2a4) [0x7f73989f5474] 7: (DaemonServer::maybe_ready(int)+0x2f9) [0x7f73989f6129] 8: (DaemonServer::ms_dispatch(Message*)+0xce) [0x7f73989ff68e] 9: (DispatchQueue::entry()+0x792) [0x7f7398dd2a22] 10: (DispatchQueue::DispatchThread::entry()+0xd) [0x7f7398c1429d] 11: (()+0x7df3) [0x7f739640cdf3] 12: (clone()+0x6d) [0x7f73954f23ed] Signed-off-by: xie xingguo <xie.xingguo@zte.com.cn> |
||
---|---|---|
.. | ||
archs | ||
btrfs | ||
cephfs | ||
client | ||
clusters | ||
config | ||
debug | ||
distros | ||
erasure-code | ||
libceph | ||
machine_types | ||
mds | ||
mon/bootstrap | ||
mon_kv_backend | ||
nightlies | ||
objectstore | ||
objectstore_cephfs | ||
overrides | ||
packages | ||
qa_scripts | ||
rbd | ||
releases | ||
rgw_pool_type | ||
standalone | ||
suites | ||
tasks | ||
timezone | ||
workunits | ||
.gitignore | ||
loopall.sh | ||
Makefile | ||
README | ||
run_xfstests_krbd.sh | ||
run_xfstests_qemu.sh | ||
run_xfstests-obsolete.sh | ||
run_xfstests.sh | ||
run-standalone.sh | ||
runallonce.sh | ||
runoncfuse.sh | ||
runonkclient.sh | ||
setup-chroot.sh | ||
tox.ini |
ceph-qa-suite ------------- clusters/ - some predefined cluster layouts suites/ - set suite The suites directory has a hierarchical collection of tests. This can be freeform, but generally follows the convention of suites/<test suite name>/<test group>/... A test is described by a yaml fragment. A test can exist as a single .yaml file in the directory tree. For example: suites/foo/one.yaml suites/foo/two.yaml is a simple group of two tests. A directory with a magic '+' file represents a test that combines all other items in the directory into a single yaml fragment. For example: suites/foo/bar/+ suites/foo/bar/a.yaml suites/foo/bar/b.yaml suites/foo/bar/c.yaml is a single test consisting of a + b + c. A directory with a magic '%' file represents a test matrix formed from all other items in the directory. For example, suites/baz/% suites/baz/a.yaml suites/baz/b/b1.yaml suites/baz/b/b2.yaml suites/baz/c.yaml suites/baz/d/d1.yaml suites/baz/d/d2.yaml is a 4-dimensional test matrix. Two dimensions (a, c) are trivial (1 item), so this is really 2x2 = 4 tests, which are a + b1 + c + d1 a + b1 + c + d2 a + b2 + c + d1 a + b2 + c + d2 Symlinks are okay. The teuthology code can be found in https://github.com/ceph/teuthology.git