ceph/qa
Sage Weil 154330fd68 osd/PrimaryLogPG: fix on_local_recover crash on stray clone
If there is a stray clone (one that does not appear in the SnapSet) and
we do any sort of recovery on it the OSD will crash.  Log an error instead
but continue.

This addresses a problem where a cluster has both (1) an unexpected clone
and (2) the clone is not present on all replicas.  Doing repair on that
PG will both not fix the unexpected clone and also cause the remaining
OSDs to crash trying to recover it.

Include a test.

Fixes: https://tracker.ceph.com/issues/24396
Signed-off-by: Sage Weil <sage@redhat.com>
2018-06-05 11:09:01 -05:00
..
archs
btrfs
cephfs mds: check for session import race 2018-05-14 12:52:50 -07:00
client
clusters
config
crontab qa/tests - reverted clients upgrades for luminous runs 2018-05-21 14:44:09 -07:00
debug
distros tests/qa: adding rados/.. dirs 2018-05-11 14:03:15 -07:00
erasure-code
libceph cleanup: src/.libs -> build/lib 2018-03-06 14:44:47 -06:00
machine_types tests/qa - fix mimic subset for nightlies 2018-05-10 07:39:51 -07:00
mds
mon/bootstrap
mon_kv_backend
nightlies
objectstore objectstore/bluestore.yaml: enable bdev discard 2018-02-21 00:00:52 +09:00
objectstore_cephfs
overrides qa/suites/rados: add coverage for osd_recovery_max_single_start > 1 2018-04-20 19:42:15 -04:00
packages
qa_scripts
rbd qa: krbd whole-object-discard test 2018-03-07 12:06:33 +01:00
releases
rgw_frontend rgw: beast frontend no longer experimental 2018-04-10 12:26:37 -04:00
rgw_pool_type qa/rgw: disable testing on ec-cache pools 2018-05-21 13:29:01 -04:00
standalone osd/PrimaryLogPG: fix on_local_recover crash on stray clone 2018-06-05 11:09:01 -05:00
suites qa/tasks: rbd_mirror_thrash should wait for daemon exit before restarting 2018-05-31 09:48:47 -04:00
tasks Merge pull request #22122 from tspmelo/wip-osd-scrub 2018-06-05 12:33:34 +02:00
timezone
workunits qa/workunits/rbd: dump long image directory upon rbd-mirror test failure 2018-05-31 19:17:52 -04:00
.gitignore
find-used-ports.sh qa: add simple and dirty script to find ports being used 2017-11-22 16:58:34 +00:00
loopall.sh
Makefile
README Document the new '$' suite file 2018-03-23 00:02:11 +00:00
run_xfstests_qemu.sh
run_xfstests-obsolete.sh
run_xfstests.sh
run-standalone.sh qa/standalone: change PATH to allow finding sysctl 2018-04-06 04:18:22 +01:00
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

A directory with a magic '$' file represents a test where one of the other
items is chosen randomly. For example,

suites/foo/$
suites/foo/a.yaml
suites/foo/b.yaml
suites/foo/c.yaml

is a single test.  It will be either a.yaml, b.yaml or c.yaml.  This can be
used in conjunction with the '%' file in other directories to run a series of
tests without causing an unwanted increase in the total number of jobs run.

Symlinks are okay.

The teuthology code can be found in https://github.com/ceph/teuthology.git