summaryrefslogtreecommitdiffstats
path: root/qa/suites/rbd
diff options
context:
space:
mode:
Diffstat (limited to 'qa/suites/rbd')
l---------qa/suites/rbd/.qa1
-rw-r--r--qa/suites/rbd/basic/%0
l---------qa/suites/rbd/basic/.qa1
l---------qa/suites/rbd/basic/base/.qa1
-rw-r--r--qa/suites/rbd/basic/base/install.yaml3
-rw-r--r--qa/suites/rbd/basic/clusters/+0
l---------qa/suites/rbd/basic/clusters/.qa1
l---------qa/suites/rbd/basic/clusters/fixed-1.yaml1
-rw-r--r--qa/suites/rbd/basic/clusters/openstack.yaml4
l---------qa/suites/rbd/basic/conf1
l---------qa/suites/rbd/basic/msgr-failures/.qa1
-rw-r--r--qa/suites/rbd/basic/msgr-failures/few.yaml8
l---------qa/suites/rbd/basic/objectstore1
l---------qa/suites/rbd/basic/supported-random-distro$1
l---------qa/suites/rbd/basic/tasks/.qa1
-rw-r--r--qa/suites/rbd/basic/tasks/rbd_api_tests_old_format.yaml12
-rw-r--r--qa/suites/rbd/basic/tasks/rbd_cls_tests.yaml7
-rw-r--r--qa/suites/rbd/basic/tasks/rbd_lock_and_fence.yaml5
-rw-r--r--qa/suites/rbd/basic/tasks/rbd_python_api_tests_old_format.yaml14
-rw-r--r--qa/suites/rbd/cli/%0
l---------qa/suites/rbd/cli/.qa1
l---------qa/suites/rbd/cli/base/.qa1
-rw-r--r--qa/suites/rbd/cli/base/install.yaml3
l---------qa/suites/rbd/cli/clusters1
l---------qa/suites/rbd/cli/conf1
l---------qa/suites/rbd/cli/data-pool1
l---------qa/suites/rbd/cli/features/.qa1
-rw-r--r--qa/suites/rbd/cli/features/defaults.yaml5
-rw-r--r--qa/suites/rbd/cli/features/journaling.yaml5
-rw-r--r--qa/suites/rbd/cli/features/layering.yaml5
l---------qa/suites/rbd/cli/msgr-failures/.qa1
-rw-r--r--qa/suites/rbd/cli/msgr-failures/few.yaml8
l---------qa/suites/rbd/cli/objectstore1
l---------qa/suites/rbd/cli/supported-random-distro$1
l---------qa/suites/rbd/cli/workloads/.qa1
-rw-r--r--qa/suites/rbd/cli/workloads/rbd_cli_generic.yaml5
-rw-r--r--qa/suites/rbd/cli/workloads/rbd_cli_groups.yaml5
-rw-r--r--qa/suites/rbd/cli/workloads/rbd_cli_import_export.yaml5
-rw-r--r--qa/suites/rbd/cli/workloads/rbd_cli_luks_encryption.yaml9
-rw-r--r--qa/suites/rbd/cli/workloads/rbd_cli_migration.yaml5
-rw-r--r--qa/suites/rbd/cli/workloads/rbd_support_module_recovery.yaml13
-rw-r--r--qa/suites/rbd/cli_v1/%0
l---------qa/suites/rbd/cli_v1/.qa1
l---------qa/suites/rbd/cli_v1/base/.qa1
-rw-r--r--qa/suites/rbd/cli_v1/base/install.yaml3
l---------qa/suites/rbd/cli_v1/clusters1
l---------qa/suites/rbd/cli_v1/conf1
l---------qa/suites/rbd/cli_v1/features/.qa1
-rw-r--r--qa/suites/rbd/cli_v1/features/format-1.yaml5
l---------qa/suites/rbd/cli_v1/msgr-failures/.qa1
-rw-r--r--qa/suites/rbd/cli_v1/msgr-failures/few.yaml8
l---------qa/suites/rbd/cli_v1/objectstore1
l---------qa/suites/rbd/cli_v1/supported-random-distro$1
l---------qa/suites/rbd/cli_v1/workloads/.qa1
-rw-r--r--qa/suites/rbd/cli_v1/workloads/rbd_cli_generic.yaml5
-rw-r--r--qa/suites/rbd/cli_v1/workloads/rbd_cli_import_export.yaml5
-rw-r--r--qa/suites/rbd/encryption/%0
l---------qa/suites/rbd/encryption/.qa1
l---------qa/suites/rbd/encryption/cache/.qa1
-rw-r--r--qa/suites/rbd/encryption/cache/none.yaml6
-rw-r--r--qa/suites/rbd/encryption/cache/writearound.yaml7
-rw-r--r--qa/suites/rbd/encryption/cache/writeback.yaml7
-rw-r--r--qa/suites/rbd/encryption/cache/writethrough.yaml7
-rw-r--r--qa/suites/rbd/encryption/clusters/+0
l---------qa/suites/rbd/encryption/clusters/.qa1
l---------qa/suites/rbd/encryption/clusters/fixed-3.yaml1
-rw-r--r--qa/suites/rbd/encryption/clusters/openstack.yaml8
l---------qa/suites/rbd/encryption/conf1
l---------qa/suites/rbd/encryption/data-pool1
l---------qa/suites/rbd/encryption/features/.qa1
-rw-r--r--qa/suites/rbd/encryption/features/defaults.yaml5
l---------qa/suites/rbd/encryption/msgr-failures/.qa1
-rw-r--r--qa/suites/rbd/encryption/msgr-failures/few.yaml9
l---------qa/suites/rbd/encryption/objectstore1
l---------qa/suites/rbd/encryption/supported-random-distro$1
l---------qa/suites/rbd/encryption/workloads/.qa1
-rw-r--r--qa/suites/rbd/encryption/workloads/qemu_xfstests_luks1.yaml13
-rw-r--r--qa/suites/rbd/encryption/workloads/qemu_xfstests_luks1_luks1.yaml14
-rw-r--r--qa/suites/rbd/encryption/workloads/qemu_xfstests_luks1_luks2.yaml14
-rw-r--r--qa/suites/rbd/encryption/workloads/qemu_xfstests_luks2.yaml13
-rw-r--r--qa/suites/rbd/encryption/workloads/qemu_xfstests_luks2_luks1.yaml14
-rw-r--r--qa/suites/rbd/encryption/workloads/qemu_xfstests_luks2_luks2.yaml14
-rw-r--r--qa/suites/rbd/encryption/workloads/qemu_xfstests_none_luks1.yaml13
-rw-r--r--qa/suites/rbd/encryption/workloads/qemu_xfstests_none_luks2.yaml13
-rw-r--r--qa/suites/rbd/immutable-object-cache/%0
l---------qa/suites/rbd/immutable-object-cache/.qa1
-rw-r--r--qa/suites/rbd/immutable-object-cache/clusters/+0
l---------qa/suites/rbd/immutable-object-cache/clusters/.qa1
-rw-r--r--qa/suites/rbd/immutable-object-cache/clusters/fix-2.yaml3
-rw-r--r--qa/suites/rbd/immutable-object-cache/clusters/openstack.yaml4
l---------qa/suites/rbd/immutable-object-cache/conf1
l---------qa/suites/rbd/immutable-object-cache/pool/.qa1
-rw-r--r--qa/suites/rbd/immutable-object-cache/pool/ceph_and_immutable_object_cache.yaml12
l---------qa/suites/rbd/immutable-object-cache/supported-random-distro$1
l---------qa/suites/rbd/immutable-object-cache/workloads/.qa1
l---------qa/suites/rbd/immutable-object-cache/workloads/c_api_tests_with_defaults.yaml1
-rw-r--r--qa/suites/rbd/immutable-object-cache/workloads/fio_on_immutable_object_cache.yaml11
-rw-r--r--qa/suites/rbd/immutable-object-cache/workloads/qemu_on_immutable_object_cache_and_thrash.yaml11
-rw-r--r--qa/suites/rbd/iscsi/%0
l---------qa/suites/rbd/iscsi/.qa1
l---------qa/suites/rbd/iscsi/0-single-container-host.yaml1
l---------qa/suites/rbd/iscsi/base/.qa1
-rw-r--r--qa/suites/rbd/iscsi/base/install.yaml14
-rw-r--r--qa/suites/rbd/iscsi/cluster/+0
l---------qa/suites/rbd/iscsi/cluster/.qa1
-rw-r--r--qa/suites/rbd/iscsi/cluster/fixed-3.yaml19
-rw-r--r--qa/suites/rbd/iscsi/cluster/openstack.yaml8
l---------qa/suites/rbd/iscsi/conf1
l---------qa/suites/rbd/iscsi/workloads/.qa1
-rw-r--r--qa/suites/rbd/iscsi/workloads/cephadm_iscsi.yaml21
-rw-r--r--qa/suites/rbd/librbd/%0
l---------qa/suites/rbd/librbd/.qa1
l---------qa/suites/rbd/librbd/cache/.qa1
-rw-r--r--qa/suites/rbd/librbd/cache/none.yaml6
-rw-r--r--qa/suites/rbd/librbd/cache/writearound.yaml7
-rw-r--r--qa/suites/rbd/librbd/cache/writeback.yaml7
-rw-r--r--qa/suites/rbd/librbd/cache/writethrough.yaml7
-rw-r--r--qa/suites/rbd/librbd/clusters/+0
l---------qa/suites/rbd/librbd/clusters/.qa1
l---------qa/suites/rbd/librbd/clusters/fixed-3.yaml1
-rw-r--r--qa/suites/rbd/librbd/clusters/openstack.yaml4
l---------qa/suites/rbd/librbd/conf1
l---------qa/suites/rbd/librbd/data-pool1
l---------qa/suites/rbd/librbd/extra-conf/.qa1
-rw-r--r--qa/suites/rbd/librbd/extra-conf/copy-on-read.yaml5
-rw-r--r--qa/suites/rbd/librbd/extra-conf/none.yaml0
-rw-r--r--qa/suites/rbd/librbd/extra-conf/permit-partial-discard.yaml5
l---------qa/suites/rbd/librbd/min-compat-client/.qa1
-rw-r--r--qa/suites/rbd/librbd/min-compat-client/default.yaml0
-rw-r--r--qa/suites/rbd/librbd/min-compat-client/octopus.yaml4
l---------qa/suites/rbd/librbd/msgr-failures/.qa1
-rw-r--r--qa/suites/rbd/librbd/msgr-failures/few.yaml9
l---------qa/suites/rbd/librbd/objectstore1
l---------qa/suites/rbd/librbd/supported-random-distro$1
l---------qa/suites/rbd/librbd/workloads/.qa1
-rw-r--r--qa/suites/rbd/librbd/workloads/c_api_tests.yaml14
-rw-r--r--qa/suites/rbd/librbd/workloads/c_api_tests_with_defaults.yaml14
-rw-r--r--qa/suites/rbd/librbd/workloads/c_api_tests_with_journaling.yaml14
-rw-r--r--qa/suites/rbd/librbd/workloads/fsx.yaml4
-rw-r--r--qa/suites/rbd/librbd/workloads/python_api_tests.yaml12
-rw-r--r--qa/suites/rbd/librbd/workloads/python_api_tests_with_defaults.yaml12
-rw-r--r--qa/suites/rbd/librbd/workloads/python_api_tests_with_journaling.yaml12
-rw-r--r--qa/suites/rbd/librbd/workloads/rbd_fio.yaml10
-rw-r--r--qa/suites/rbd/maintenance/%0
l---------qa/suites/rbd/maintenance/.qa1
l---------qa/suites/rbd/maintenance/base/.qa1
-rw-r--r--qa/suites/rbd/maintenance/base/install.yaml3
-rw-r--r--qa/suites/rbd/maintenance/clusters/+0
l---------qa/suites/rbd/maintenance/clusters/.qa1
l---------qa/suites/rbd/maintenance/clusters/fixed-3.yaml1
l---------qa/suites/rbd/maintenance/clusters/openstack.yaml1
l---------qa/suites/rbd/maintenance/conf1
l---------qa/suites/rbd/maintenance/objectstore1
l---------qa/suites/rbd/maintenance/qemu/.qa1
-rw-r--r--qa/suites/rbd/maintenance/qemu/xfstests.yaml14
l---------qa/suites/rbd/maintenance/supported-random-distro$1
l---------qa/suites/rbd/maintenance/workloads/.qa1
-rw-r--r--qa/suites/rbd/maintenance/workloads/dynamic_features.yaml8
-rw-r--r--qa/suites/rbd/maintenance/workloads/dynamic_features_no_cache.yaml14
-rw-r--r--qa/suites/rbd/maintenance/workloads/rebuild_object_map.yaml8
-rw-r--r--qa/suites/rbd/migration/%0
l---------qa/suites/rbd/migration/.qa1
l---------qa/suites/rbd/migration/1-base1
-rw-r--r--qa/suites/rbd/migration/2-clusters/+0
l---------qa/suites/rbd/migration/2-clusters/.qa1
l---------qa/suites/rbd/migration/2-clusters/fixed-3.yaml1
-rw-r--r--qa/suites/rbd/migration/2-clusters/openstack.yaml8
l---------qa/suites/rbd/migration/3-objectstore1
l---------qa/suites/rbd/migration/4-supported-random-distro$1
l---------qa/suites/rbd/migration/5-data-pool1
l---------qa/suites/rbd/migration/6-prepare/.qa1
-rw-r--r--qa/suites/rbd/migration/6-prepare/qcow2-file.yaml9
-rw-r--r--qa/suites/rbd/migration/6-prepare/qcow2-http.yaml8
-rw-r--r--qa/suites/rbd/migration/6-prepare/raw-file.yaml10
l---------qa/suites/rbd/migration/7-io-workloads/.qa1
-rw-r--r--qa/suites/rbd/migration/7-io-workloads/qemu_xfstests.yaml15
l---------qa/suites/rbd/migration/8-migrate-workloads/.qa1
-rw-r--r--qa/suites/rbd/migration/8-migrate-workloads/execute.yaml14
l---------qa/suites/rbd/migration/9-cleanup/.qa1
-rw-r--r--qa/suites/rbd/migration/9-cleanup/cleanup.yaml4
l---------qa/suites/rbd/migration/conf1
-rw-r--r--qa/suites/rbd/mirror-thrash/%0
l---------qa/suites/rbd/mirror-thrash/.qa1
l---------qa/suites/rbd/mirror-thrash/base/.qa1
-rw-r--r--qa/suites/rbd/mirror-thrash/base/install.yaml9
l---------qa/suites/rbd/mirror-thrash/clients/.qa1
-rw-r--r--qa/suites/rbd/mirror-thrash/clients/mirror.yaml36
-rw-r--r--qa/suites/rbd/mirror-thrash/cluster/+0
l---------qa/suites/rbd/mirror-thrash/cluster/.qa1
-rw-r--r--qa/suites/rbd/mirror-thrash/cluster/2-node.yaml31
-rw-r--r--qa/suites/rbd/mirror-thrash/cluster/openstack.yaml4
l---------qa/suites/rbd/mirror-thrash/conf1
l---------qa/suites/rbd/mirror-thrash/msgr-failures1
l---------qa/suites/rbd/mirror-thrash/objectstore1
l---------qa/suites/rbd/mirror-thrash/policy/.qa1
-rw-r--r--qa/suites/rbd/mirror-thrash/policy/none.yaml5
-rw-r--r--qa/suites/rbd/mirror-thrash/policy/simple.yaml5
l---------qa/suites/rbd/mirror-thrash/rbd-mirror/.qa1
-rw-r--r--qa/suites/rbd/mirror-thrash/rbd-mirror/four-per-cluster.yaml31
l---------qa/suites/rbd/mirror-thrash/supported-random-distro$1
l---------qa/suites/rbd/mirror-thrash/workloads/.qa1
-rw-r--r--qa/suites/rbd/mirror-thrash/workloads/rbd-mirror-fsx-workunit.yaml33
-rw-r--r--qa/suites/rbd/mirror-thrash/workloads/rbd-mirror-journal-stress-workunit.yaml15
-rw-r--r--qa/suites/rbd/mirror-thrash/workloads/rbd-mirror-journal-workunit.yaml12
-rw-r--r--qa/suites/rbd/mirror-thrash/workloads/rbd-mirror-snapshot-stress-workunit-exclusive-lock.yaml16
-rw-r--r--qa/suites/rbd/mirror-thrash/workloads/rbd-mirror-snapshot-stress-workunit-fast-diff.yaml16
-rw-r--r--qa/suites/rbd/mirror-thrash/workloads/rbd-mirror-snapshot-stress-workunit-minimum.yaml16
-rw-r--r--qa/suites/rbd/mirror/%0
l---------qa/suites/rbd/mirror/.qa1
l---------qa/suites/rbd/mirror/base1
-rw-r--r--qa/suites/rbd/mirror/clients/+0
l---------qa/suites/rbd/mirror/clients/.qa1
-rw-r--r--qa/suites/rbd/mirror/clients/mirror-extra.yaml24
l---------qa/suites/rbd/mirror/clients/mirror.yaml1
l---------qa/suites/rbd/mirror/cluster1
l---------qa/suites/rbd/mirror/conf1
l---------qa/suites/rbd/mirror/msgr-failures1
l---------qa/suites/rbd/mirror/objectstore1
l---------qa/suites/rbd/mirror/supported-random-distro$1
l---------qa/suites/rbd/mirror/workloads/.qa1
-rw-r--r--qa/suites/rbd/mirror/workloads/rbd-mirror-ha-workunit.yaml16
-rw-r--r--qa/suites/rbd/mirror/workloads/rbd-mirror-journal-bootstrap-workunit.yaml13
-rw-r--r--qa/suites/rbd/mirror/workloads/rbd-mirror-snapshot-bootstrap-workunit.yaml13
-rw-r--r--qa/suites/rbd/mirror/workloads/rbd-mirror-snapshot-workunit-exclusive-lock.yaml13
-rw-r--r--qa/suites/rbd/mirror/workloads/rbd-mirror-snapshot-workunit-fast-diff.yaml13
-rw-r--r--qa/suites/rbd/mirror/workloads/rbd-mirror-snapshot-workunit-journaling.yaml13
-rw-r--r--qa/suites/rbd/mirror/workloads/rbd-mirror-snapshot-workunit-minimum.yaml13
-rw-r--r--qa/suites/rbd/mirror/workloads/rbd-mirror-stress-workunit-min-compat-client-octopus.yaml11
-rw-r--r--qa/suites/rbd/mirror/workloads/rbd-mirror-workunit-config-key.yaml12
-rw-r--r--qa/suites/rbd/mirror/workloads/rbd-mirror-workunit-min-compat-client-octopus.yaml11
-rw-r--r--qa/suites/rbd/mirror/workloads/rbd-mirror-workunit-policy-none.yaml16
-rw-r--r--qa/suites/rbd/mirror/workloads/rbd-mirror-workunit-policy-simple.yaml16
-rw-r--r--qa/suites/rbd/nbd/%0
l---------qa/suites/rbd/nbd/.qa1
l---------qa/suites/rbd/nbd/base1
-rw-r--r--qa/suites/rbd/nbd/cluster/+0
l---------qa/suites/rbd/nbd/cluster/.qa1
-rw-r--r--qa/suites/rbd/nbd/cluster/fixed-3.yaml4
l---------qa/suites/rbd/nbd/cluster/openstack.yaml1
l---------qa/suites/rbd/nbd/conf1
l---------qa/suites/rbd/nbd/msgr-failures1
l---------qa/suites/rbd/nbd/objectstore1
l---------qa/suites/rbd/nbd/supported-random-distro$1
l---------qa/suites/rbd/nbd/thrashers1
l---------qa/suites/rbd/nbd/thrashosds-health.yaml1
l---------qa/suites/rbd/nbd/workloads/.qa1
-rw-r--r--qa/suites/rbd/nbd/workloads/rbd_fsx_nbd.yaml14
-rw-r--r--qa/suites/rbd/nbd/workloads/rbd_nbd.yaml9
-rw-r--r--qa/suites/rbd/nbd/workloads/rbd_nbd_diff_continuous.yaml14
l---------qa/suites/rbd/pwl-cache/.qa1
-rw-r--r--qa/suites/rbd/pwl-cache/home/%0
l---------qa/suites/rbd/pwl-cache/home/.qa1
l---------qa/suites/rbd/pwl-cache/home/1-base1
-rw-r--r--qa/suites/rbd/pwl-cache/home/2-cluster/+0
l---------qa/suites/rbd/pwl-cache/home/2-cluster/.qa1
-rw-r--r--qa/suites/rbd/pwl-cache/home/2-cluster/fix-2.yaml3
-rw-r--r--qa/suites/rbd/pwl-cache/home/2-cluster/openstack.yaml4
l---------qa/suites/rbd/pwl-cache/home/3-supported-random-distro$1
-rw-r--r--qa/suites/rbd/pwl-cache/home/4-cache-path.yaml13
l---------qa/suites/rbd/pwl-cache/home/5-cache-mode/.qa1
-rw-r--r--qa/suites/rbd/pwl-cache/home/5-cache-mode/rwl.yaml5
-rw-r--r--qa/suites/rbd/pwl-cache/home/5-cache-mode/ssd.yaml5
l---------qa/suites/rbd/pwl-cache/home/6-cache-size/.qa1
-rw-r--r--qa/suites/rbd/pwl-cache/home/6-cache-size/1G.yaml5
-rw-r--r--qa/suites/rbd/pwl-cache/home/6-cache-size/8G.yaml5
l---------qa/suites/rbd/pwl-cache/home/7-workloads/.qa1
l---------qa/suites/rbd/pwl-cache/home/7-workloads/c_api_tests_with_defaults.yaml1
-rw-r--r--qa/suites/rbd/pwl-cache/home/7-workloads/fio.yaml8
-rw-r--r--qa/suites/rbd/pwl-cache/home/7-workloads/recovery.yaml9
l---------qa/suites/rbd/pwl-cache/home/conf1
-rw-r--r--qa/suites/rbd/pwl-cache/tmpfs/%0
l---------qa/suites/rbd/pwl-cache/tmpfs/.qa1
l---------qa/suites/rbd/pwl-cache/tmpfs/1-base1
-rw-r--r--qa/suites/rbd/pwl-cache/tmpfs/2-cluster/+0
l---------qa/suites/rbd/pwl-cache/tmpfs/2-cluster/.qa1
-rw-r--r--qa/suites/rbd/pwl-cache/tmpfs/2-cluster/fix-2.yaml3
-rw-r--r--qa/suites/rbd/pwl-cache/tmpfs/2-cluster/openstack.yaml4
l---------qa/suites/rbd/pwl-cache/tmpfs/3-supported-random-distro$1
-rw-r--r--qa/suites/rbd/pwl-cache/tmpfs/4-cache-path.yaml22
l---------qa/suites/rbd/pwl-cache/tmpfs/5-cache-mode/.qa1
-rw-r--r--qa/suites/rbd/pwl-cache/tmpfs/5-cache-mode/rwl.yaml5
-rw-r--r--qa/suites/rbd/pwl-cache/tmpfs/5-cache-mode/ssd.yaml5
l---------qa/suites/rbd/pwl-cache/tmpfs/6-cache-size/.qa1
-rw-r--r--qa/suites/rbd/pwl-cache/tmpfs/6-cache-size/1G.yaml5
-rw-r--r--qa/suites/rbd/pwl-cache/tmpfs/6-cache-size/5G.yaml5
l---------qa/suites/rbd/pwl-cache/tmpfs/7-workloads/.qa1
-rw-r--r--qa/suites/rbd/pwl-cache/tmpfs/7-workloads/qemu_xfstests.yaml8
l---------qa/suites/rbd/pwl-cache/tmpfs/conf1
-rw-r--r--qa/suites/rbd/qemu/%0
l---------qa/suites/rbd/qemu/.qa1
l---------qa/suites/rbd/qemu/cache/.qa1
-rw-r--r--qa/suites/rbd/qemu/cache/none.yaml6
-rw-r--r--qa/suites/rbd/qemu/cache/writearound.yaml7
-rw-r--r--qa/suites/rbd/qemu/cache/writeback.yaml7
-rw-r--r--qa/suites/rbd/qemu/cache/writethrough.yaml7
-rw-r--r--qa/suites/rbd/qemu/clusters/+0
l---------qa/suites/rbd/qemu/clusters/.qa1
l---------qa/suites/rbd/qemu/clusters/fixed-3.yaml1
-rw-r--r--qa/suites/rbd/qemu/clusters/openstack.yaml8
l---------qa/suites/rbd/qemu/conf1
l---------qa/suites/rbd/qemu/data-pool1
l---------qa/suites/rbd/qemu/features/.qa1
-rw-r--r--qa/suites/rbd/qemu/features/defaults.yaml5
-rw-r--r--qa/suites/rbd/qemu/features/journaling.yaml5
-rw-r--r--qa/suites/rbd/qemu/features/readbalance.yaml10
l---------qa/suites/rbd/qemu/msgr-failures/.qa1
-rw-r--r--qa/suites/rbd/qemu/msgr-failures/few.yaml9
l---------qa/suites/rbd/qemu/objectstore1
l---------qa/suites/rbd/qemu/supported-random-distro$1
l---------qa/suites/rbd/qemu/workloads/.qa1
-rw-r--r--qa/suites/rbd/qemu/workloads/qemu_bonnie.yaml6
-rw-r--r--qa/suites/rbd/qemu/workloads/qemu_fsstress.yaml6
-rw-r--r--qa/suites/rbd/qemu/workloads/qemu_iozone.yaml.disabled6
-rw-r--r--qa/suites/rbd/qemu/workloads/qemu_xfstests.yaml8
-rw-r--r--qa/suites/rbd/singleton-bluestore/%0
l---------qa/suites/rbd/singleton-bluestore/.qa1
l---------qa/suites/rbd/singleton-bluestore/all/.qa1
-rw-r--r--qa/suites/rbd/singleton-bluestore/all/issue-20295.yaml12
l---------qa/suites/rbd/singleton-bluestore/conf1
l---------qa/suites/rbd/singleton-bluestore/objectstore/.qa1
l---------qa/suites/rbd/singleton-bluestore/objectstore/bluestore-bitmap.yaml1
l---------qa/suites/rbd/singleton-bluestore/objectstore/bluestore-comp-snappy.yaml1
-rw-r--r--qa/suites/rbd/singleton-bluestore/openstack.yaml4
l---------qa/suites/rbd/singleton-bluestore/supported-random-distro$1
-rw-r--r--qa/suites/rbd/singleton/%0
l---------qa/suites/rbd/singleton/.qa1
l---------qa/suites/rbd/singleton/all/.qa1
-rw-r--r--qa/suites/rbd/singleton/all/admin_socket.yaml9
-rw-r--r--qa/suites/rbd/singleton/all/formatted-output.yaml10
-rw-r--r--qa/suites/rbd/singleton/all/merge_diff.yaml9
-rw-r--r--qa/suites/rbd/singleton/all/mon-command-help.yaml10
-rw-r--r--qa/suites/rbd/singleton/all/permissions.yaml9
-rw-r--r--qa/suites/rbd/singleton/all/qemu-iotests-no-cache.yaml19
-rw-r--r--qa/suites/rbd/singleton/all/qemu-iotests-writearound.yaml20
-rw-r--r--qa/suites/rbd/singleton/all/qemu-iotests-writeback.yaml20
-rw-r--r--qa/suites/rbd/singleton/all/qemu-iotests-writethrough.yaml20
-rw-r--r--qa/suites/rbd/singleton/all/qos.yaml9
-rw-r--r--qa/suites/rbd/singleton/all/rbd-vs-unmanaged-snaps.yaml14
-rw-r--r--qa/suites/rbd/singleton/all/rbd_mirror.yaml12
-rw-r--r--qa/suites/rbd/singleton/all/rbd_tasks.yaml9
-rw-r--r--qa/suites/rbd/singleton/all/rbdmap_RBDMAPFILE.yaml7
-rw-r--r--qa/suites/rbd/singleton/all/read-flags-no-cache.yaml12
-rw-r--r--qa/suites/rbd/singleton/all/read-flags-writeback.yaml13
-rw-r--r--qa/suites/rbd/singleton/all/read-flags-writethrough.yaml13
-rw-r--r--qa/suites/rbd/singleton/all/snap-diff.yaml10
-rw-r--r--qa/suites/rbd/singleton/all/verify_pool.yaml9
l---------qa/suites/rbd/singleton/conf1
l---------qa/suites/rbd/singleton/objectstore1
-rw-r--r--qa/suites/rbd/singleton/openstack.yaml4
l---------qa/suites/rbd/singleton/supported-random-distro$1
-rw-r--r--qa/suites/rbd/thrash/%0
l---------qa/suites/rbd/thrash/.qa1
l---------qa/suites/rbd/thrash/base/.qa1
-rw-r--r--qa/suites/rbd/thrash/base/install.yaml3
-rw-r--r--qa/suites/rbd/thrash/clusters/+0
l---------qa/suites/rbd/thrash/clusters/.qa1
l---------qa/suites/rbd/thrash/clusters/fixed-2.yaml1
-rw-r--r--qa/suites/rbd/thrash/clusters/openstack.yaml8
l---------qa/suites/rbd/thrash/conf1
l---------qa/suites/rbd/thrash/msgr-failures/.qa1
-rw-r--r--qa/suites/rbd/thrash/msgr-failures/few.yaml8
l---------qa/suites/rbd/thrash/objectstore1
l---------qa/suites/rbd/thrash/supported-random-distro$1
l---------qa/suites/rbd/thrash/thrashers/.qa1
-rw-r--r--qa/suites/rbd/thrash/thrashers/default.yaml8
l---------qa/suites/rbd/thrash/thrashosds-health.yaml1
l---------qa/suites/rbd/thrash/workloads/.qa1
-rw-r--r--qa/suites/rbd/thrash/workloads/journal.yaml5
-rw-r--r--qa/suites/rbd/thrash/workloads/rbd_api_tests.yaml14
-rw-r--r--qa/suites/rbd/thrash/workloads/rbd_api_tests_copy_on_read.yaml17
-rw-r--r--qa/suites/rbd/thrash/workloads/rbd_api_tests_journaling.yaml14
-rw-r--r--qa/suites/rbd/thrash/workloads/rbd_api_tests_no_locking.yaml14
-rw-r--r--qa/suites/rbd/thrash/workloads/rbd_fsx_cache_writearound.yaml10
-rw-r--r--qa/suites/rbd/thrash/workloads/rbd_fsx_cache_writeback.yaml10
-rw-r--r--qa/suites/rbd/thrash/workloads/rbd_fsx_cache_writethrough.yaml10
-rw-r--r--qa/suites/rbd/thrash/workloads/rbd_fsx_copy_on_read.yaml10
-rw-r--r--qa/suites/rbd/thrash/workloads/rbd_fsx_deep_copy.yaml5
-rw-r--r--qa/suites/rbd/thrash/workloads/rbd_fsx_journal.yaml5
-rw-r--r--qa/suites/rbd/thrash/workloads/rbd_fsx_nocache.yaml9
-rw-r--r--qa/suites/rbd/thrash/workloads/rbd_fsx_rate_limit.yaml11
-rw-r--r--qa/suites/rbd/valgrind/%0
l---------qa/suites/rbd/valgrind/.qa1
l---------qa/suites/rbd/valgrind/base/.qa1
-rw-r--r--qa/suites/rbd/valgrind/base/install.yaml3
l---------qa/suites/rbd/valgrind/centos_latest.yaml1
l---------qa/suites/rbd/valgrind/clusters1
l---------qa/suites/rbd/valgrind/conf1
l---------qa/suites/rbd/valgrind/objectstore1
l---------qa/suites/rbd/valgrind/validator/.qa1
-rw-r--r--qa/suites/rbd/valgrind/validator/memcheck.yaml12
l---------qa/suites/rbd/valgrind/workloads/.qa1
-rw-r--r--qa/suites/rbd/valgrind/workloads/c_api_tests.yaml14
-rw-r--r--qa/suites/rbd/valgrind/workloads/c_api_tests_with_defaults.yaml14
-rw-r--r--qa/suites/rbd/valgrind/workloads/c_api_tests_with_journaling.yaml14
-rw-r--r--qa/suites/rbd/valgrind/workloads/fsx.yaml4
-rw-r--r--qa/suites/rbd/valgrind/workloads/python_api_tests.yaml12
-rw-r--r--qa/suites/rbd/valgrind/workloads/python_api_tests_with_defaults.yaml12
-rw-r--r--qa/suites/rbd/valgrind/workloads/python_api_tests_with_journaling.yaml12
-rw-r--r--qa/suites/rbd/valgrind/workloads/rbd_mirror.yaml10
399 files changed, 2027 insertions, 0 deletions
diff --git a/qa/suites/rbd/.qa b/qa/suites/rbd/.qa
new file mode 120000
index 000000000..a602a0353
--- /dev/null
+++ b/qa/suites/rbd/.qa
@@ -0,0 +1 @@
+../.qa/ \ No newline at end of file
diff --git a/qa/suites/rbd/basic/% b/qa/suites/rbd/basic/%
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/qa/suites/rbd/basic/%
diff --git a/qa/suites/rbd/basic/.qa b/qa/suites/rbd/basic/.qa
new file mode 120000
index 000000000..a602a0353
--- /dev/null
+++ b/qa/suites/rbd/basic/.qa
@@ -0,0 +1 @@
+../.qa/ \ No newline at end of file
diff --git a/qa/suites/rbd/basic/base/.qa b/qa/suites/rbd/basic/base/.qa
new file mode 120000
index 000000000..a602a0353
--- /dev/null
+++ b/qa/suites/rbd/basic/base/.qa
@@ -0,0 +1 @@
+../.qa/ \ No newline at end of file
diff --git a/qa/suites/rbd/basic/base/install.yaml b/qa/suites/rbd/basic/base/install.yaml
new file mode 100644
index 000000000..2030acb90
--- /dev/null
+++ b/qa/suites/rbd/basic/base/install.yaml
@@ -0,0 +1,3 @@
+tasks:
+- install:
+- ceph:
diff --git a/qa/suites/rbd/basic/clusters/+ b/qa/suites/rbd/basic/clusters/+
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/qa/suites/rbd/basic/clusters/+
diff --git a/qa/suites/rbd/basic/clusters/.qa b/qa/suites/rbd/basic/clusters/.qa
new file mode 120000
index 000000000..a602a0353
--- /dev/null
+++ b/qa/suites/rbd/basic/clusters/.qa
@@ -0,0 +1 @@
+../.qa/ \ No newline at end of file
diff --git a/qa/suites/rbd/basic/clusters/fixed-1.yaml b/qa/suites/rbd/basic/clusters/fixed-1.yaml
new file mode 120000
index 000000000..02df5dd0c
--- /dev/null
+++ b/qa/suites/rbd/basic/clusters/fixed-1.yaml
@@ -0,0 +1 @@
+.qa/clusters/fixed-1.yaml \ No newline at end of file
diff --git a/qa/suites/rbd/basic/clusters/openstack.yaml b/qa/suites/rbd/basic/clusters/openstack.yaml
new file mode 100644
index 000000000..f4d1349b4
--- /dev/null
+++ b/qa/suites/rbd/basic/clusters/openstack.yaml
@@ -0,0 +1,4 @@
+openstack:
+ - volumes: # attached to each instance
+ count: 3
+ size: 30 # GB
diff --git a/qa/suites/rbd/basic/conf b/qa/suites/rbd/basic/conf
new file mode 120000
index 000000000..4bc0fe86c
--- /dev/null
+++ b/qa/suites/rbd/basic/conf
@@ -0,0 +1 @@
+.qa/rbd/conf \ No newline at end of file
diff --git a/qa/suites/rbd/basic/msgr-failures/.qa b/qa/suites/rbd/basic/msgr-failures/.qa
new file mode 120000
index 000000000..a602a0353
--- /dev/null
+++ b/qa/suites/rbd/basic/msgr-failures/.qa
@@ -0,0 +1 @@
+../.qa/ \ No newline at end of file
diff --git a/qa/suites/rbd/basic/msgr-failures/few.yaml b/qa/suites/rbd/basic/msgr-failures/few.yaml
new file mode 100644
index 000000000..519288992
--- /dev/null
+++ b/qa/suites/rbd/basic/msgr-failures/few.yaml
@@ -0,0 +1,8 @@
+overrides:
+ ceph:
+ conf:
+ global:
+ ms inject socket failures: 5000
+ mon client directed command retry: 5
+ log-ignorelist:
+ - \(OSD_SLOW_PING_TIME
diff --git a/qa/suites/rbd/basic/objectstore b/qa/suites/rbd/basic/objectstore
new file mode 120000
index 000000000..c40bd3261
--- /dev/null
+++ b/qa/suites/rbd/basic/objectstore
@@ -0,0 +1 @@
+.qa/objectstore \ No newline at end of file
diff --git a/qa/suites/rbd/basic/supported-random-distro$ b/qa/suites/rbd/basic/supported-random-distro$
new file mode 120000
index 000000000..0862b4457
--- /dev/null
+++ b/qa/suites/rbd/basic/supported-random-distro$
@@ -0,0 +1 @@
+.qa/distros/supported-random-distro$ \ No newline at end of file
diff --git a/qa/suites/rbd/basic/tasks/.qa b/qa/suites/rbd/basic/tasks/.qa
new file mode 120000
index 000000000..a602a0353
--- /dev/null
+++ b/qa/suites/rbd/basic/tasks/.qa
@@ -0,0 +1 @@
+../.qa/ \ No newline at end of file
diff --git a/qa/suites/rbd/basic/tasks/rbd_api_tests_old_format.yaml b/qa/suites/rbd/basic/tasks/rbd_api_tests_old_format.yaml
new file mode 100644
index 000000000..5bb734d24
--- /dev/null
+++ b/qa/suites/rbd/basic/tasks/rbd_api_tests_old_format.yaml
@@ -0,0 +1,12 @@
+overrides:
+ ceph:
+ log-ignorelist:
+ - overall HEALTH_
+ - \(CACHE_POOL_NO_HIT_SET\)
+ - is full \(reached quota
+ - \(POOL_FULL\)
+tasks:
+- workunit:
+ clients:
+ client.0:
+ - rbd/test_librbd.sh
diff --git a/qa/suites/rbd/basic/tasks/rbd_cls_tests.yaml b/qa/suites/rbd/basic/tasks/rbd_cls_tests.yaml
new file mode 100644
index 000000000..51b35e2e1
--- /dev/null
+++ b/qa/suites/rbd/basic/tasks/rbd_cls_tests.yaml
@@ -0,0 +1,7 @@
+tasks:
+- workunit:
+ clients:
+ client.0:
+ - cls/test_cls_rbd.sh
+ - cls/test_cls_lock.sh
+ - cls/test_cls_journal.sh
diff --git a/qa/suites/rbd/basic/tasks/rbd_lock_and_fence.yaml b/qa/suites/rbd/basic/tasks/rbd_lock_and_fence.yaml
new file mode 100644
index 000000000..d2c80ad65
--- /dev/null
+++ b/qa/suites/rbd/basic/tasks/rbd_lock_and_fence.yaml
@@ -0,0 +1,5 @@
+tasks:
+- workunit:
+ clients:
+ client.0:
+ - rbd/test_lock_fence.sh
diff --git a/qa/suites/rbd/basic/tasks/rbd_python_api_tests_old_format.yaml b/qa/suites/rbd/basic/tasks/rbd_python_api_tests_old_format.yaml
new file mode 100644
index 000000000..eae484a97
--- /dev/null
+++ b/qa/suites/rbd/basic/tasks/rbd_python_api_tests_old_format.yaml
@@ -0,0 +1,14 @@
+overrides:
+ ceph:
+ log-ignorelist:
+ - \(SLOW_OPS\)
+ - slow request
+ install:
+ ceph:
+ extra_system_packages:
+ - python3-pytest
+tasks:
+- workunit:
+ clients:
+ client.0:
+ - rbd/test_librbd_python.sh
diff --git a/qa/suites/rbd/cli/% b/qa/suites/rbd/cli/%
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/qa/suites/rbd/cli/%
diff --git a/qa/suites/rbd/cli/.qa b/qa/suites/rbd/cli/.qa
new file mode 120000
index 000000000..a602a0353
--- /dev/null
+++ b/qa/suites/rbd/cli/.qa
@@ -0,0 +1 @@
+../.qa/ \ No newline at end of file
diff --git a/qa/suites/rbd/cli/base/.qa b/qa/suites/rbd/cli/base/.qa
new file mode 120000
index 000000000..a602a0353
--- /dev/null
+++ b/qa/suites/rbd/cli/base/.qa
@@ -0,0 +1 @@
+../.qa/ \ No newline at end of file
diff --git a/qa/suites/rbd/cli/base/install.yaml b/qa/suites/rbd/cli/base/install.yaml
new file mode 100644
index 000000000..2030acb90
--- /dev/null
+++ b/qa/suites/rbd/cli/base/install.yaml
@@ -0,0 +1,3 @@
+tasks:
+- install:
+- ceph:
diff --git a/qa/suites/rbd/cli/clusters b/qa/suites/rbd/cli/clusters
new file mode 120000
index 000000000..ae92569e8
--- /dev/null
+++ b/qa/suites/rbd/cli/clusters
@@ -0,0 +1 @@
+../basic/clusters \ No newline at end of file
diff --git a/qa/suites/rbd/cli/conf b/qa/suites/rbd/cli/conf
new file mode 120000
index 000000000..4bc0fe86c
--- /dev/null
+++ b/qa/suites/rbd/cli/conf
@@ -0,0 +1 @@
+.qa/rbd/conf \ No newline at end of file
diff --git a/qa/suites/rbd/cli/data-pool b/qa/suites/rbd/cli/data-pool
new file mode 120000
index 000000000..3df827572
--- /dev/null
+++ b/qa/suites/rbd/cli/data-pool
@@ -0,0 +1 @@
+.qa/rbd/data-pool/ \ No newline at end of file
diff --git a/qa/suites/rbd/cli/features/.qa b/qa/suites/rbd/cli/features/.qa
new file mode 120000
index 000000000..a602a0353
--- /dev/null
+++ b/qa/suites/rbd/cli/features/.qa
@@ -0,0 +1 @@
+../.qa/ \ No newline at end of file
diff --git a/qa/suites/rbd/cli/features/defaults.yaml b/qa/suites/rbd/cli/features/defaults.yaml
new file mode 100644
index 000000000..75afd68dd
--- /dev/null
+++ b/qa/suites/rbd/cli/features/defaults.yaml
@@ -0,0 +1,5 @@
+overrides:
+ ceph:
+ conf:
+ client:
+ rbd default features: 61
diff --git a/qa/suites/rbd/cli/features/journaling.yaml b/qa/suites/rbd/cli/features/journaling.yaml
new file mode 100644
index 000000000..6cea62a88
--- /dev/null
+++ b/qa/suites/rbd/cli/features/journaling.yaml
@@ -0,0 +1,5 @@
+overrides:
+ ceph:
+ conf:
+ client:
+ rbd default features: 125
diff --git a/qa/suites/rbd/cli/features/layering.yaml b/qa/suites/rbd/cli/features/layering.yaml
new file mode 100644
index 000000000..429b8e145
--- /dev/null
+++ b/qa/suites/rbd/cli/features/layering.yaml
@@ -0,0 +1,5 @@
+overrides:
+ ceph:
+ conf:
+ client:
+ rbd default features: 1
diff --git a/qa/suites/rbd/cli/msgr-failures/.qa b/qa/suites/rbd/cli/msgr-failures/.qa
new file mode 120000
index 000000000..a602a0353
--- /dev/null
+++ b/qa/suites/rbd/cli/msgr-failures/.qa
@@ -0,0 +1 @@
+../.qa/ \ No newline at end of file
diff --git a/qa/suites/rbd/cli/msgr-failures/few.yaml b/qa/suites/rbd/cli/msgr-failures/few.yaml
new file mode 100644
index 000000000..519288992
--- /dev/null
+++ b/qa/suites/rbd/cli/msgr-failures/few.yaml
@@ -0,0 +1,8 @@
+overrides:
+ ceph:
+ conf:
+ global:
+ ms inject socket failures: 5000
+ mon client directed command retry: 5
+ log-ignorelist:
+ - \(OSD_SLOW_PING_TIME
diff --git a/qa/suites/rbd/cli/objectstore b/qa/suites/rbd/cli/objectstore
new file mode 120000
index 000000000..c40bd3261
--- /dev/null
+++ b/qa/suites/rbd/cli/objectstore
@@ -0,0 +1 @@
+.qa/objectstore \ No newline at end of file
diff --git a/qa/suites/rbd/cli/supported-random-distro$ b/qa/suites/rbd/cli/supported-random-distro$
new file mode 120000
index 000000000..0862b4457
--- /dev/null
+++ b/qa/suites/rbd/cli/supported-random-distro$
@@ -0,0 +1 @@
+.qa/distros/supported-random-distro$ \ No newline at end of file
diff --git a/qa/suites/rbd/cli/workloads/.qa b/qa/suites/rbd/cli/workloads/.qa
new file mode 120000
index 000000000..a602a0353
--- /dev/null
+++ b/qa/suites/rbd/cli/workloads/.qa
@@ -0,0 +1 @@
+../.qa/ \ No newline at end of file
diff --git a/qa/suites/rbd/cli/workloads/rbd_cli_generic.yaml b/qa/suites/rbd/cli/workloads/rbd_cli_generic.yaml
new file mode 100644
index 000000000..be43b3e8d
--- /dev/null
+++ b/qa/suites/rbd/cli/workloads/rbd_cli_generic.yaml
@@ -0,0 +1,5 @@
+tasks:
+- workunit:
+ clients:
+ client.0:
+ - rbd/cli_generic.sh
diff --git a/qa/suites/rbd/cli/workloads/rbd_cli_groups.yaml b/qa/suites/rbd/cli/workloads/rbd_cli_groups.yaml
new file mode 100644
index 000000000..6ff836342
--- /dev/null
+++ b/qa/suites/rbd/cli/workloads/rbd_cli_groups.yaml
@@ -0,0 +1,5 @@
+tasks:
+- workunit:
+ clients:
+ client.0:
+ - rbd/rbd_groups.sh
diff --git a/qa/suites/rbd/cli/workloads/rbd_cli_import_export.yaml b/qa/suites/rbd/cli/workloads/rbd_cli_import_export.yaml
new file mode 100644
index 000000000..b08f2612f
--- /dev/null
+++ b/qa/suites/rbd/cli/workloads/rbd_cli_import_export.yaml
@@ -0,0 +1,5 @@
+tasks:
+- workunit:
+ clients:
+ client.0:
+ - rbd/import_export.sh
diff --git a/qa/suites/rbd/cli/workloads/rbd_cli_luks_encryption.yaml b/qa/suites/rbd/cli/workloads/rbd_cli_luks_encryption.yaml
new file mode 100644
index 000000000..bb5d1608e
--- /dev/null
+++ b/qa/suites/rbd/cli/workloads/rbd_cli_luks_encryption.yaml
@@ -0,0 +1,9 @@
+overrides:
+ install:
+ ceph:
+ extra_packages: [rbd-nbd]
+tasks:
+- workunit:
+ clients:
+ client.0:
+ - rbd/luks-encryption.sh
diff --git a/qa/suites/rbd/cli/workloads/rbd_cli_migration.yaml b/qa/suites/rbd/cli/workloads/rbd_cli_migration.yaml
new file mode 100644
index 000000000..b04ac08f7
--- /dev/null
+++ b/qa/suites/rbd/cli/workloads/rbd_cli_migration.yaml
@@ -0,0 +1,5 @@
+tasks:
+- workunit:
+ clients:
+ client.0:
+ - rbd/cli_migration.sh
diff --git a/qa/suites/rbd/cli/workloads/rbd_support_module_recovery.yaml b/qa/suites/rbd/cli/workloads/rbd_support_module_recovery.yaml
new file mode 100644
index 000000000..aa4d0001f
--- /dev/null
+++ b/qa/suites/rbd/cli/workloads/rbd_support_module_recovery.yaml
@@ -0,0 +1,13 @@
+overrides:
+ ceph:
+ conf:
+ mgr:
+ debug rbd: 20
+tasks:
+- install:
+ extra_system_packages:
+ - fio
+- workunit:
+ clients:
+ client.0:
+ - rbd/rbd_support_module_recovery.sh
diff --git a/qa/suites/rbd/cli_v1/% b/qa/suites/rbd/cli_v1/%
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/qa/suites/rbd/cli_v1/%
diff --git a/qa/suites/rbd/cli_v1/.qa b/qa/suites/rbd/cli_v1/.qa
new file mode 120000
index 000000000..a602a0353
--- /dev/null
+++ b/qa/suites/rbd/cli_v1/.qa
@@ -0,0 +1 @@
+../.qa/ \ No newline at end of file
diff --git a/qa/suites/rbd/cli_v1/base/.qa b/qa/suites/rbd/cli_v1/base/.qa
new file mode 120000
index 000000000..a602a0353
--- /dev/null
+++ b/qa/suites/rbd/cli_v1/base/.qa
@@ -0,0 +1 @@
+../.qa/ \ No newline at end of file
diff --git a/qa/suites/rbd/cli_v1/base/install.yaml b/qa/suites/rbd/cli_v1/base/install.yaml
new file mode 100644
index 000000000..2030acb90
--- /dev/null
+++ b/qa/suites/rbd/cli_v1/base/install.yaml
@@ -0,0 +1,3 @@
+tasks:
+- install:
+- ceph:
diff --git a/qa/suites/rbd/cli_v1/clusters b/qa/suites/rbd/cli_v1/clusters
new file mode 120000
index 000000000..ae92569e8
--- /dev/null
+++ b/qa/suites/rbd/cli_v1/clusters
@@ -0,0 +1 @@
+../basic/clusters \ No newline at end of file
diff --git a/qa/suites/rbd/cli_v1/conf b/qa/suites/rbd/cli_v1/conf
new file mode 120000
index 000000000..4bc0fe86c
--- /dev/null
+++ b/qa/suites/rbd/cli_v1/conf
@@ -0,0 +1 @@
+.qa/rbd/conf \ No newline at end of file
diff --git a/qa/suites/rbd/cli_v1/features/.qa b/qa/suites/rbd/cli_v1/features/.qa
new file mode 120000
index 000000000..a602a0353
--- /dev/null
+++ b/qa/suites/rbd/cli_v1/features/.qa
@@ -0,0 +1 @@
+../.qa/ \ No newline at end of file
diff --git a/qa/suites/rbd/cli_v1/features/format-1.yaml b/qa/suites/rbd/cli_v1/features/format-1.yaml
new file mode 100644
index 000000000..9c5320835
--- /dev/null
+++ b/qa/suites/rbd/cli_v1/features/format-1.yaml
@@ -0,0 +1,5 @@
+overrides:
+ ceph:
+ conf:
+ client:
+ rbd default format: 1
diff --git a/qa/suites/rbd/cli_v1/msgr-failures/.qa b/qa/suites/rbd/cli_v1/msgr-failures/.qa
new file mode 120000
index 000000000..a602a0353
--- /dev/null
+++ b/qa/suites/rbd/cli_v1/msgr-failures/.qa
@@ -0,0 +1 @@
+../.qa/ \ No newline at end of file
diff --git a/qa/suites/rbd/cli_v1/msgr-failures/few.yaml b/qa/suites/rbd/cli_v1/msgr-failures/few.yaml
new file mode 100644
index 000000000..519288992
--- /dev/null
+++ b/qa/suites/rbd/cli_v1/msgr-failures/few.yaml
@@ -0,0 +1,8 @@
+overrides:
+ ceph:
+ conf:
+ global:
+ ms inject socket failures: 5000
+ mon client directed command retry: 5
+ log-ignorelist:
+ - \(OSD_SLOW_PING_TIME
diff --git a/qa/suites/rbd/cli_v1/objectstore b/qa/suites/rbd/cli_v1/objectstore
new file mode 120000
index 000000000..c40bd3261
--- /dev/null
+++ b/qa/suites/rbd/cli_v1/objectstore
@@ -0,0 +1 @@
+.qa/objectstore \ No newline at end of file
diff --git a/qa/suites/rbd/cli_v1/supported-random-distro$ b/qa/suites/rbd/cli_v1/supported-random-distro$
new file mode 120000
index 000000000..0862b4457
--- /dev/null
+++ b/qa/suites/rbd/cli_v1/supported-random-distro$
@@ -0,0 +1 @@
+.qa/distros/supported-random-distro$ \ No newline at end of file
diff --git a/qa/suites/rbd/cli_v1/workloads/.qa b/qa/suites/rbd/cli_v1/workloads/.qa
new file mode 120000
index 000000000..a602a0353
--- /dev/null
+++ b/qa/suites/rbd/cli_v1/workloads/.qa
@@ -0,0 +1 @@
+../.qa/ \ No newline at end of file
diff --git a/qa/suites/rbd/cli_v1/workloads/rbd_cli_generic.yaml b/qa/suites/rbd/cli_v1/workloads/rbd_cli_generic.yaml
new file mode 100644
index 000000000..be43b3e8d
--- /dev/null
+++ b/qa/suites/rbd/cli_v1/workloads/rbd_cli_generic.yaml
@@ -0,0 +1,5 @@
+tasks:
+- workunit:
+ clients:
+ client.0:
+ - rbd/cli_generic.sh
diff --git a/qa/suites/rbd/cli_v1/workloads/rbd_cli_import_export.yaml b/qa/suites/rbd/cli_v1/workloads/rbd_cli_import_export.yaml
new file mode 100644
index 000000000..b08f2612f
--- /dev/null
+++ b/qa/suites/rbd/cli_v1/workloads/rbd_cli_import_export.yaml
@@ -0,0 +1,5 @@
+tasks:
+- workunit:
+ clients:
+ client.0:
+ - rbd/import_export.sh
diff --git a/qa/suites/rbd/encryption/% b/qa/suites/rbd/encryption/%
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/qa/suites/rbd/encryption/%
diff --git a/qa/suites/rbd/encryption/.qa b/qa/suites/rbd/encryption/.qa
new file mode 120000
index 000000000..a602a0353
--- /dev/null
+++ b/qa/suites/rbd/encryption/.qa
@@ -0,0 +1 @@
+../.qa/ \ No newline at end of file
diff --git a/qa/suites/rbd/encryption/cache/.qa b/qa/suites/rbd/encryption/cache/.qa
new file mode 120000
index 000000000..a602a0353
--- /dev/null
+++ b/qa/suites/rbd/encryption/cache/.qa
@@ -0,0 +1 @@
+../.qa/ \ No newline at end of file
diff --git a/qa/suites/rbd/encryption/cache/none.yaml b/qa/suites/rbd/encryption/cache/none.yaml
new file mode 100644
index 000000000..42fd9c955
--- /dev/null
+++ b/qa/suites/rbd/encryption/cache/none.yaml
@@ -0,0 +1,6 @@
+tasks:
+- install:
+- ceph:
+ conf:
+ client:
+ rbd cache: false
diff --git a/qa/suites/rbd/encryption/cache/writearound.yaml b/qa/suites/rbd/encryption/cache/writearound.yaml
new file mode 100644
index 000000000..b6f8e319b
--- /dev/null
+++ b/qa/suites/rbd/encryption/cache/writearound.yaml
@@ -0,0 +1,7 @@
+tasks:
+- install:
+- ceph:
+ conf:
+ client:
+ rbd cache: true
+ rbd cache policy: writearound
diff --git a/qa/suites/rbd/encryption/cache/writeback.yaml b/qa/suites/rbd/encryption/cache/writeback.yaml
new file mode 100644
index 000000000..a55ec1df0
--- /dev/null
+++ b/qa/suites/rbd/encryption/cache/writeback.yaml
@@ -0,0 +1,7 @@
+tasks:
+- install:
+- ceph:
+ conf:
+ client:
+ rbd cache: true
+ rbd cache policy: writeback
diff --git a/qa/suites/rbd/encryption/cache/writethrough.yaml b/qa/suites/rbd/encryption/cache/writethrough.yaml
new file mode 100644
index 000000000..6dc29e16c
--- /dev/null
+++ b/qa/suites/rbd/encryption/cache/writethrough.yaml
@@ -0,0 +1,7 @@
+tasks:
+- install:
+- ceph:
+ conf:
+ client:
+ rbd cache: true
+ rbd cache max dirty: 0
diff --git a/qa/suites/rbd/encryption/clusters/+ b/qa/suites/rbd/encryption/clusters/+
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/qa/suites/rbd/encryption/clusters/+
diff --git a/qa/suites/rbd/encryption/clusters/.qa b/qa/suites/rbd/encryption/clusters/.qa
new file mode 120000
index 000000000..a602a0353
--- /dev/null
+++ b/qa/suites/rbd/encryption/clusters/.qa
@@ -0,0 +1 @@
+../.qa/ \ No newline at end of file
diff --git a/qa/suites/rbd/encryption/clusters/fixed-3.yaml b/qa/suites/rbd/encryption/clusters/fixed-3.yaml
new file mode 120000
index 000000000..f75a848b8
--- /dev/null
+++ b/qa/suites/rbd/encryption/clusters/fixed-3.yaml
@@ -0,0 +1 @@
+.qa/clusters/fixed-3.yaml \ No newline at end of file
diff --git a/qa/suites/rbd/encryption/clusters/openstack.yaml b/qa/suites/rbd/encryption/clusters/openstack.yaml
new file mode 100644
index 000000000..9c39c7e5f
--- /dev/null
+++ b/qa/suites/rbd/encryption/clusters/openstack.yaml
@@ -0,0 +1,8 @@
+openstack:
+ - machine:
+ disk: 40 # GB
+ ram: 30000 # MB
+ cpus: 1
+ volumes: # attached to each instance
+ count: 4
+ size: 30 # GB
diff --git a/qa/suites/rbd/encryption/conf b/qa/suites/rbd/encryption/conf
new file mode 120000
index 000000000..4bc0fe86c
--- /dev/null
+++ b/qa/suites/rbd/encryption/conf
@@ -0,0 +1 @@
+.qa/rbd/conf \ No newline at end of file
diff --git a/qa/suites/rbd/encryption/data-pool b/qa/suites/rbd/encryption/data-pool
new file mode 120000
index 000000000..3df827572
--- /dev/null
+++ b/qa/suites/rbd/encryption/data-pool
@@ -0,0 +1 @@
+.qa/rbd/data-pool/ \ No newline at end of file
diff --git a/qa/suites/rbd/encryption/features/.qa b/qa/suites/rbd/encryption/features/.qa
new file mode 120000
index 000000000..a602a0353
--- /dev/null
+++ b/qa/suites/rbd/encryption/features/.qa
@@ -0,0 +1 @@
+../.qa/ \ No newline at end of file
diff --git a/qa/suites/rbd/encryption/features/defaults.yaml b/qa/suites/rbd/encryption/features/defaults.yaml
new file mode 100644
index 000000000..75afd68dd
--- /dev/null
+++ b/qa/suites/rbd/encryption/features/defaults.yaml
@@ -0,0 +1,5 @@
+overrides:
+ ceph:
+ conf:
+ client:
+ rbd default features: 61
diff --git a/qa/suites/rbd/encryption/msgr-failures/.qa b/qa/suites/rbd/encryption/msgr-failures/.qa
new file mode 120000
index 000000000..a602a0353
--- /dev/null
+++ b/qa/suites/rbd/encryption/msgr-failures/.qa
@@ -0,0 +1 @@
+../.qa/ \ No newline at end of file
diff --git a/qa/suites/rbd/encryption/msgr-failures/few.yaml b/qa/suites/rbd/encryption/msgr-failures/few.yaml
new file mode 100644
index 000000000..ca8e09853
--- /dev/null
+++ b/qa/suites/rbd/encryption/msgr-failures/few.yaml
@@ -0,0 +1,9 @@
+overrides:
+ ceph:
+ conf:
+ global:
+ ms inject socket failures: 5000
+ mon client directed command retry: 5
+ log-ignorelist:
+ - but it is still running
+ - \(OSD_SLOW_PING_TIME
diff --git a/qa/suites/rbd/encryption/objectstore b/qa/suites/rbd/encryption/objectstore
new file mode 120000
index 000000000..c40bd3261
--- /dev/null
+++ b/qa/suites/rbd/encryption/objectstore
@@ -0,0 +1 @@
+.qa/objectstore \ No newline at end of file
diff --git a/qa/suites/rbd/encryption/supported-random-distro$ b/qa/suites/rbd/encryption/supported-random-distro$
new file mode 120000
index 000000000..0862b4457
--- /dev/null
+++ b/qa/suites/rbd/encryption/supported-random-distro$
@@ -0,0 +1 @@
+.qa/distros/supported-random-distro$ \ No newline at end of file
diff --git a/qa/suites/rbd/encryption/workloads/.qa b/qa/suites/rbd/encryption/workloads/.qa
new file mode 120000
index 000000000..a602a0353
--- /dev/null
+++ b/qa/suites/rbd/encryption/workloads/.qa
@@ -0,0 +1 @@
+../.qa/ \ No newline at end of file
diff --git a/qa/suites/rbd/encryption/workloads/qemu_xfstests_luks1.yaml b/qa/suites/rbd/encryption/workloads/qemu_xfstests_luks1.yaml
new file mode 100644
index 000000000..cb3659f97
--- /dev/null
+++ b/qa/suites/rbd/encryption/workloads/qemu_xfstests_luks1.yaml
@@ -0,0 +1,13 @@
+overrides:
+ install:
+ ceph:
+ extra_packages: [rbd-nbd]
+tasks:
+- qemu:
+ all:
+ clone: true
+ parent_encryption_format: luks1
+ type: block
+ disks: 3
+ test: qa/run_xfstests_qemu.sh
+exclude_arch: armv7l
diff --git a/qa/suites/rbd/encryption/workloads/qemu_xfstests_luks1_luks1.yaml b/qa/suites/rbd/encryption/workloads/qemu_xfstests_luks1_luks1.yaml
new file mode 100644
index 000000000..1db50d600
--- /dev/null
+++ b/qa/suites/rbd/encryption/workloads/qemu_xfstests_luks1_luks1.yaml
@@ -0,0 +1,14 @@
+overrides:
+ install:
+ ceph:
+ extra_packages: [rbd-nbd]
+tasks:
+- qemu:
+ all:
+ clone: true
+ parent_encryption_format: luks1
+ encryption_format: luks1
+ type: block
+ disks: 3
+ test: qa/run_xfstests_qemu.sh
+exclude_arch: armv7l
diff --git a/qa/suites/rbd/encryption/workloads/qemu_xfstests_luks1_luks2.yaml b/qa/suites/rbd/encryption/workloads/qemu_xfstests_luks1_luks2.yaml
new file mode 100644
index 000000000..a8ef5f2dd
--- /dev/null
+++ b/qa/suites/rbd/encryption/workloads/qemu_xfstests_luks1_luks2.yaml
@@ -0,0 +1,14 @@
+overrides:
+ install:
+ ceph:
+ extra_packages: [rbd-nbd]
+tasks:
+- qemu:
+ all:
+ clone: true
+ parent_encryption_format: luks1
+ encryption_format: luks2
+ type: block
+ disks: 3
+ test: qa/run_xfstests_qemu.sh
+exclude_arch: armv7l
diff --git a/qa/suites/rbd/encryption/workloads/qemu_xfstests_luks2.yaml b/qa/suites/rbd/encryption/workloads/qemu_xfstests_luks2.yaml
new file mode 100644
index 000000000..203372d60
--- /dev/null
+++ b/qa/suites/rbd/encryption/workloads/qemu_xfstests_luks2.yaml
@@ -0,0 +1,13 @@
+overrides:
+ install:
+ ceph:
+ extra_packages: [rbd-nbd]
+tasks:
+- qemu:
+ all:
+ clone: true
+ parent_encryption_format: luks2
+ type: block
+ disks: 3
+ test: qa/run_xfstests_qemu.sh
+exclude_arch: armv7l
diff --git a/qa/suites/rbd/encryption/workloads/qemu_xfstests_luks2_luks1.yaml b/qa/suites/rbd/encryption/workloads/qemu_xfstests_luks2_luks1.yaml
new file mode 100644
index 000000000..727e5c32a
--- /dev/null
+++ b/qa/suites/rbd/encryption/workloads/qemu_xfstests_luks2_luks1.yaml
@@ -0,0 +1,14 @@
+overrides:
+ install:
+ ceph:
+ extra_packages: [rbd-nbd]
+tasks:
+- qemu:
+ all:
+ clone: true
+ parent_encryption_format: luks2
+ encryption_format: luks1
+ type: block
+ disks: 3
+ test: qa/run_xfstests_qemu.sh
+exclude_arch: armv7l
diff --git a/qa/suites/rbd/encryption/workloads/qemu_xfstests_luks2_luks2.yaml b/qa/suites/rbd/encryption/workloads/qemu_xfstests_luks2_luks2.yaml
new file mode 100644
index 000000000..43ded129f
--- /dev/null
+++ b/qa/suites/rbd/encryption/workloads/qemu_xfstests_luks2_luks2.yaml
@@ -0,0 +1,14 @@
+overrides:
+ install:
+ ceph:
+ extra_packages: [rbd-nbd]
+tasks:
+- qemu:
+ all:
+ clone: true
+ parent_encryption_format: luks2
+ encryption_format: luks2
+ type: block
+ disks: 3
+ test: qa/run_xfstests_qemu.sh
+exclude_arch: armv7l
diff --git a/qa/suites/rbd/encryption/workloads/qemu_xfstests_none_luks1.yaml b/qa/suites/rbd/encryption/workloads/qemu_xfstests_none_luks1.yaml
new file mode 100644
index 000000000..7f3f3776f
--- /dev/null
+++ b/qa/suites/rbd/encryption/workloads/qemu_xfstests_none_luks1.yaml
@@ -0,0 +1,13 @@
+overrides:
+ install:
+ ceph:
+ extra_packages: [rbd-nbd]
+tasks:
+- qemu:
+ all:
+ clone: true
+ encryption_format: luks1
+ type: block
+ disks: 3
+ test: qa/run_xfstests_qemu.sh
+exclude_arch: armv7l
diff --git a/qa/suites/rbd/encryption/workloads/qemu_xfstests_none_luks2.yaml b/qa/suites/rbd/encryption/workloads/qemu_xfstests_none_luks2.yaml
new file mode 100644
index 000000000..c9d9829a9
--- /dev/null
+++ b/qa/suites/rbd/encryption/workloads/qemu_xfstests_none_luks2.yaml
@@ -0,0 +1,13 @@
+overrides:
+ install:
+ ceph:
+ extra_packages: [rbd-nbd]
+tasks:
+- qemu:
+ all:
+ clone: true
+ encryption_format: luks2
+ type: block
+ disks: 3
+ test: qa/run_xfstests_qemu.sh
+exclude_arch: armv7l
diff --git a/qa/suites/rbd/immutable-object-cache/% b/qa/suites/rbd/immutable-object-cache/%
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/qa/suites/rbd/immutable-object-cache/%
diff --git a/qa/suites/rbd/immutable-object-cache/.qa b/qa/suites/rbd/immutable-object-cache/.qa
new file mode 120000
index 000000000..a602a0353
--- /dev/null
+++ b/qa/suites/rbd/immutable-object-cache/.qa
@@ -0,0 +1 @@
+../.qa/ \ No newline at end of file
diff --git a/qa/suites/rbd/immutable-object-cache/clusters/+ b/qa/suites/rbd/immutable-object-cache/clusters/+
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/qa/suites/rbd/immutable-object-cache/clusters/+
diff --git a/qa/suites/rbd/immutable-object-cache/clusters/.qa b/qa/suites/rbd/immutable-object-cache/clusters/.qa
new file mode 120000
index 000000000..a602a0353
--- /dev/null
+++ b/qa/suites/rbd/immutable-object-cache/clusters/.qa
@@ -0,0 +1 @@
+../.qa/ \ No newline at end of file
diff --git a/qa/suites/rbd/immutable-object-cache/clusters/fix-2.yaml b/qa/suites/rbd/immutable-object-cache/clusters/fix-2.yaml
new file mode 100644
index 000000000..dbccecbce
--- /dev/null
+++ b/qa/suites/rbd/immutable-object-cache/clusters/fix-2.yaml
@@ -0,0 +1,3 @@
+roles:
+- [mon.a, mgr.x, osd.0, osd.1]
+- [mon.b, mgr.y, osd.2, osd.3, client.0]
diff --git a/qa/suites/rbd/immutable-object-cache/clusters/openstack.yaml b/qa/suites/rbd/immutable-object-cache/clusters/openstack.yaml
new file mode 100644
index 000000000..b113e4f2e
--- /dev/null
+++ b/qa/suites/rbd/immutable-object-cache/clusters/openstack.yaml
@@ -0,0 +1,4 @@
+openstack:
+ - volumes: # attached to each instance
+ count: 4
+ size: 10 # GB
diff --git a/qa/suites/rbd/immutable-object-cache/conf b/qa/suites/rbd/immutable-object-cache/conf
new file mode 120000
index 000000000..4bc0fe86c
--- /dev/null
+++ b/qa/suites/rbd/immutable-object-cache/conf
@@ -0,0 +1 @@
+.qa/rbd/conf \ No newline at end of file
diff --git a/qa/suites/rbd/immutable-object-cache/pool/.qa b/qa/suites/rbd/immutable-object-cache/pool/.qa
new file mode 120000
index 000000000..a602a0353
--- /dev/null
+++ b/qa/suites/rbd/immutable-object-cache/pool/.qa
@@ -0,0 +1 @@
+../.qa/ \ No newline at end of file
diff --git a/qa/suites/rbd/immutable-object-cache/pool/ceph_and_immutable_object_cache.yaml b/qa/suites/rbd/immutable-object-cache/pool/ceph_and_immutable_object_cache.yaml
new file mode 100644
index 000000000..e977c1ba6
--- /dev/null
+++ b/qa/suites/rbd/immutable-object-cache/pool/ceph_and_immutable_object_cache.yaml
@@ -0,0 +1,12 @@
+tasks:
+- install:
+ extra_packages: ['ceph-immutable-object-cache']
+- ceph:
+ conf:
+ client:
+ rbd parent cache enabled: true
+ rbd plugins: parent_cache
+ immutable_object_cache_path: /tmp/ceph-immutable-object-cache
+ immutable_object_cache_max_size: 10G
+- immutable_object_cache:
+ client.0:
diff --git a/qa/suites/rbd/immutable-object-cache/supported-random-distro$ b/qa/suites/rbd/immutable-object-cache/supported-random-distro$
new file mode 120000
index 000000000..0862b4457
--- /dev/null
+++ b/qa/suites/rbd/immutable-object-cache/supported-random-distro$
@@ -0,0 +1 @@
+.qa/distros/supported-random-distro$ \ No newline at end of file
diff --git a/qa/suites/rbd/immutable-object-cache/workloads/.qa b/qa/suites/rbd/immutable-object-cache/workloads/.qa
new file mode 120000
index 000000000..a602a0353
--- /dev/null
+++ b/qa/suites/rbd/immutable-object-cache/workloads/.qa
@@ -0,0 +1 @@
+../.qa/ \ No newline at end of file
diff --git a/qa/suites/rbd/immutable-object-cache/workloads/c_api_tests_with_defaults.yaml b/qa/suites/rbd/immutable-object-cache/workloads/c_api_tests_with_defaults.yaml
new file mode 120000
index 000000000..949032725
--- /dev/null
+++ b/qa/suites/rbd/immutable-object-cache/workloads/c_api_tests_with_defaults.yaml
@@ -0,0 +1 @@
+../../librbd/workloads/c_api_tests_with_defaults.yaml \ No newline at end of file
diff --git a/qa/suites/rbd/immutable-object-cache/workloads/fio_on_immutable_object_cache.yaml b/qa/suites/rbd/immutable-object-cache/workloads/fio_on_immutable_object_cache.yaml
new file mode 100644
index 000000000..08d76ee15
--- /dev/null
+++ b/qa/suites/rbd/immutable-object-cache/workloads/fio_on_immutable_object_cache.yaml
@@ -0,0 +1,11 @@
+tasks:
+- rbd_fio:
+ client.0:
+ thick-provision: true
+ fio-io-size: 100%
+ formats: [2]
+ features: [[layering]]
+ io-engine: rbd
+ test-clone-io: 1
+ rw: randread
+ runtime: 600
diff --git a/qa/suites/rbd/immutable-object-cache/workloads/qemu_on_immutable_object_cache_and_thrash.yaml b/qa/suites/rbd/immutable-object-cache/workloads/qemu_on_immutable_object_cache_and_thrash.yaml
new file mode 100644
index 000000000..33a5cf0b1
--- /dev/null
+++ b/qa/suites/rbd/immutable-object-cache/workloads/qemu_on_immutable_object_cache_and_thrash.yaml
@@ -0,0 +1,11 @@
+tasks:
+- qemu:
+ client.0:
+ clone: true
+ test: qa/run_xfstests_qemu.sh
+ type: block
+ cpus: 4
+ memory: 4096
+ disks: 3
+- immutable_object_cache_thrash:
+ client.0:
diff --git a/qa/suites/rbd/iscsi/% b/qa/suites/rbd/iscsi/%
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/qa/suites/rbd/iscsi/%
diff --git a/qa/suites/rbd/iscsi/.qa b/qa/suites/rbd/iscsi/.qa
new file mode 120000
index 000000000..a602a0353
--- /dev/null
+++ b/qa/suites/rbd/iscsi/.qa
@@ -0,0 +1 @@
+../.qa/ \ No newline at end of file
diff --git a/qa/suites/rbd/iscsi/0-single-container-host.yaml b/qa/suites/rbd/iscsi/0-single-container-host.yaml
new file mode 120000
index 000000000..7406e749c
--- /dev/null
+++ b/qa/suites/rbd/iscsi/0-single-container-host.yaml
@@ -0,0 +1 @@
+.qa/distros/single-container-host.yaml \ No newline at end of file
diff --git a/qa/suites/rbd/iscsi/base/.qa b/qa/suites/rbd/iscsi/base/.qa
new file mode 120000
index 000000000..a602a0353
--- /dev/null
+++ b/qa/suites/rbd/iscsi/base/.qa
@@ -0,0 +1 @@
+../.qa/ \ No newline at end of file
diff --git a/qa/suites/rbd/iscsi/base/install.yaml b/qa/suites/rbd/iscsi/base/install.yaml
new file mode 100644
index 000000000..5c5a6c31f
--- /dev/null
+++ b/qa/suites/rbd/iscsi/base/install.yaml
@@ -0,0 +1,14 @@
+use_shaman: True
+tasks:
+- cephadm:
+- cephadm.shell:
+ host.a:
+ - ceph orch status
+ - ceph orch ps
+ - ceph orch ls
+ - ceph orch host ls
+ - ceph orch device ls
+- install:
+ extra_packages:
+ - iscsi-initiator-utils
+ - device-mapper-multipath
diff --git a/qa/suites/rbd/iscsi/cluster/+ b/qa/suites/rbd/iscsi/cluster/+
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/qa/suites/rbd/iscsi/cluster/+
diff --git a/qa/suites/rbd/iscsi/cluster/.qa b/qa/suites/rbd/iscsi/cluster/.qa
new file mode 120000
index 000000000..a602a0353
--- /dev/null
+++ b/qa/suites/rbd/iscsi/cluster/.qa
@@ -0,0 +1 @@
+../.qa/ \ No newline at end of file
diff --git a/qa/suites/rbd/iscsi/cluster/fixed-3.yaml b/qa/suites/rbd/iscsi/cluster/fixed-3.yaml
new file mode 100644
index 000000000..426ea32cf
--- /dev/null
+++ b/qa/suites/rbd/iscsi/cluster/fixed-3.yaml
@@ -0,0 +1,19 @@
+roles:
+- - host.a
+ - mon.a
+ - mgr.x
+ - osd.0
+ - osd.1
+ - client.0
+ - ceph.iscsi.iscsi.a
+- - mon.b
+ - osd.2
+ - osd.3
+ - osd.4
+ - client.1
+- - mon.c
+ - osd.5
+ - osd.6
+ - osd.7
+ - client.2
+ - ceph.iscsi.iscsi.b
diff --git a/qa/suites/rbd/iscsi/cluster/openstack.yaml b/qa/suites/rbd/iscsi/cluster/openstack.yaml
new file mode 100644
index 000000000..40fef4770
--- /dev/null
+++ b/qa/suites/rbd/iscsi/cluster/openstack.yaml
@@ -0,0 +1,8 @@
+openstack:
+ - machine:
+ disk: 40 # GB
+ ram: 8000 # MB
+ cpus: 1
+ volumes: # attached to each instance
+ count: 4
+ size: 30 # GB
diff --git a/qa/suites/rbd/iscsi/conf b/qa/suites/rbd/iscsi/conf
new file mode 120000
index 000000000..4bc0fe86c
--- /dev/null
+++ b/qa/suites/rbd/iscsi/conf
@@ -0,0 +1 @@
+.qa/rbd/conf \ No newline at end of file
diff --git a/qa/suites/rbd/iscsi/workloads/.qa b/qa/suites/rbd/iscsi/workloads/.qa
new file mode 120000
index 000000000..a602a0353
--- /dev/null
+++ b/qa/suites/rbd/iscsi/workloads/.qa
@@ -0,0 +1 @@
+../.qa/ \ No newline at end of file
diff --git a/qa/suites/rbd/iscsi/workloads/cephadm_iscsi.yaml b/qa/suites/rbd/iscsi/workloads/cephadm_iscsi.yaml
new file mode 100644
index 000000000..202e6d8b5
--- /dev/null
+++ b/qa/suites/rbd/iscsi/workloads/cephadm_iscsi.yaml
@@ -0,0 +1,21 @@
+tasks:
+- ceph_iscsi_client:
+ clients: [client.1]
+- cram:
+ parallel: False
+ clients:
+ client.0:
+ - src/test/cli-integration/rbd/gwcli_create.t
+ client.1:
+ - src/test/cli-integration/rbd/iscsi_client.t
+ client.2:
+ - src/test/cli-integration/rbd/gwcli_delete.t
+- cram:
+ parallel: False
+ clients:
+ client.0:
+ - src/test/cli-integration/rbd/rest_api_create.t
+ client.1:
+ - src/test/cli-integration/rbd/iscsi_client.t
+ client.2:
+ - src/test/cli-integration/rbd/rest_api_delete.t
diff --git a/qa/suites/rbd/librbd/% b/qa/suites/rbd/librbd/%
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/qa/suites/rbd/librbd/%
diff --git a/qa/suites/rbd/librbd/.qa b/qa/suites/rbd/librbd/.qa
new file mode 120000
index 000000000..a602a0353
--- /dev/null
+++ b/qa/suites/rbd/librbd/.qa
@@ -0,0 +1 @@
+../.qa/ \ No newline at end of file
diff --git a/qa/suites/rbd/librbd/cache/.qa b/qa/suites/rbd/librbd/cache/.qa
new file mode 120000
index 000000000..a602a0353
--- /dev/null
+++ b/qa/suites/rbd/librbd/cache/.qa
@@ -0,0 +1 @@
+../.qa/ \ No newline at end of file
diff --git a/qa/suites/rbd/librbd/cache/none.yaml b/qa/suites/rbd/librbd/cache/none.yaml
new file mode 100644
index 000000000..42fd9c955
--- /dev/null
+++ b/qa/suites/rbd/librbd/cache/none.yaml
@@ -0,0 +1,6 @@
+tasks:
+- install:
+- ceph:
+ conf:
+ client:
+ rbd cache: false
diff --git a/qa/suites/rbd/librbd/cache/writearound.yaml b/qa/suites/rbd/librbd/cache/writearound.yaml
new file mode 100644
index 000000000..b6f8e319b
--- /dev/null
+++ b/qa/suites/rbd/librbd/cache/writearound.yaml
@@ -0,0 +1,7 @@
+tasks:
+- install:
+- ceph:
+ conf:
+ client:
+ rbd cache: true
+ rbd cache policy: writearound
diff --git a/qa/suites/rbd/librbd/cache/writeback.yaml b/qa/suites/rbd/librbd/cache/writeback.yaml
new file mode 100644
index 000000000..a55ec1df0
--- /dev/null
+++ b/qa/suites/rbd/librbd/cache/writeback.yaml
@@ -0,0 +1,7 @@
+tasks:
+- install:
+- ceph:
+ conf:
+ client:
+ rbd cache: true
+ rbd cache policy: writeback
diff --git a/qa/suites/rbd/librbd/cache/writethrough.yaml b/qa/suites/rbd/librbd/cache/writethrough.yaml
new file mode 100644
index 000000000..6dc29e16c
--- /dev/null
+++ b/qa/suites/rbd/librbd/cache/writethrough.yaml
@@ -0,0 +1,7 @@
+tasks:
+- install:
+- ceph:
+ conf:
+ client:
+ rbd cache: true
+ rbd cache max dirty: 0
diff --git a/qa/suites/rbd/librbd/clusters/+ b/qa/suites/rbd/librbd/clusters/+
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/qa/suites/rbd/librbd/clusters/+
diff --git a/qa/suites/rbd/librbd/clusters/.qa b/qa/suites/rbd/librbd/clusters/.qa
new file mode 120000
index 000000000..a602a0353
--- /dev/null
+++ b/qa/suites/rbd/librbd/clusters/.qa
@@ -0,0 +1 @@
+../.qa/ \ No newline at end of file
diff --git a/qa/suites/rbd/librbd/clusters/fixed-3.yaml b/qa/suites/rbd/librbd/clusters/fixed-3.yaml
new file mode 120000
index 000000000..f75a848b8
--- /dev/null
+++ b/qa/suites/rbd/librbd/clusters/fixed-3.yaml
@@ -0,0 +1 @@
+.qa/clusters/fixed-3.yaml \ No newline at end of file
diff --git a/qa/suites/rbd/librbd/clusters/openstack.yaml b/qa/suites/rbd/librbd/clusters/openstack.yaml
new file mode 100644
index 000000000..b0f3b9b4d
--- /dev/null
+++ b/qa/suites/rbd/librbd/clusters/openstack.yaml
@@ -0,0 +1,4 @@
+openstack:
+ - volumes: # attached to each instance
+ count: 4
+ size: 30 # GB
diff --git a/qa/suites/rbd/librbd/conf b/qa/suites/rbd/librbd/conf
new file mode 120000
index 000000000..4bc0fe86c
--- /dev/null
+++ b/qa/suites/rbd/librbd/conf
@@ -0,0 +1 @@
+.qa/rbd/conf \ No newline at end of file
diff --git a/qa/suites/rbd/librbd/data-pool b/qa/suites/rbd/librbd/data-pool
new file mode 120000
index 000000000..3df827572
--- /dev/null
+++ b/qa/suites/rbd/librbd/data-pool
@@ -0,0 +1 @@
+.qa/rbd/data-pool/ \ No newline at end of file
diff --git a/qa/suites/rbd/librbd/extra-conf/.qa b/qa/suites/rbd/librbd/extra-conf/.qa
new file mode 120000
index 000000000..a602a0353
--- /dev/null
+++ b/qa/suites/rbd/librbd/extra-conf/.qa
@@ -0,0 +1 @@
+../.qa/ \ No newline at end of file
diff --git a/qa/suites/rbd/librbd/extra-conf/copy-on-read.yaml b/qa/suites/rbd/librbd/extra-conf/copy-on-read.yaml
new file mode 100644
index 000000000..ce99e7ec0
--- /dev/null
+++ b/qa/suites/rbd/librbd/extra-conf/copy-on-read.yaml
@@ -0,0 +1,5 @@
+overrides:
+ ceph:
+ conf:
+ client:
+ rbd clone copy on read: true
diff --git a/qa/suites/rbd/librbd/extra-conf/none.yaml b/qa/suites/rbd/librbd/extra-conf/none.yaml
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/qa/suites/rbd/librbd/extra-conf/none.yaml
diff --git a/qa/suites/rbd/librbd/extra-conf/permit-partial-discard.yaml b/qa/suites/rbd/librbd/extra-conf/permit-partial-discard.yaml
new file mode 100644
index 000000000..a99294696
--- /dev/null
+++ b/qa/suites/rbd/librbd/extra-conf/permit-partial-discard.yaml
@@ -0,0 +1,5 @@
+overrides:
+ ceph:
+ conf:
+ client:
+ rbd skip partial discard: false
diff --git a/qa/suites/rbd/librbd/min-compat-client/.qa b/qa/suites/rbd/librbd/min-compat-client/.qa
new file mode 120000
index 000000000..a602a0353
--- /dev/null
+++ b/qa/suites/rbd/librbd/min-compat-client/.qa
@@ -0,0 +1 @@
+../.qa/ \ No newline at end of file
diff --git a/qa/suites/rbd/librbd/min-compat-client/default.yaml b/qa/suites/rbd/librbd/min-compat-client/default.yaml
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/qa/suites/rbd/librbd/min-compat-client/default.yaml
diff --git a/qa/suites/rbd/librbd/min-compat-client/octopus.yaml b/qa/suites/rbd/librbd/min-compat-client/octopus.yaml
new file mode 100644
index 000000000..1cd2df483
--- /dev/null
+++ b/qa/suites/rbd/librbd/min-compat-client/octopus.yaml
@@ -0,0 +1,4 @@
+tasks:
+- exec:
+ client.0:
+ - sudo ceph osd set-require-min-compat-client octopus
diff --git a/qa/suites/rbd/librbd/msgr-failures/.qa b/qa/suites/rbd/librbd/msgr-failures/.qa
new file mode 120000
index 000000000..a602a0353
--- /dev/null
+++ b/qa/suites/rbd/librbd/msgr-failures/.qa
@@ -0,0 +1 @@
+../.qa/ \ No newline at end of file
diff --git a/qa/suites/rbd/librbd/msgr-failures/few.yaml b/qa/suites/rbd/librbd/msgr-failures/few.yaml
new file mode 100644
index 000000000..df2a313a6
--- /dev/null
+++ b/qa/suites/rbd/librbd/msgr-failures/few.yaml
@@ -0,0 +1,9 @@
+overrides:
+ ceph:
+ conf:
+ global:
+ ms inject socket failures: 5000
+ mon client directed command retry: 5
+ log-ignorelist:
+ - but it is still running
+ - \(OSD_SLOW_PING_TIME
diff --git a/qa/suites/rbd/librbd/objectstore b/qa/suites/rbd/librbd/objectstore
new file mode 120000
index 000000000..c40bd3261
--- /dev/null
+++ b/qa/suites/rbd/librbd/objectstore
@@ -0,0 +1 @@
+.qa/objectstore \ No newline at end of file
diff --git a/qa/suites/rbd/librbd/supported-random-distro$ b/qa/suites/rbd/librbd/supported-random-distro$
new file mode 120000
index 000000000..0862b4457
--- /dev/null
+++ b/qa/suites/rbd/librbd/supported-random-distro$
@@ -0,0 +1 @@
+.qa/distros/supported-random-distro$ \ No newline at end of file
diff --git a/qa/suites/rbd/librbd/workloads/.qa b/qa/suites/rbd/librbd/workloads/.qa
new file mode 120000
index 000000000..a602a0353
--- /dev/null
+++ b/qa/suites/rbd/librbd/workloads/.qa
@@ -0,0 +1 @@
+../.qa/ \ No newline at end of file
diff --git a/qa/suites/rbd/librbd/workloads/c_api_tests.yaml b/qa/suites/rbd/librbd/workloads/c_api_tests.yaml
new file mode 100644
index 000000000..eb63fd771
--- /dev/null
+++ b/qa/suites/rbd/librbd/workloads/c_api_tests.yaml
@@ -0,0 +1,14 @@
+overrides:
+ ceph:
+ log-ignorelist:
+ - overall HEALTH_
+ - \(CACHE_POOL_NO_HIT_SET\)
+ - is full \(reached quota
+ - \(POOL_FULL\)
+tasks:
+- workunit:
+ clients:
+ client.0:
+ - rbd/test_librbd.sh
+ env:
+ RBD_FEATURES: "1"
diff --git a/qa/suites/rbd/librbd/workloads/c_api_tests_with_defaults.yaml b/qa/suites/rbd/librbd/workloads/c_api_tests_with_defaults.yaml
new file mode 100644
index 000000000..ec4194598
--- /dev/null
+++ b/qa/suites/rbd/librbd/workloads/c_api_tests_with_defaults.yaml
@@ -0,0 +1,14 @@
+overrides:
+ ceph:
+ log-ignorelist:
+ - overall HEALTH_
+ - \(CACHE_POOL_NO_HIT_SET\)
+ - is full \(reached quota
+ - \(POOL_FULL\)
+tasks:
+- workunit:
+ clients:
+ client.0:
+ - rbd/test_librbd.sh
+ env:
+ RBD_FEATURES: "61"
diff --git a/qa/suites/rbd/librbd/workloads/c_api_tests_with_journaling.yaml b/qa/suites/rbd/librbd/workloads/c_api_tests_with_journaling.yaml
new file mode 100644
index 000000000..6c3686806
--- /dev/null
+++ b/qa/suites/rbd/librbd/workloads/c_api_tests_with_journaling.yaml
@@ -0,0 +1,14 @@
+overrides:
+ ceph:
+ log-ignorelist:
+ - overall HEALTH_
+ - \(CACHE_POOL_NO_HIT_SET\)
+ - is full \(reached quota
+ - \(POOL_FULL\)
+tasks:
+- workunit:
+ clients:
+ client.0:
+ - rbd/test_librbd.sh
+ env:
+ RBD_FEATURES: "125"
diff --git a/qa/suites/rbd/librbd/workloads/fsx.yaml b/qa/suites/rbd/librbd/workloads/fsx.yaml
new file mode 100644
index 000000000..6d8cd5f1a
--- /dev/null
+++ b/qa/suites/rbd/librbd/workloads/fsx.yaml
@@ -0,0 +1,4 @@
+tasks:
+- rbd_fsx:
+ clients: [client.0]
+ ops: 20000
diff --git a/qa/suites/rbd/librbd/workloads/python_api_tests.yaml b/qa/suites/rbd/librbd/workloads/python_api_tests.yaml
new file mode 100644
index 000000000..516c323df
--- /dev/null
+++ b/qa/suites/rbd/librbd/workloads/python_api_tests.yaml
@@ -0,0 +1,12 @@
+overrides:
+ install:
+ ceph:
+ extra_system_packages:
+ - python3-pytest
+tasks:
+- workunit:
+ clients:
+ client.0:
+ - rbd/test_librbd_python.sh
+ env:
+ RBD_FEATURES: "1"
diff --git a/qa/suites/rbd/librbd/workloads/python_api_tests_with_defaults.yaml b/qa/suites/rbd/librbd/workloads/python_api_tests_with_defaults.yaml
new file mode 100644
index 000000000..831f3762b
--- /dev/null
+++ b/qa/suites/rbd/librbd/workloads/python_api_tests_with_defaults.yaml
@@ -0,0 +1,12 @@
+overrides:
+ install:
+ ceph:
+ extra_system_packages:
+ - python3-pytest
+tasks:
+- workunit:
+ clients:
+ client.0:
+ - rbd/test_librbd_python.sh
+ env:
+ RBD_FEATURES: "61"
diff --git a/qa/suites/rbd/librbd/workloads/python_api_tests_with_journaling.yaml b/qa/suites/rbd/librbd/workloads/python_api_tests_with_journaling.yaml
new file mode 100644
index 000000000..8bd751146
--- /dev/null
+++ b/qa/suites/rbd/librbd/workloads/python_api_tests_with_journaling.yaml
@@ -0,0 +1,12 @@
+overrides:
+ install:
+ ceph:
+ extra_system_packages:
+ - python3-pytest
+tasks:
+- workunit:
+ clients:
+ client.0:
+ - rbd/test_librbd_python.sh
+ env:
+ RBD_FEATURES: "125"
diff --git a/qa/suites/rbd/librbd/workloads/rbd_fio.yaml b/qa/suites/rbd/librbd/workloads/rbd_fio.yaml
new file mode 100644
index 000000000..ff788c6a8
--- /dev/null
+++ b/qa/suites/rbd/librbd/workloads/rbd_fio.yaml
@@ -0,0 +1,10 @@
+tasks:
+- rbd_fio:
+ client.0:
+ fio-io-size: 80%
+ formats: [2]
+ features: [[layering],[layering,exclusive-lock,object-map]]
+ io-engine: rbd
+ test-clone-io: 1
+ rw: randrw
+ runtime: 900
diff --git a/qa/suites/rbd/maintenance/% b/qa/suites/rbd/maintenance/%
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/qa/suites/rbd/maintenance/%
diff --git a/qa/suites/rbd/maintenance/.qa b/qa/suites/rbd/maintenance/.qa
new file mode 120000
index 000000000..a602a0353
--- /dev/null
+++ b/qa/suites/rbd/maintenance/.qa
@@ -0,0 +1 @@
+../.qa/ \ No newline at end of file
diff --git a/qa/suites/rbd/maintenance/base/.qa b/qa/suites/rbd/maintenance/base/.qa
new file mode 120000
index 000000000..a602a0353
--- /dev/null
+++ b/qa/suites/rbd/maintenance/base/.qa
@@ -0,0 +1 @@
+../.qa/ \ No newline at end of file
diff --git a/qa/suites/rbd/maintenance/base/install.yaml b/qa/suites/rbd/maintenance/base/install.yaml
new file mode 100644
index 000000000..2030acb90
--- /dev/null
+++ b/qa/suites/rbd/maintenance/base/install.yaml
@@ -0,0 +1,3 @@
+tasks:
+- install:
+- ceph:
diff --git a/qa/suites/rbd/maintenance/clusters/+ b/qa/suites/rbd/maintenance/clusters/+
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/qa/suites/rbd/maintenance/clusters/+
diff --git a/qa/suites/rbd/maintenance/clusters/.qa b/qa/suites/rbd/maintenance/clusters/.qa
new file mode 120000
index 000000000..a602a0353
--- /dev/null
+++ b/qa/suites/rbd/maintenance/clusters/.qa
@@ -0,0 +1 @@
+../.qa/ \ No newline at end of file
diff --git a/qa/suites/rbd/maintenance/clusters/fixed-3.yaml b/qa/suites/rbd/maintenance/clusters/fixed-3.yaml
new file mode 120000
index 000000000..f75a848b8
--- /dev/null
+++ b/qa/suites/rbd/maintenance/clusters/fixed-3.yaml
@@ -0,0 +1 @@
+.qa/clusters/fixed-3.yaml \ No newline at end of file
diff --git a/qa/suites/rbd/maintenance/clusters/openstack.yaml b/qa/suites/rbd/maintenance/clusters/openstack.yaml
new file mode 120000
index 000000000..3e5028f9a
--- /dev/null
+++ b/qa/suites/rbd/maintenance/clusters/openstack.yaml
@@ -0,0 +1 @@
+../../qemu/clusters/openstack.yaml \ No newline at end of file
diff --git a/qa/suites/rbd/maintenance/conf b/qa/suites/rbd/maintenance/conf
new file mode 120000
index 000000000..4bc0fe86c
--- /dev/null
+++ b/qa/suites/rbd/maintenance/conf
@@ -0,0 +1 @@
+.qa/rbd/conf \ No newline at end of file
diff --git a/qa/suites/rbd/maintenance/objectstore b/qa/suites/rbd/maintenance/objectstore
new file mode 120000
index 000000000..c40bd3261
--- /dev/null
+++ b/qa/suites/rbd/maintenance/objectstore
@@ -0,0 +1 @@
+.qa/objectstore \ No newline at end of file
diff --git a/qa/suites/rbd/maintenance/qemu/.qa b/qa/suites/rbd/maintenance/qemu/.qa
new file mode 120000
index 000000000..a602a0353
--- /dev/null
+++ b/qa/suites/rbd/maintenance/qemu/.qa
@@ -0,0 +1 @@
+../.qa/ \ No newline at end of file
diff --git a/qa/suites/rbd/maintenance/qemu/xfstests.yaml b/qa/suites/rbd/maintenance/qemu/xfstests.yaml
new file mode 100644
index 000000000..135103b34
--- /dev/null
+++ b/qa/suites/rbd/maintenance/qemu/xfstests.yaml
@@ -0,0 +1,14 @@
+tasks:
+- parallel:
+ - io_workload
+ - op_workload
+io_workload:
+ sequential:
+ - qemu:
+ client.0:
+ clone: true
+ type: block
+ disks: 3
+ time_wait: 120
+ test: qa/run_xfstests_qemu.sh
+exclude_arch: armv7l
diff --git a/qa/suites/rbd/maintenance/supported-random-distro$ b/qa/suites/rbd/maintenance/supported-random-distro$
new file mode 120000
index 000000000..0862b4457
--- /dev/null
+++ b/qa/suites/rbd/maintenance/supported-random-distro$
@@ -0,0 +1 @@
+.qa/distros/supported-random-distro$ \ No newline at end of file
diff --git a/qa/suites/rbd/maintenance/workloads/.qa b/qa/suites/rbd/maintenance/workloads/.qa
new file mode 120000
index 000000000..a602a0353
--- /dev/null
+++ b/qa/suites/rbd/maintenance/workloads/.qa
@@ -0,0 +1 @@
+../.qa/ \ No newline at end of file
diff --git a/qa/suites/rbd/maintenance/workloads/dynamic_features.yaml b/qa/suites/rbd/maintenance/workloads/dynamic_features.yaml
new file mode 100644
index 000000000..d7e1c1ed0
--- /dev/null
+++ b/qa/suites/rbd/maintenance/workloads/dynamic_features.yaml
@@ -0,0 +1,8 @@
+op_workload:
+ sequential:
+ - workunit:
+ clients:
+ client.0:
+ - rbd/qemu_dynamic_features.sh
+ env:
+ IMAGE_NAME: client.0.1-clone
diff --git a/qa/suites/rbd/maintenance/workloads/dynamic_features_no_cache.yaml b/qa/suites/rbd/maintenance/workloads/dynamic_features_no_cache.yaml
new file mode 100644
index 000000000..5d80e6bd3
--- /dev/null
+++ b/qa/suites/rbd/maintenance/workloads/dynamic_features_no_cache.yaml
@@ -0,0 +1,14 @@
+overrides:
+ ceph:
+ conf:
+ client:
+ rbd cache: false
+op_workload:
+ sequential:
+ - workunit:
+ clients:
+ client.0:
+ - rbd/qemu_dynamic_features.sh
+ env:
+ IMAGE_NAME: client.0.1-clone
+ timeout: 0
diff --git a/qa/suites/rbd/maintenance/workloads/rebuild_object_map.yaml b/qa/suites/rbd/maintenance/workloads/rebuild_object_map.yaml
new file mode 100644
index 000000000..308158f61
--- /dev/null
+++ b/qa/suites/rbd/maintenance/workloads/rebuild_object_map.yaml
@@ -0,0 +1,8 @@
+op_workload:
+ sequential:
+ - workunit:
+ clients:
+ client.0:
+ - rbd/qemu_rebuild_object_map.sh
+ env:
+ IMAGE_NAME: client.0.1-clone
diff --git a/qa/suites/rbd/migration/% b/qa/suites/rbd/migration/%
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/qa/suites/rbd/migration/%
diff --git a/qa/suites/rbd/migration/.qa b/qa/suites/rbd/migration/.qa
new file mode 120000
index 000000000..a602a0353
--- /dev/null
+++ b/qa/suites/rbd/migration/.qa
@@ -0,0 +1 @@
+../.qa/ \ No newline at end of file
diff --git a/qa/suites/rbd/migration/1-base b/qa/suites/rbd/migration/1-base
new file mode 120000
index 000000000..fd10a859d
--- /dev/null
+++ b/qa/suites/rbd/migration/1-base
@@ -0,0 +1 @@
+../thrash/base \ No newline at end of file
diff --git a/qa/suites/rbd/migration/2-clusters/+ b/qa/suites/rbd/migration/2-clusters/+
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/qa/suites/rbd/migration/2-clusters/+
diff --git a/qa/suites/rbd/migration/2-clusters/.qa b/qa/suites/rbd/migration/2-clusters/.qa
new file mode 120000
index 000000000..a602a0353
--- /dev/null
+++ b/qa/suites/rbd/migration/2-clusters/.qa
@@ -0,0 +1 @@
+../.qa/ \ No newline at end of file
diff --git a/qa/suites/rbd/migration/2-clusters/fixed-3.yaml b/qa/suites/rbd/migration/2-clusters/fixed-3.yaml
new file mode 120000
index 000000000..f75a848b8
--- /dev/null
+++ b/qa/suites/rbd/migration/2-clusters/fixed-3.yaml
@@ -0,0 +1 @@
+.qa/clusters/fixed-3.yaml \ No newline at end of file
diff --git a/qa/suites/rbd/migration/2-clusters/openstack.yaml b/qa/suites/rbd/migration/2-clusters/openstack.yaml
new file mode 100644
index 000000000..9c39c7e5f
--- /dev/null
+++ b/qa/suites/rbd/migration/2-clusters/openstack.yaml
@@ -0,0 +1,8 @@
+openstack:
+ - machine:
+ disk: 40 # GB
+ ram: 30000 # MB
+ cpus: 1
+ volumes: # attached to each instance
+ count: 4
+ size: 30 # GB
diff --git a/qa/suites/rbd/migration/3-objectstore b/qa/suites/rbd/migration/3-objectstore
new file mode 120000
index 000000000..c40bd3261
--- /dev/null
+++ b/qa/suites/rbd/migration/3-objectstore
@@ -0,0 +1 @@
+.qa/objectstore \ No newline at end of file
diff --git a/qa/suites/rbd/migration/4-supported-random-distro$ b/qa/suites/rbd/migration/4-supported-random-distro$
new file mode 120000
index 000000000..0862b4457
--- /dev/null
+++ b/qa/suites/rbd/migration/4-supported-random-distro$
@@ -0,0 +1 @@
+.qa/distros/supported-random-distro$ \ No newline at end of file
diff --git a/qa/suites/rbd/migration/5-data-pool b/qa/suites/rbd/migration/5-data-pool
new file mode 120000
index 000000000..3df827572
--- /dev/null
+++ b/qa/suites/rbd/migration/5-data-pool
@@ -0,0 +1 @@
+.qa/rbd/data-pool/ \ No newline at end of file
diff --git a/qa/suites/rbd/migration/6-prepare/.qa b/qa/suites/rbd/migration/6-prepare/.qa
new file mode 120000
index 000000000..a602a0353
--- /dev/null
+++ b/qa/suites/rbd/migration/6-prepare/.qa
@@ -0,0 +1 @@
+../.qa/ \ No newline at end of file
diff --git a/qa/suites/rbd/migration/6-prepare/qcow2-file.yaml b/qa/suites/rbd/migration/6-prepare/qcow2-file.yaml
new file mode 100644
index 000000000..8e3b9f958
--- /dev/null
+++ b/qa/suites/rbd/migration/6-prepare/qcow2-file.yaml
@@ -0,0 +1,9 @@
+tasks:
+ - exec:
+ client.0:
+ - mkdir /home/ubuntu/cephtest/migration
+ - wget -nv -O /home/ubuntu/cephtest/migration/base.client.0.qcow2 http://download.ceph.com/qa/ubuntu-12.04.qcow2
+ - qemu-img create -f qcow2 /home/ubuntu/cephtest/migration/empty.qcow2 1G
+ - echo '{"type":"qcow","stream":{"type":"file","file_path":"/home/ubuntu/cephtest/migration/base.client.0.qcow2"}}' | rbd migration prepare --import-only --source-spec-path - client.0.0
+ - rbd migration prepare --import-only --source-spec '{"type":"qcow","stream":{"type":"file","file_path":"/home/ubuntu/cephtest/migration/empty.qcow2"}}' client.0.1
+ - rbd migration prepare --import-only --source-spec '{"type":"qcow","stream":{"type":"file","file_path":"/home/ubuntu/cephtest/migration/empty.qcow2"}}' client.0.2
diff --git a/qa/suites/rbd/migration/6-prepare/qcow2-http.yaml b/qa/suites/rbd/migration/6-prepare/qcow2-http.yaml
new file mode 100644
index 000000000..890d14417
--- /dev/null
+++ b/qa/suites/rbd/migration/6-prepare/qcow2-http.yaml
@@ -0,0 +1,8 @@
+tasks:
+ - exec:
+ client.0:
+ - mkdir /home/ubuntu/cephtest/migration
+ - qemu-img create -f qcow2 /home/ubuntu/cephtest/migration/empty.qcow2 1G
+ - echo '{"type":"qcow","stream":{"type":"http","url":"http://download.ceph.com/qa/ubuntu-12.04.qcow2"}}' | rbd migration prepare --import-only --source-spec-path - client.0.0
+ - rbd migration prepare --import-only --source-spec '{"type":"qcow","stream":{"type":"file","file_path":"/home/ubuntu/cephtest/migration/empty.qcow2"}}' client.0.1
+ - rbd migration prepare --import-only --source-spec '{"type":"qcow","stream":{"type":"file","file_path":"/home/ubuntu/cephtest/migration/empty.qcow2"}}' client.0.2
diff --git a/qa/suites/rbd/migration/6-prepare/raw-file.yaml b/qa/suites/rbd/migration/6-prepare/raw-file.yaml
new file mode 100644
index 000000000..0035534ef
--- /dev/null
+++ b/qa/suites/rbd/migration/6-prepare/raw-file.yaml
@@ -0,0 +1,10 @@
+tasks:
+ - exec:
+ client.0:
+ - mkdir /home/ubuntu/cephtest/migration
+ - wget -nv -O /home/ubuntu/cephtest/migration/base.client.0.qcow2 http://download.ceph.com/qa/ubuntu-12.04.qcow2
+ - qemu-img convert -f qcow2 -O raw /home/ubuntu/cephtest/migration/base.client.0.qcow2 /home/ubuntu/cephtest/migration/base.client.0.raw
+ - dd if=/dev/zero of=/home/ubuntu/cephtest/migration/empty.raw count=1 bs=1G
+ - echo '{"type":"raw","stream":{"type":"file","file_path":"/home/ubuntu/cephtest/migration/base.client.0.raw"}}' | rbd migration prepare --import-only --source-spec-path - client.0.0
+ - rbd migration prepare --import-only --source-spec '{"type":"raw","stream":{"type":"file","file_path":"/home/ubuntu/cephtest/migration/empty.raw"}}' client.0.1
+ - rbd migration prepare --import-only --source-spec '{"type":"raw","stream":{"type":"file","file_path":"/home/ubuntu/cephtest/migration/empty.raw"}}' client.0.2
diff --git a/qa/suites/rbd/migration/7-io-workloads/.qa b/qa/suites/rbd/migration/7-io-workloads/.qa
new file mode 120000
index 000000000..a602a0353
--- /dev/null
+++ b/qa/suites/rbd/migration/7-io-workloads/.qa
@@ -0,0 +1 @@
+../.qa/ \ No newline at end of file
diff --git a/qa/suites/rbd/migration/7-io-workloads/qemu_xfstests.yaml b/qa/suites/rbd/migration/7-io-workloads/qemu_xfstests.yaml
new file mode 100644
index 000000000..2617a4192
--- /dev/null
+++ b/qa/suites/rbd/migration/7-io-workloads/qemu_xfstests.yaml
@@ -0,0 +1,15 @@
+io_workload:
+ sequential:
+ - qemu:
+ client.0:
+ clone: true
+ type: block
+ disks:
+ - action: none
+ image_name: client.0.0
+ - action: none
+ image_name: client.0.1
+ - action: none
+ image_name: client.0.2
+ test: qa/run_xfstests_qemu.sh
+exclude_arch: armv7l
diff --git a/qa/suites/rbd/migration/8-migrate-workloads/.qa b/qa/suites/rbd/migration/8-migrate-workloads/.qa
new file mode 120000
index 000000000..a602a0353
--- /dev/null
+++ b/qa/suites/rbd/migration/8-migrate-workloads/.qa
@@ -0,0 +1 @@
+../.qa/ \ No newline at end of file
diff --git a/qa/suites/rbd/migration/8-migrate-workloads/execute.yaml b/qa/suites/rbd/migration/8-migrate-workloads/execute.yaml
new file mode 100644
index 000000000..d7735c426
--- /dev/null
+++ b/qa/suites/rbd/migration/8-migrate-workloads/execute.yaml
@@ -0,0 +1,14 @@
+tasks:
+ - parallel:
+ - io_workload
+ - migrate_workload
+migrate_workload:
+ sequential:
+ - exec:
+ client.0:
+ - sleep 60
+ - rbd migration execute client.0.0
+ - sleep 60
+ - rbd migration commit client.0.0
+ - sleep 60
+ - rbd migration execute client.0.1
diff --git a/qa/suites/rbd/migration/9-cleanup/.qa b/qa/suites/rbd/migration/9-cleanup/.qa
new file mode 120000
index 000000000..a602a0353
--- /dev/null
+++ b/qa/suites/rbd/migration/9-cleanup/.qa
@@ -0,0 +1 @@
+../.qa/ \ No newline at end of file
diff --git a/qa/suites/rbd/migration/9-cleanup/cleanup.yaml b/qa/suites/rbd/migration/9-cleanup/cleanup.yaml
new file mode 100644
index 000000000..18c2bb5f4
--- /dev/null
+++ b/qa/suites/rbd/migration/9-cleanup/cleanup.yaml
@@ -0,0 +1,4 @@
+tasks:
+ - exec:
+ client.0:
+ - rm -rf /home/ubuntu/cephtest/migration
diff --git a/qa/suites/rbd/migration/conf b/qa/suites/rbd/migration/conf
new file mode 120000
index 000000000..4bc0fe86c
--- /dev/null
+++ b/qa/suites/rbd/migration/conf
@@ -0,0 +1 @@
+.qa/rbd/conf \ No newline at end of file
diff --git a/qa/suites/rbd/mirror-thrash/% b/qa/suites/rbd/mirror-thrash/%
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/qa/suites/rbd/mirror-thrash/%
diff --git a/qa/suites/rbd/mirror-thrash/.qa b/qa/suites/rbd/mirror-thrash/.qa
new file mode 120000
index 000000000..a602a0353
--- /dev/null
+++ b/qa/suites/rbd/mirror-thrash/.qa
@@ -0,0 +1 @@
+../.qa/ \ No newline at end of file
diff --git a/qa/suites/rbd/mirror-thrash/base/.qa b/qa/suites/rbd/mirror-thrash/base/.qa
new file mode 120000
index 000000000..a602a0353
--- /dev/null
+++ b/qa/suites/rbd/mirror-thrash/base/.qa
@@ -0,0 +1 @@
+../.qa/ \ No newline at end of file
diff --git a/qa/suites/rbd/mirror-thrash/base/install.yaml b/qa/suites/rbd/mirror-thrash/base/install.yaml
new file mode 100644
index 000000000..365c3a8cb
--- /dev/null
+++ b/qa/suites/rbd/mirror-thrash/base/install.yaml
@@ -0,0 +1,9 @@
+meta:
+- desc: run two ceph clusters and install rbd-mirror
+tasks:
+- install:
+ extra_packages: [rbd-mirror]
+- ceph:
+ cluster: cluster1
+- ceph:
+ cluster: cluster2
diff --git a/qa/suites/rbd/mirror-thrash/clients/.qa b/qa/suites/rbd/mirror-thrash/clients/.qa
new file mode 120000
index 000000000..a602a0353
--- /dev/null
+++ b/qa/suites/rbd/mirror-thrash/clients/.qa
@@ -0,0 +1 @@
+../.qa/ \ No newline at end of file
diff --git a/qa/suites/rbd/mirror-thrash/clients/mirror.yaml b/qa/suites/rbd/mirror-thrash/clients/mirror.yaml
new file mode 100644
index 000000000..1b6808d85
--- /dev/null
+++ b/qa/suites/rbd/mirror-thrash/clients/mirror.yaml
@@ -0,0 +1,36 @@
+meta:
+- desc: configure the permissions for client.mirror
+overrides:
+ ceph:
+ conf:
+ client:
+ rbd default features: 125
+ debug rbd: 20
+ debug rbd_mirror: 15
+ log to stderr: false
+ # override to make these names predictable
+ client.mirror.0:
+ admin socket: /var/run/ceph/rbd-mirror.$cluster-$name.asok
+ pid file: /var/run/ceph/rbd-mirror.$cluster-$name.pid
+ client.mirror.1:
+ admin socket: /var/run/ceph/rbd-mirror.$cluster-$name.asok
+ pid file: /var/run/ceph/rbd-mirror.$cluster-$name.pid
+ client.mirror.2:
+ admin socket: /var/run/ceph/rbd-mirror.$cluster-$name.asok
+ pid file: /var/run/ceph/rbd-mirror.$cluster-$name.pid
+ client.mirror.3:
+ admin socket: /var/run/ceph/rbd-mirror.$cluster-$name.asok
+ pid file: /var/run/ceph/rbd-mirror.$cluster-$name.pid
+tasks:
+- exec:
+ cluster1.client.mirror.0:
+ - "sudo ceph --cluster cluster1 auth caps client.mirror mon 'profile rbd-mirror-peer' osd 'profile rbd'"
+ - "sudo ceph --cluster cluster1 auth caps client.mirror.0 mon 'profile rbd-mirror' osd 'profile rbd'"
+ - "sudo ceph --cluster cluster1 auth caps client.mirror.1 mon 'profile rbd-mirror' osd 'profile rbd'"
+ - "sudo ceph --cluster cluster1 auth caps client.mirror.2 mon 'profile rbd-mirror' osd 'profile rbd'"
+ - "sudo ceph --cluster cluster1 auth caps client.mirror.3 mon 'profile rbd-mirror' osd 'profile rbd'"
+ - "sudo ceph --cluster cluster2 auth caps client.mirror mon 'profile rbd-mirror-peer' osd 'profile rbd'"
+ - "sudo ceph --cluster cluster2 auth caps client.mirror.0 mon 'profile rbd-mirror' osd 'profile rbd'"
+ - "sudo ceph --cluster cluster2 auth caps client.mirror.1 mon 'profile rbd-mirror' osd 'profile rbd'"
+ - "sudo ceph --cluster cluster2 auth caps client.mirror.2 mon 'profile rbd-mirror' osd 'profile rbd'"
+ - "sudo ceph --cluster cluster2 auth caps client.mirror.3 mon 'profile rbd-mirror' osd 'profile rbd'"
diff --git a/qa/suites/rbd/mirror-thrash/cluster/+ b/qa/suites/rbd/mirror-thrash/cluster/+
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/qa/suites/rbd/mirror-thrash/cluster/+
diff --git a/qa/suites/rbd/mirror-thrash/cluster/.qa b/qa/suites/rbd/mirror-thrash/cluster/.qa
new file mode 120000
index 000000000..a602a0353
--- /dev/null
+++ b/qa/suites/rbd/mirror-thrash/cluster/.qa
@@ -0,0 +1 @@
+../.qa/ \ No newline at end of file
diff --git a/qa/suites/rbd/mirror-thrash/cluster/2-node.yaml b/qa/suites/rbd/mirror-thrash/cluster/2-node.yaml
new file mode 100644
index 000000000..74f9fb3c4
--- /dev/null
+++ b/qa/suites/rbd/mirror-thrash/cluster/2-node.yaml
@@ -0,0 +1,31 @@
+meta:
+- desc: 2 ceph clusters with 1 mon and 3 osds each
+roles:
+- - cluster1.mon.a
+ - cluster1.mgr.x
+ - cluster2.mgr.x
+ - cluster1.osd.0
+ - cluster1.osd.1
+ - cluster1.osd.2
+ - cluster1.client.0
+ - cluster2.client.0
+- - cluster2.mon.a
+ - cluster2.osd.0
+ - cluster2.osd.1
+ - cluster2.osd.2
+ - cluster1.client.mirror
+ - cluster1.client.mirror.0
+ - cluster1.client.mirror.1
+ - cluster1.client.mirror.2
+ - cluster1.client.mirror.3
+ - cluster1.client.mirror.4
+ - cluster1.client.mirror.5
+ - cluster1.client.mirror.6
+ - cluster2.client.mirror
+ - cluster2.client.mirror.0
+ - cluster2.client.mirror.1
+ - cluster2.client.mirror.2
+ - cluster2.client.mirror.3
+ - cluster2.client.mirror.4
+ - cluster2.client.mirror.5
+ - cluster2.client.mirror.6
diff --git a/qa/suites/rbd/mirror-thrash/cluster/openstack.yaml b/qa/suites/rbd/mirror-thrash/cluster/openstack.yaml
new file mode 100644
index 000000000..f4d1349b4
--- /dev/null
+++ b/qa/suites/rbd/mirror-thrash/cluster/openstack.yaml
@@ -0,0 +1,4 @@
+openstack:
+ - volumes: # attached to each instance
+ count: 3
+ size: 30 # GB
diff --git a/qa/suites/rbd/mirror-thrash/conf b/qa/suites/rbd/mirror-thrash/conf
new file mode 120000
index 000000000..4bc0fe86c
--- /dev/null
+++ b/qa/suites/rbd/mirror-thrash/conf
@@ -0,0 +1 @@
+.qa/rbd/conf \ No newline at end of file
diff --git a/qa/suites/rbd/mirror-thrash/msgr-failures b/qa/suites/rbd/mirror-thrash/msgr-failures
new file mode 120000
index 000000000..db59eb46c
--- /dev/null
+++ b/qa/suites/rbd/mirror-thrash/msgr-failures
@@ -0,0 +1 @@
+../basic/msgr-failures \ No newline at end of file
diff --git a/qa/suites/rbd/mirror-thrash/objectstore b/qa/suites/rbd/mirror-thrash/objectstore
new file mode 120000
index 000000000..c40bd3261
--- /dev/null
+++ b/qa/suites/rbd/mirror-thrash/objectstore
@@ -0,0 +1 @@
+.qa/objectstore \ No newline at end of file
diff --git a/qa/suites/rbd/mirror-thrash/policy/.qa b/qa/suites/rbd/mirror-thrash/policy/.qa
new file mode 120000
index 000000000..a602a0353
--- /dev/null
+++ b/qa/suites/rbd/mirror-thrash/policy/.qa
@@ -0,0 +1 @@
+../.qa/ \ No newline at end of file
diff --git a/qa/suites/rbd/mirror-thrash/policy/none.yaml b/qa/suites/rbd/mirror-thrash/policy/none.yaml
new file mode 100644
index 000000000..e0a7c1185
--- /dev/null
+++ b/qa/suites/rbd/mirror-thrash/policy/none.yaml
@@ -0,0 +1,5 @@
+overrides:
+ ceph:
+ conf:
+ client:
+ rbd mirror image policy type: none
diff --git a/qa/suites/rbd/mirror-thrash/policy/simple.yaml b/qa/suites/rbd/mirror-thrash/policy/simple.yaml
new file mode 100644
index 000000000..ee3082d3c
--- /dev/null
+++ b/qa/suites/rbd/mirror-thrash/policy/simple.yaml
@@ -0,0 +1,5 @@
+overrides:
+ ceph:
+ conf:
+ client:
+ rbd mirror image policy type: simple
diff --git a/qa/suites/rbd/mirror-thrash/rbd-mirror/.qa b/qa/suites/rbd/mirror-thrash/rbd-mirror/.qa
new file mode 120000
index 000000000..a602a0353
--- /dev/null
+++ b/qa/suites/rbd/mirror-thrash/rbd-mirror/.qa
@@ -0,0 +1 @@
+../.qa/ \ No newline at end of file
diff --git a/qa/suites/rbd/mirror-thrash/rbd-mirror/four-per-cluster.yaml b/qa/suites/rbd/mirror-thrash/rbd-mirror/four-per-cluster.yaml
new file mode 100644
index 000000000..70df34e40
--- /dev/null
+++ b/qa/suites/rbd/mirror-thrash/rbd-mirror/four-per-cluster.yaml
@@ -0,0 +1,31 @@
+meta:
+- desc: run four rbd-mirror daemons per cluster
+tasks:
+- rbd-mirror:
+ client: cluster1.client.mirror.0
+ thrash: True
+- rbd-mirror:
+ client: cluster1.client.mirror.1
+ thrash: True
+- rbd-mirror:
+ client: cluster1.client.mirror.2
+ thrash: True
+- rbd-mirror:
+ client: cluster1.client.mirror.3
+ thrash: True
+- rbd-mirror:
+ client: cluster2.client.mirror.0
+ thrash: True
+- rbd-mirror:
+ client: cluster2.client.mirror.1
+ thrash: True
+- rbd-mirror:
+ client: cluster2.client.mirror.2
+ thrash: True
+- rbd-mirror:
+ client: cluster2.client.mirror.3
+ thrash: True
+- rbd-mirror-thrash:
+ cluster: cluster1
+- rbd-mirror-thrash:
+ cluster: cluster2
diff --git a/qa/suites/rbd/mirror-thrash/supported-random-distro$ b/qa/suites/rbd/mirror-thrash/supported-random-distro$
new file mode 120000
index 000000000..0862b4457
--- /dev/null
+++ b/qa/suites/rbd/mirror-thrash/supported-random-distro$
@@ -0,0 +1 @@
+.qa/distros/supported-random-distro$ \ No newline at end of file
diff --git a/qa/suites/rbd/mirror-thrash/workloads/.qa b/qa/suites/rbd/mirror-thrash/workloads/.qa
new file mode 120000
index 000000000..a602a0353
--- /dev/null
+++ b/qa/suites/rbd/mirror-thrash/workloads/.qa
@@ -0,0 +1 @@
+../.qa/ \ No newline at end of file
diff --git a/qa/suites/rbd/mirror-thrash/workloads/rbd-mirror-fsx-workunit.yaml b/qa/suites/rbd/mirror-thrash/workloads/rbd-mirror-fsx-workunit.yaml
new file mode 100644
index 000000000..d2db0f520
--- /dev/null
+++ b/qa/suites/rbd/mirror-thrash/workloads/rbd-mirror-fsx-workunit.yaml
@@ -0,0 +1,33 @@
+meta:
+- desc: run multiple FSX workloads to simulate cluster load and then verify
+ that the images were replicated
+tasks:
+- workunit:
+ clients:
+ cluster1.client.mirror: [rbd/rbd_mirror_fsx_prepare.sh]
+ env:
+ # override workunit setting of CEPH_ARGS='--cluster'
+ CEPH_ARGS: ''
+ RBD_MIRROR_NOCLEANUP: '1'
+ RBD_MIRROR_USE_EXISTING_CLUSTER: '1'
+ RBD_MIRROR_USE_RBD_MIRROR: '1'
+- rbd_fsx:
+ clients:
+ - cluster1.client.mirror.0
+ - cluster1.client.mirror.1
+ - cluster1.client.mirror.2
+ - cluster1.client.mirror.3
+ - cluster1.client.mirror.4
+ - cluster1.client.mirror.5
+ ops: 6000
+ keep_images: true
+ pool_name: mirror
+- workunit:
+ clients:
+ cluster1.client.mirror: [rbd/rbd_mirror_fsx_compare.sh]
+ env:
+ # override workunit setting of CEPH_ARGS='--cluster'
+ CEPH_ARGS: ''
+ RBD_MIRROR_USE_EXISTING_CLUSTER: '1'
+ RBD_MIRROR_USE_RBD_MIRROR: '1'
+ timeout: 6h
diff --git a/qa/suites/rbd/mirror-thrash/workloads/rbd-mirror-journal-stress-workunit.yaml b/qa/suites/rbd/mirror-thrash/workloads/rbd-mirror-journal-stress-workunit.yaml
new file mode 100644
index 000000000..9579b70d6
--- /dev/null
+++ b/qa/suites/rbd/mirror-thrash/workloads/rbd-mirror-journal-stress-workunit.yaml
@@ -0,0 +1,15 @@
+meta:
+- desc: run the rbd_mirror_stress.sh workunit to test the rbd-mirror daemon
+tasks:
+- workunit:
+ clients:
+ cluster1.client.mirror: [rbd/rbd_mirror_stress.sh]
+ env:
+ # override workunit setting of CEPH_ARGS='--cluster'
+ CEPH_ARGS: ''
+ RBD_MIRROR_INSTANCES: '4'
+ RBD_MIRROR_USE_EXISTING_CLUSTER: '1'
+ RBD_MIRROR_USE_RBD_MIRROR: '1'
+ MIRROR_POOL_MODE: 'pool'
+ MIRROR_IMAGE_MODE: 'journal'
+ timeout: 6h
diff --git a/qa/suites/rbd/mirror-thrash/workloads/rbd-mirror-journal-workunit.yaml b/qa/suites/rbd/mirror-thrash/workloads/rbd-mirror-journal-workunit.yaml
new file mode 100644
index 000000000..5f12b2239
--- /dev/null
+++ b/qa/suites/rbd/mirror-thrash/workloads/rbd-mirror-journal-workunit.yaml
@@ -0,0 +1,12 @@
+meta:
+- desc: run the rbd_mirror_journal.sh workunit to test the rbd-mirror daemon
+tasks:
+- workunit:
+ clients:
+ cluster1.client.mirror: [rbd/rbd_mirror_journal.sh]
+ env:
+ # override workunit setting of CEPH_ARGS='--cluster'
+ CEPH_ARGS: ''
+ RBD_MIRROR_INSTANCES: '4'
+ RBD_MIRROR_USE_EXISTING_CLUSTER: '1'
+ RBD_MIRROR_USE_RBD_MIRROR: '1'
diff --git a/qa/suites/rbd/mirror-thrash/workloads/rbd-mirror-snapshot-stress-workunit-exclusive-lock.yaml b/qa/suites/rbd/mirror-thrash/workloads/rbd-mirror-snapshot-stress-workunit-exclusive-lock.yaml
new file mode 100644
index 000000000..87632483d
--- /dev/null
+++ b/qa/suites/rbd/mirror-thrash/workloads/rbd-mirror-snapshot-stress-workunit-exclusive-lock.yaml
@@ -0,0 +1,16 @@
+meta:
+- desc: run the rbd_mirror_stress.sh workunit to test the rbd-mirror daemon
+tasks:
+- workunit:
+ clients:
+ cluster1.client.mirror: [rbd/rbd_mirror_stress.sh]
+ env:
+ # override workunit setting of CEPH_ARGS='--cluster'
+ CEPH_ARGS: ''
+ MIRROR_POOL_MODE: 'image'
+ MIRROR_IMAGE_MODE: 'snapshot'
+ RBD_IMAGE_FEATURES: 'layering,exclusive-lock'
+ RBD_MIRROR_INSTANCES: '4'
+ RBD_MIRROR_USE_EXISTING_CLUSTER: '1'
+ RBD_MIRROR_USE_RBD_MIRROR: '1'
+ timeout: 6h
diff --git a/qa/suites/rbd/mirror-thrash/workloads/rbd-mirror-snapshot-stress-workunit-fast-diff.yaml b/qa/suites/rbd/mirror-thrash/workloads/rbd-mirror-snapshot-stress-workunit-fast-diff.yaml
new file mode 100644
index 000000000..fc43b0ec2
--- /dev/null
+++ b/qa/suites/rbd/mirror-thrash/workloads/rbd-mirror-snapshot-stress-workunit-fast-diff.yaml
@@ -0,0 +1,16 @@
+meta:
+- desc: run the rbd_mirror_stress.sh workunit to test the rbd-mirror daemon
+tasks:
+- workunit:
+ clients:
+ cluster1.client.mirror: [rbd/rbd_mirror_stress.sh]
+ env:
+ # override workunit setting of CEPH_ARGS='--cluster'
+ CEPH_ARGS: ''
+ MIRROR_POOL_MODE: 'image'
+ MIRROR_IMAGE_MODE: 'snapshot'
+ RBD_IMAGE_FEATURES: 'layering,exclusive-lock,object-map,fast-diff'
+ RBD_MIRROR_INSTANCES: '4'
+ RBD_MIRROR_USE_EXISTING_CLUSTER: '1'
+ RBD_MIRROR_USE_RBD_MIRROR: '1'
+ timeout: 6h
diff --git a/qa/suites/rbd/mirror-thrash/workloads/rbd-mirror-snapshot-stress-workunit-minimum.yaml b/qa/suites/rbd/mirror-thrash/workloads/rbd-mirror-snapshot-stress-workunit-minimum.yaml
new file mode 100644
index 000000000..af0ea1240
--- /dev/null
+++ b/qa/suites/rbd/mirror-thrash/workloads/rbd-mirror-snapshot-stress-workunit-minimum.yaml
@@ -0,0 +1,16 @@
+meta:
+- desc: run the rbd_mirror_stress.sh workunit to test the rbd-mirror daemon
+tasks:
+- workunit:
+ clients:
+ cluster1.client.mirror: [rbd/rbd_mirror_stress.sh]
+ env:
+ # override workunit setting of CEPH_ARGS='--cluster'
+ CEPH_ARGS: ''
+ MIRROR_POOL_MODE: 'image'
+ MIRROR_IMAGE_MODE: 'snapshot'
+ RBD_IMAGE_FEATURES: 'layering'
+ RBD_MIRROR_INSTANCES: '4'
+ RBD_MIRROR_USE_EXISTING_CLUSTER: '1'
+ RBD_MIRROR_USE_RBD_MIRROR: '1'
+ timeout: 6h
diff --git a/qa/suites/rbd/mirror/% b/qa/suites/rbd/mirror/%
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/qa/suites/rbd/mirror/%
diff --git a/qa/suites/rbd/mirror/.qa b/qa/suites/rbd/mirror/.qa
new file mode 120000
index 000000000..a602a0353
--- /dev/null
+++ b/qa/suites/rbd/mirror/.qa
@@ -0,0 +1 @@
+../.qa/ \ No newline at end of file
diff --git a/qa/suites/rbd/mirror/base b/qa/suites/rbd/mirror/base
new file mode 120000
index 000000000..8d9546e21
--- /dev/null
+++ b/qa/suites/rbd/mirror/base
@@ -0,0 +1 @@
+../mirror-thrash/base \ No newline at end of file
diff --git a/qa/suites/rbd/mirror/clients/+ b/qa/suites/rbd/mirror/clients/+
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/qa/suites/rbd/mirror/clients/+
diff --git a/qa/suites/rbd/mirror/clients/.qa b/qa/suites/rbd/mirror/clients/.qa
new file mode 120000
index 000000000..a602a0353
--- /dev/null
+++ b/qa/suites/rbd/mirror/clients/.qa
@@ -0,0 +1 @@
+../.qa/ \ No newline at end of file
diff --git a/qa/suites/rbd/mirror/clients/mirror-extra.yaml b/qa/suites/rbd/mirror/clients/mirror-extra.yaml
new file mode 100644
index 000000000..5eed5cfcd
--- /dev/null
+++ b/qa/suites/rbd/mirror/clients/mirror-extra.yaml
@@ -0,0 +1,24 @@
+meta:
+- desc: configure the permissions for client.mirror
+overrides:
+ ceph:
+ conf:
+ # override to make these names predictable
+ client.mirror.4:
+ admin socket: /var/run/ceph/rbd-mirror.$cluster-$name.asok
+ pid file: /var/run/ceph/rbd-mirror.$cluster-$name.pid
+ client.mirror.5:
+ admin socket: /var/run/ceph/rbd-mirror.$cluster-$name.asok
+ pid file: /var/run/ceph/rbd-mirror.$cluster-$name.pid
+ client.mirror.6:
+ admin socket: /var/run/ceph/rbd-mirror.$cluster-$name.asok
+ pid file: /var/run/ceph/rbd-mirror.$cluster-$name.pid
+tasks:
+- exec:
+ cluster1.client.mirror.0:
+ - "sudo ceph --cluster cluster1 auth caps client.mirror.4 mon 'profile rbd-mirror' osd 'profile rbd'"
+ - "sudo ceph --cluster cluster1 auth caps client.mirror.5 mon 'profile rbd-mirror' osd 'profile rbd'"
+ - "sudo ceph --cluster cluster1 auth caps client.mirror.6 mon 'profile rbd-mirror' osd 'profile rbd'"
+ - "sudo ceph --cluster cluster2 auth caps client.mirror.4 mon 'profile rbd-mirror' osd 'profile rbd'"
+ - "sudo ceph --cluster cluster2 auth caps client.mirror.5 mon 'profile rbd-mirror' osd 'profile rbd'"
+ - "sudo ceph --cluster cluster2 auth caps client.mirror.6 mon 'profile rbd-mirror' osd 'profile rbd'"
diff --git a/qa/suites/rbd/mirror/clients/mirror.yaml b/qa/suites/rbd/mirror/clients/mirror.yaml
new file mode 120000
index 000000000..0dfb0c785
--- /dev/null
+++ b/qa/suites/rbd/mirror/clients/mirror.yaml
@@ -0,0 +1 @@
+../../mirror-thrash/clients/mirror.yaml \ No newline at end of file
diff --git a/qa/suites/rbd/mirror/cluster b/qa/suites/rbd/mirror/cluster
new file mode 120000
index 000000000..3fc87a150
--- /dev/null
+++ b/qa/suites/rbd/mirror/cluster
@@ -0,0 +1 @@
+../mirror-thrash/cluster \ No newline at end of file
diff --git a/qa/suites/rbd/mirror/conf b/qa/suites/rbd/mirror/conf
new file mode 120000
index 000000000..4bc0fe86c
--- /dev/null
+++ b/qa/suites/rbd/mirror/conf
@@ -0,0 +1 @@
+.qa/rbd/conf \ No newline at end of file
diff --git a/qa/suites/rbd/mirror/msgr-failures b/qa/suites/rbd/mirror/msgr-failures
new file mode 120000
index 000000000..728aeab33
--- /dev/null
+++ b/qa/suites/rbd/mirror/msgr-failures
@@ -0,0 +1 @@
+../mirror-thrash/msgr-failures \ No newline at end of file
diff --git a/qa/suites/rbd/mirror/objectstore b/qa/suites/rbd/mirror/objectstore
new file mode 120000
index 000000000..d751ff121
--- /dev/null
+++ b/qa/suites/rbd/mirror/objectstore
@@ -0,0 +1 @@
+../mirror-thrash/objectstore \ No newline at end of file
diff --git a/qa/suites/rbd/mirror/supported-random-distro$ b/qa/suites/rbd/mirror/supported-random-distro$
new file mode 120000
index 000000000..0862b4457
--- /dev/null
+++ b/qa/suites/rbd/mirror/supported-random-distro$
@@ -0,0 +1 @@
+.qa/distros/supported-random-distro$ \ No newline at end of file
diff --git a/qa/suites/rbd/mirror/workloads/.qa b/qa/suites/rbd/mirror/workloads/.qa
new file mode 120000
index 000000000..a602a0353
--- /dev/null
+++ b/qa/suites/rbd/mirror/workloads/.qa
@@ -0,0 +1 @@
+../.qa/ \ No newline at end of file
diff --git a/qa/suites/rbd/mirror/workloads/rbd-mirror-ha-workunit.yaml b/qa/suites/rbd/mirror/workloads/rbd-mirror-ha-workunit.yaml
new file mode 100644
index 000000000..7347f7f76
--- /dev/null
+++ b/qa/suites/rbd/mirror/workloads/rbd-mirror-ha-workunit.yaml
@@ -0,0 +1,16 @@
+meta:
+- desc: run the rbd_mirror_ha.sh workunit to test the rbd-mirror daemon
+overrides:
+ ceph:
+ conf:
+ client:
+ rbd mirror image policy type: none
+tasks:
+- workunit:
+ clients:
+ cluster1.client.mirror: [rbd/rbd_mirror_ha.sh]
+ env:
+ # override workunit setting of CEPH_ARGS='--cluster'
+ CEPH_ARGS: ''
+ RBD_MIRROR_USE_EXISTING_CLUSTER: '1'
+ timeout: 6h
diff --git a/qa/suites/rbd/mirror/workloads/rbd-mirror-journal-bootstrap-workunit.yaml b/qa/suites/rbd/mirror/workloads/rbd-mirror-journal-bootstrap-workunit.yaml
new file mode 100644
index 000000000..b9c5562be
--- /dev/null
+++ b/qa/suites/rbd/mirror/workloads/rbd-mirror-journal-bootstrap-workunit.yaml
@@ -0,0 +1,13 @@
+meta:
+- desc: run the rbd_mirror_bootstrap.sh workunit to test the rbd-mirror daemon
+tasks:
+- workunit:
+ clients:
+ cluster1.client.mirror: [rbd/rbd_mirror_bootstrap.sh]
+ env:
+ # override workunit setting of CEPH_ARGS='--cluster'
+ CEPH_ARGS: ''
+ RBD_MIRROR_INSTANCES: '1'
+ RBD_MIRROR_USE_EXISTING_CLUSTER: '1'
+ MIRROR_POOL_MODE: 'pool'
+ MIRROR_IMAGE_MODE: 'journal'
diff --git a/qa/suites/rbd/mirror/workloads/rbd-mirror-snapshot-bootstrap-workunit.yaml b/qa/suites/rbd/mirror/workloads/rbd-mirror-snapshot-bootstrap-workunit.yaml
new file mode 100644
index 000000000..5ad78474d
--- /dev/null
+++ b/qa/suites/rbd/mirror/workloads/rbd-mirror-snapshot-bootstrap-workunit.yaml
@@ -0,0 +1,13 @@
+meta:
+- desc: run the rbd_mirror_bootstrap.sh workunit to test the rbd-mirror daemon
+tasks:
+- workunit:
+ clients:
+ cluster1.client.mirror: [rbd/rbd_mirror_bootstrap.sh]
+ env:
+ # override workunit setting of CEPH_ARGS='--cluster'
+ CEPH_ARGS: ''
+ RBD_MIRROR_INSTANCES: '1'
+ RBD_MIRROR_USE_EXISTING_CLUSTER: '1'
+ MIRROR_POOL_MODE: 'image'
+ MIRROR_IMAGE_MODE: 'snapshot'
diff --git a/qa/suites/rbd/mirror/workloads/rbd-mirror-snapshot-workunit-exclusive-lock.yaml b/qa/suites/rbd/mirror/workloads/rbd-mirror-snapshot-workunit-exclusive-lock.yaml
new file mode 100644
index 000000000..29047a77d
--- /dev/null
+++ b/qa/suites/rbd/mirror/workloads/rbd-mirror-snapshot-workunit-exclusive-lock.yaml
@@ -0,0 +1,13 @@
+meta:
+- desc: run the rbd_mirror_snapshot.sh workunit to test the rbd-mirror daemon
+tasks:
+- workunit:
+ clients:
+ cluster1.client.mirror: [rbd/rbd_mirror_snapshot.sh]
+ env:
+ # override workunit setting of CEPH_ARGS='--cluster'
+ CEPH_ARGS: ''
+ RBD_MIRROR_INSTANCES: '4'
+ RBD_MIRROR_USE_EXISTING_CLUSTER: '1'
+ RBD_MIRROR_CONFIG_KEY: '1'
+ RBD_IMAGE_FEATURES: 'layering,exclusive-lock'
diff --git a/qa/suites/rbd/mirror/workloads/rbd-mirror-snapshot-workunit-fast-diff.yaml b/qa/suites/rbd/mirror/workloads/rbd-mirror-snapshot-workunit-fast-diff.yaml
new file mode 100644
index 000000000..af13c92b5
--- /dev/null
+++ b/qa/suites/rbd/mirror/workloads/rbd-mirror-snapshot-workunit-fast-diff.yaml
@@ -0,0 +1,13 @@
+meta:
+- desc: run the rbd_mirror_snapshot.sh workunit to test the rbd-mirror daemon
+tasks:
+- workunit:
+ clients:
+ cluster1.client.mirror: [rbd/rbd_mirror_snapshot.sh]
+ env:
+ # override workunit setting of CEPH_ARGS='--cluster'
+ CEPH_ARGS: ''
+ RBD_MIRROR_INSTANCES: '4'
+ RBD_MIRROR_USE_EXISTING_CLUSTER: '1'
+ RBD_MIRROR_CONFIG_KEY: '1'
+ RBD_IMAGE_FEATURES: 'layering,exclusive-lock,object-map,fast-diff'
diff --git a/qa/suites/rbd/mirror/workloads/rbd-mirror-snapshot-workunit-journaling.yaml b/qa/suites/rbd/mirror/workloads/rbd-mirror-snapshot-workunit-journaling.yaml
new file mode 100644
index 000000000..5ea2bb105
--- /dev/null
+++ b/qa/suites/rbd/mirror/workloads/rbd-mirror-snapshot-workunit-journaling.yaml
@@ -0,0 +1,13 @@
+meta:
+- desc: run the rbd_mirror_snapshot.sh workunit to test the rbd-mirror daemon
+tasks:
+- workunit:
+ clients:
+ cluster1.client.mirror: [rbd/rbd_mirror_snapshot.sh]
+ env:
+ # override workunit setting of CEPH_ARGS='--cluster'
+ CEPH_ARGS: ''
+ RBD_MIRROR_INSTANCES: '4'
+ RBD_MIRROR_USE_EXISTING_CLUSTER: '1'
+ RBD_MIRROR_CONFIG_KEY: '1'
+ RBD_IMAGE_FEATURES: 'layering,exclusive-lock,journaling'
diff --git a/qa/suites/rbd/mirror/workloads/rbd-mirror-snapshot-workunit-minimum.yaml b/qa/suites/rbd/mirror/workloads/rbd-mirror-snapshot-workunit-minimum.yaml
new file mode 100644
index 000000000..e21d57b2b
--- /dev/null
+++ b/qa/suites/rbd/mirror/workloads/rbd-mirror-snapshot-workunit-minimum.yaml
@@ -0,0 +1,13 @@
+meta:
+- desc: run the rbd_mirror_snapshot.sh workunit to test the rbd-mirror daemon
+tasks:
+- workunit:
+ clients:
+ cluster1.client.mirror: [rbd/rbd_mirror_snapshot.sh]
+ env:
+ # override workunit setting of CEPH_ARGS='--cluster'
+ CEPH_ARGS: ''
+ RBD_MIRROR_INSTANCES: '4'
+ RBD_MIRROR_USE_EXISTING_CLUSTER: '1'
+ RBD_MIRROR_CONFIG_KEY: '1'
+ RBD_IMAGE_FEATURES: 'layering'
diff --git a/qa/suites/rbd/mirror/workloads/rbd-mirror-stress-workunit-min-compat-client-octopus.yaml b/qa/suites/rbd/mirror/workloads/rbd-mirror-stress-workunit-min-compat-client-octopus.yaml
new file mode 100644
index 000000000..5cc351bb9
--- /dev/null
+++ b/qa/suites/rbd/mirror/workloads/rbd-mirror-stress-workunit-min-compat-client-octopus.yaml
@@ -0,0 +1,11 @@
+meta:
+- desc: run the rbd_mirror_stress.sh workunit to test the rbd-mirror daemon
+tasks:
+- workunit:
+ clients:
+ cluster1.client.mirror: [rbd/rbd_mirror_stress.sh]
+ env:
+ # override workunit setting of CEPH_ARGS='--cluster'
+ CEPH_ARGS: ''
+ RBD_MIRROR_USE_EXISTING_CLUSTER: '1'
+ RBD_MIRROR_MIN_COMPAT_CLIENT: 'octopus'
diff --git a/qa/suites/rbd/mirror/workloads/rbd-mirror-workunit-config-key.yaml b/qa/suites/rbd/mirror/workloads/rbd-mirror-workunit-config-key.yaml
new file mode 100644
index 000000000..0102050eb
--- /dev/null
+++ b/qa/suites/rbd/mirror/workloads/rbd-mirror-workunit-config-key.yaml
@@ -0,0 +1,12 @@
+meta:
+- desc: run the rbd_mirror_journal.sh workunit to test the rbd-mirror daemon
+tasks:
+- workunit:
+ clients:
+ cluster1.client.mirror: [rbd/rbd_mirror_journal.sh]
+ env:
+ # override workunit setting of CEPH_ARGS='--cluster'
+ CEPH_ARGS: ''
+ RBD_MIRROR_INSTANCES: '4'
+ RBD_MIRROR_USE_EXISTING_CLUSTER: '1'
+ RBD_MIRROR_CONFIG_KEY: '1'
diff --git a/qa/suites/rbd/mirror/workloads/rbd-mirror-workunit-min-compat-client-octopus.yaml b/qa/suites/rbd/mirror/workloads/rbd-mirror-workunit-min-compat-client-octopus.yaml
new file mode 100644
index 000000000..5bd024d2d
--- /dev/null
+++ b/qa/suites/rbd/mirror/workloads/rbd-mirror-workunit-min-compat-client-octopus.yaml
@@ -0,0 +1,11 @@
+meta:
+- desc: run the rbd_mirror_journal.sh workunit to test the rbd-mirror daemon
+tasks:
+- workunit:
+ clients:
+ cluster1.client.mirror: [rbd/rbd_mirror_journal.sh]
+ env:
+ # override workunit setting of CEPH_ARGS='--cluster'
+ CEPH_ARGS: ''
+ RBD_MIRROR_USE_EXISTING_CLUSTER: '1'
+ RBD_MIRROR_MIN_COMPAT_CLIENT: 'octopus'
diff --git a/qa/suites/rbd/mirror/workloads/rbd-mirror-workunit-policy-none.yaml b/qa/suites/rbd/mirror/workloads/rbd-mirror-workunit-policy-none.yaml
new file mode 100644
index 000000000..0a610ea2f
--- /dev/null
+++ b/qa/suites/rbd/mirror/workloads/rbd-mirror-workunit-policy-none.yaml
@@ -0,0 +1,16 @@
+meta:
+- desc: run the rbd_mirror_journal.sh workunit to test the rbd-mirror daemon
+overrides:
+ ceph:
+ conf:
+ client:
+ rbd mirror image policy type: none
+tasks:
+- workunit:
+ clients:
+ cluster1.client.mirror: [rbd/rbd_mirror_journal.sh]
+ env:
+ # override workunit setting of CEPH_ARGS='--cluster'
+ CEPH_ARGS: ''
+ RBD_MIRROR_INSTANCES: '4'
+ RBD_MIRROR_USE_EXISTING_CLUSTER: '1'
diff --git a/qa/suites/rbd/mirror/workloads/rbd-mirror-workunit-policy-simple.yaml b/qa/suites/rbd/mirror/workloads/rbd-mirror-workunit-policy-simple.yaml
new file mode 100644
index 000000000..883e8abd3
--- /dev/null
+++ b/qa/suites/rbd/mirror/workloads/rbd-mirror-workunit-policy-simple.yaml
@@ -0,0 +1,16 @@
+meta:
+- desc: run the rbd_mirror_journal.sh workunit to test the rbd-mirror daemon
+overrides:
+ ceph:
+ conf:
+ client:
+ rbd mirror image policy type: simple
+tasks:
+- workunit:
+ clients:
+ cluster1.client.mirror: [rbd/rbd_mirror_journal.sh]
+ env:
+ # override workunit setting of CEPH_ARGS='--cluster'
+ CEPH_ARGS: ''
+ RBD_MIRROR_INSTANCES: '4'
+ RBD_MIRROR_USE_EXISTING_CLUSTER: '1'
diff --git a/qa/suites/rbd/nbd/% b/qa/suites/rbd/nbd/%
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/qa/suites/rbd/nbd/%
diff --git a/qa/suites/rbd/nbd/.qa b/qa/suites/rbd/nbd/.qa
new file mode 120000
index 000000000..a602a0353
--- /dev/null
+++ b/qa/suites/rbd/nbd/.qa
@@ -0,0 +1 @@
+../.qa/ \ No newline at end of file
diff --git a/qa/suites/rbd/nbd/base b/qa/suites/rbd/nbd/base
new file mode 120000
index 000000000..fd10a859d
--- /dev/null
+++ b/qa/suites/rbd/nbd/base
@@ -0,0 +1 @@
+../thrash/base \ No newline at end of file
diff --git a/qa/suites/rbd/nbd/cluster/+ b/qa/suites/rbd/nbd/cluster/+
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/qa/suites/rbd/nbd/cluster/+
diff --git a/qa/suites/rbd/nbd/cluster/.qa b/qa/suites/rbd/nbd/cluster/.qa
new file mode 120000
index 000000000..a602a0353
--- /dev/null
+++ b/qa/suites/rbd/nbd/cluster/.qa
@@ -0,0 +1 @@
+../.qa/ \ No newline at end of file
diff --git a/qa/suites/rbd/nbd/cluster/fixed-3.yaml b/qa/suites/rbd/nbd/cluster/fixed-3.yaml
new file mode 100644
index 000000000..182589152
--- /dev/null
+++ b/qa/suites/rbd/nbd/cluster/fixed-3.yaml
@@ -0,0 +1,4 @@
+roles:
+- [mon.a, mon.c, osd.0, osd.1, osd.2]
+- [mon.b, mgr.x, osd.3, osd.4, osd.5]
+- [client.0]
diff --git a/qa/suites/rbd/nbd/cluster/openstack.yaml b/qa/suites/rbd/nbd/cluster/openstack.yaml
new file mode 120000
index 000000000..48becbb83
--- /dev/null
+++ b/qa/suites/rbd/nbd/cluster/openstack.yaml
@@ -0,0 +1 @@
+../../thrash/clusters/openstack.yaml \ No newline at end of file
diff --git a/qa/suites/rbd/nbd/conf b/qa/suites/rbd/nbd/conf
new file mode 120000
index 000000000..4bc0fe86c
--- /dev/null
+++ b/qa/suites/rbd/nbd/conf
@@ -0,0 +1 @@
+.qa/rbd/conf \ No newline at end of file
diff --git a/qa/suites/rbd/nbd/msgr-failures b/qa/suites/rbd/nbd/msgr-failures
new file mode 120000
index 000000000..03689aa44
--- /dev/null
+++ b/qa/suites/rbd/nbd/msgr-failures
@@ -0,0 +1 @@
+../thrash/msgr-failures \ No newline at end of file
diff --git a/qa/suites/rbd/nbd/objectstore b/qa/suites/rbd/nbd/objectstore
new file mode 120000
index 000000000..c40bd3261
--- /dev/null
+++ b/qa/suites/rbd/nbd/objectstore
@@ -0,0 +1 @@
+.qa/objectstore \ No newline at end of file
diff --git a/qa/suites/rbd/nbd/supported-random-distro$ b/qa/suites/rbd/nbd/supported-random-distro$
new file mode 120000
index 000000000..0862b4457
--- /dev/null
+++ b/qa/suites/rbd/nbd/supported-random-distro$
@@ -0,0 +1 @@
+.qa/distros/supported-random-distro$ \ No newline at end of file
diff --git a/qa/suites/rbd/nbd/thrashers b/qa/suites/rbd/nbd/thrashers
new file mode 120000
index 000000000..f461dadc3
--- /dev/null
+++ b/qa/suites/rbd/nbd/thrashers
@@ -0,0 +1 @@
+../thrash/thrashers \ No newline at end of file
diff --git a/qa/suites/rbd/nbd/thrashosds-health.yaml b/qa/suites/rbd/nbd/thrashosds-health.yaml
new file mode 120000
index 000000000..9124eb1aa
--- /dev/null
+++ b/qa/suites/rbd/nbd/thrashosds-health.yaml
@@ -0,0 +1 @@
+.qa/tasks/thrashosds-health.yaml \ No newline at end of file
diff --git a/qa/suites/rbd/nbd/workloads/.qa b/qa/suites/rbd/nbd/workloads/.qa
new file mode 120000
index 000000000..a602a0353
--- /dev/null
+++ b/qa/suites/rbd/nbd/workloads/.qa
@@ -0,0 +1 @@
+../.qa/ \ No newline at end of file
diff --git a/qa/suites/rbd/nbd/workloads/rbd_fsx_nbd.yaml b/qa/suites/rbd/nbd/workloads/rbd_fsx_nbd.yaml
new file mode 100644
index 000000000..b5737671f
--- /dev/null
+++ b/qa/suites/rbd/nbd/workloads/rbd_fsx_nbd.yaml
@@ -0,0 +1,14 @@
+overrides:
+ install:
+ ceph:
+ extra_packages: [rbd-nbd]
+tasks:
+- rbd_fsx:
+ clients: [client.0]
+ ops: 6000
+ nbd: True
+ holebdy: 512
+ punch_holes: true
+ readbdy: 512
+ truncbdy: 512
+ writebdy: 512
diff --git a/qa/suites/rbd/nbd/workloads/rbd_nbd.yaml b/qa/suites/rbd/nbd/workloads/rbd_nbd.yaml
new file mode 100644
index 000000000..ededea024
--- /dev/null
+++ b/qa/suites/rbd/nbd/workloads/rbd_nbd.yaml
@@ -0,0 +1,9 @@
+overrides:
+ install:
+ ceph:
+ extra_packages: [rbd-nbd]
+tasks:
+- workunit:
+ clients:
+ client.0:
+ - rbd/rbd-nbd.sh
diff --git a/qa/suites/rbd/nbd/workloads/rbd_nbd_diff_continuous.yaml b/qa/suites/rbd/nbd/workloads/rbd_nbd_diff_continuous.yaml
new file mode 100644
index 000000000..e0a7ebe33
--- /dev/null
+++ b/qa/suites/rbd/nbd/workloads/rbd_nbd_diff_continuous.yaml
@@ -0,0 +1,14 @@
+overrides:
+ install:
+ ceph:
+ extra_packages:
+ - rbd-nbd
+ extra_system_packages:
+ - pv
+tasks:
+- workunit:
+ clients:
+ client.0:
+ - rbd/diff_continuous.sh
+ env:
+ RBD_DEVICE_TYPE: "nbd"
diff --git a/qa/suites/rbd/pwl-cache/.qa b/qa/suites/rbd/pwl-cache/.qa
new file mode 120000
index 000000000..a602a0353
--- /dev/null
+++ b/qa/suites/rbd/pwl-cache/.qa
@@ -0,0 +1 @@
+../.qa/ \ No newline at end of file
diff --git a/qa/suites/rbd/pwl-cache/home/% b/qa/suites/rbd/pwl-cache/home/%
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/qa/suites/rbd/pwl-cache/home/%
diff --git a/qa/suites/rbd/pwl-cache/home/.qa b/qa/suites/rbd/pwl-cache/home/.qa
new file mode 120000
index 000000000..a602a0353
--- /dev/null
+++ b/qa/suites/rbd/pwl-cache/home/.qa
@@ -0,0 +1 @@
+../.qa/ \ No newline at end of file
diff --git a/qa/suites/rbd/pwl-cache/home/1-base b/qa/suites/rbd/pwl-cache/home/1-base
new file mode 120000
index 000000000..89c3c7e84
--- /dev/null
+++ b/qa/suites/rbd/pwl-cache/home/1-base
@@ -0,0 +1 @@
+../../basic/base/ \ No newline at end of file
diff --git a/qa/suites/rbd/pwl-cache/home/2-cluster/+ b/qa/suites/rbd/pwl-cache/home/2-cluster/+
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/qa/suites/rbd/pwl-cache/home/2-cluster/+
diff --git a/qa/suites/rbd/pwl-cache/home/2-cluster/.qa b/qa/suites/rbd/pwl-cache/home/2-cluster/.qa
new file mode 120000
index 000000000..a602a0353
--- /dev/null
+++ b/qa/suites/rbd/pwl-cache/home/2-cluster/.qa
@@ -0,0 +1 @@
+../.qa/ \ No newline at end of file
diff --git a/qa/suites/rbd/pwl-cache/home/2-cluster/fix-2.yaml b/qa/suites/rbd/pwl-cache/home/2-cluster/fix-2.yaml
new file mode 100644
index 000000000..dbccecbce
--- /dev/null
+++ b/qa/suites/rbd/pwl-cache/home/2-cluster/fix-2.yaml
@@ -0,0 +1,3 @@
+roles:
+- [mon.a, mgr.x, osd.0, osd.1]
+- [mon.b, mgr.y, osd.2, osd.3, client.0]
diff --git a/qa/suites/rbd/pwl-cache/home/2-cluster/openstack.yaml b/qa/suites/rbd/pwl-cache/home/2-cluster/openstack.yaml
new file mode 100644
index 000000000..b113e4f2e
--- /dev/null
+++ b/qa/suites/rbd/pwl-cache/home/2-cluster/openstack.yaml
@@ -0,0 +1,4 @@
+openstack:
+ - volumes: # attached to each instance
+ count: 4
+ size: 10 # GB
diff --git a/qa/suites/rbd/pwl-cache/home/3-supported-random-distro$ b/qa/suites/rbd/pwl-cache/home/3-supported-random-distro$
new file mode 120000
index 000000000..0862b4457
--- /dev/null
+++ b/qa/suites/rbd/pwl-cache/home/3-supported-random-distro$
@@ -0,0 +1 @@
+.qa/distros/supported-random-distro$ \ No newline at end of file
diff --git a/qa/suites/rbd/pwl-cache/home/4-cache-path.yaml b/qa/suites/rbd/pwl-cache/home/4-cache-path.yaml
new file mode 100644
index 000000000..be4641b01
--- /dev/null
+++ b/qa/suites/rbd/pwl-cache/home/4-cache-path.yaml
@@ -0,0 +1,13 @@
+overrides:
+ ceph:
+ conf:
+ client:
+ rbd_persistent_cache_path: /home/ubuntu/cephtest/rbd-pwl-cache
+ rbd_plugins: pwl_cache
+tasks:
+- exec:
+ client.0:
+ - "mkdir -m 777 /home/ubuntu/cephtest/rbd-pwl-cache"
+- exec_on_cleanup:
+ client.0:
+ - "rm -rf /home/ubuntu/cephtest/rbd-pwl-cache"
diff --git a/qa/suites/rbd/pwl-cache/home/5-cache-mode/.qa b/qa/suites/rbd/pwl-cache/home/5-cache-mode/.qa
new file mode 120000
index 000000000..a602a0353
--- /dev/null
+++ b/qa/suites/rbd/pwl-cache/home/5-cache-mode/.qa
@@ -0,0 +1 @@
+../.qa/ \ No newline at end of file
diff --git a/qa/suites/rbd/pwl-cache/home/5-cache-mode/rwl.yaml b/qa/suites/rbd/pwl-cache/home/5-cache-mode/rwl.yaml
new file mode 100644
index 000000000..5aeab26b3
--- /dev/null
+++ b/qa/suites/rbd/pwl-cache/home/5-cache-mode/rwl.yaml
@@ -0,0 +1,5 @@
+overrides:
+ ceph:
+ conf:
+ client:
+ rbd_persistent_cache_mode: rwl
diff --git a/qa/suites/rbd/pwl-cache/home/5-cache-mode/ssd.yaml b/qa/suites/rbd/pwl-cache/home/5-cache-mode/ssd.yaml
new file mode 100644
index 000000000..082149147
--- /dev/null
+++ b/qa/suites/rbd/pwl-cache/home/5-cache-mode/ssd.yaml
@@ -0,0 +1,5 @@
+overrides:
+ ceph:
+ conf:
+ client:
+ rbd_persistent_cache_mode: ssd
diff --git a/qa/suites/rbd/pwl-cache/home/6-cache-size/.qa b/qa/suites/rbd/pwl-cache/home/6-cache-size/.qa
new file mode 120000
index 000000000..a602a0353
--- /dev/null
+++ b/qa/suites/rbd/pwl-cache/home/6-cache-size/.qa
@@ -0,0 +1 @@
+../.qa/ \ No newline at end of file
diff --git a/qa/suites/rbd/pwl-cache/home/6-cache-size/1G.yaml b/qa/suites/rbd/pwl-cache/home/6-cache-size/1G.yaml
new file mode 100644
index 000000000..53fcddcdf
--- /dev/null
+++ b/qa/suites/rbd/pwl-cache/home/6-cache-size/1G.yaml
@@ -0,0 +1,5 @@
+overrides:
+ ceph:
+ conf:
+ client:
+ rbd_persistent_cache_size: 1073741824
diff --git a/qa/suites/rbd/pwl-cache/home/6-cache-size/8G.yaml b/qa/suites/rbd/pwl-cache/home/6-cache-size/8G.yaml
new file mode 100644
index 000000000..b53d36852
--- /dev/null
+++ b/qa/suites/rbd/pwl-cache/home/6-cache-size/8G.yaml
@@ -0,0 +1,5 @@
+overrides:
+ ceph:
+ conf:
+ client:
+ rbd_persistent_cache_size: 8589934592
diff --git a/qa/suites/rbd/pwl-cache/home/7-workloads/.qa b/qa/suites/rbd/pwl-cache/home/7-workloads/.qa
new file mode 120000
index 000000000..a602a0353
--- /dev/null
+++ b/qa/suites/rbd/pwl-cache/home/7-workloads/.qa
@@ -0,0 +1 @@
+../.qa/ \ No newline at end of file
diff --git a/qa/suites/rbd/pwl-cache/home/7-workloads/c_api_tests_with_defaults.yaml b/qa/suites/rbd/pwl-cache/home/7-workloads/c_api_tests_with_defaults.yaml
new file mode 120000
index 000000000..359001f8f
--- /dev/null
+++ b/qa/suites/rbd/pwl-cache/home/7-workloads/c_api_tests_with_defaults.yaml
@@ -0,0 +1 @@
+../../../librbd/workloads/c_api_tests_with_defaults.yaml \ No newline at end of file
diff --git a/qa/suites/rbd/pwl-cache/home/7-workloads/fio.yaml b/qa/suites/rbd/pwl-cache/home/7-workloads/fio.yaml
new file mode 100644
index 000000000..f7aecce8a
--- /dev/null
+++ b/qa/suites/rbd/pwl-cache/home/7-workloads/fio.yaml
@@ -0,0 +1,8 @@
+tasks:
+- rbd_fio:
+ client.0:
+ fio-io-size: 100%
+ formats: [2]
+ io-engine: rbd
+ rw: randwrite
+ runtime: 600
diff --git a/qa/suites/rbd/pwl-cache/home/7-workloads/recovery.yaml b/qa/suites/rbd/pwl-cache/home/7-workloads/recovery.yaml
new file mode 100644
index 000000000..3017beb22
--- /dev/null
+++ b/qa/suites/rbd/pwl-cache/home/7-workloads/recovery.yaml
@@ -0,0 +1,9 @@
+tasks:
+- rbd.create_image:
+ client.0:
+ image_name: testimage
+ image_size: 10240
+ image_format: 2
+- rbd_pwl_cache_recovery:
+ client.0:
+ image_name: testimage
diff --git a/qa/suites/rbd/pwl-cache/home/conf b/qa/suites/rbd/pwl-cache/home/conf
new file mode 120000
index 000000000..4bc0fe86c
--- /dev/null
+++ b/qa/suites/rbd/pwl-cache/home/conf
@@ -0,0 +1 @@
+.qa/rbd/conf \ No newline at end of file
diff --git a/qa/suites/rbd/pwl-cache/tmpfs/% b/qa/suites/rbd/pwl-cache/tmpfs/%
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/qa/suites/rbd/pwl-cache/tmpfs/%
diff --git a/qa/suites/rbd/pwl-cache/tmpfs/.qa b/qa/suites/rbd/pwl-cache/tmpfs/.qa
new file mode 120000
index 000000000..a602a0353
--- /dev/null
+++ b/qa/suites/rbd/pwl-cache/tmpfs/.qa
@@ -0,0 +1 @@
+../.qa/ \ No newline at end of file
diff --git a/qa/suites/rbd/pwl-cache/tmpfs/1-base b/qa/suites/rbd/pwl-cache/tmpfs/1-base
new file mode 120000
index 000000000..89c3c7e84
--- /dev/null
+++ b/qa/suites/rbd/pwl-cache/tmpfs/1-base
@@ -0,0 +1 @@
+../../basic/base/ \ No newline at end of file
diff --git a/qa/suites/rbd/pwl-cache/tmpfs/2-cluster/+ b/qa/suites/rbd/pwl-cache/tmpfs/2-cluster/+
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/qa/suites/rbd/pwl-cache/tmpfs/2-cluster/+
diff --git a/qa/suites/rbd/pwl-cache/tmpfs/2-cluster/.qa b/qa/suites/rbd/pwl-cache/tmpfs/2-cluster/.qa
new file mode 120000
index 000000000..a602a0353
--- /dev/null
+++ b/qa/suites/rbd/pwl-cache/tmpfs/2-cluster/.qa
@@ -0,0 +1 @@
+../.qa/ \ No newline at end of file
diff --git a/qa/suites/rbd/pwl-cache/tmpfs/2-cluster/fix-2.yaml b/qa/suites/rbd/pwl-cache/tmpfs/2-cluster/fix-2.yaml
new file mode 100644
index 000000000..dbccecbce
--- /dev/null
+++ b/qa/suites/rbd/pwl-cache/tmpfs/2-cluster/fix-2.yaml
@@ -0,0 +1,3 @@
+roles:
+- [mon.a, mgr.x, osd.0, osd.1]
+- [mon.b, mgr.y, osd.2, osd.3, client.0]
diff --git a/qa/suites/rbd/pwl-cache/tmpfs/2-cluster/openstack.yaml b/qa/suites/rbd/pwl-cache/tmpfs/2-cluster/openstack.yaml
new file mode 100644
index 000000000..b113e4f2e
--- /dev/null
+++ b/qa/suites/rbd/pwl-cache/tmpfs/2-cluster/openstack.yaml
@@ -0,0 +1,4 @@
+openstack:
+ - volumes: # attached to each instance
+ count: 4
+ size: 10 # GB
diff --git a/qa/suites/rbd/pwl-cache/tmpfs/3-supported-random-distro$ b/qa/suites/rbd/pwl-cache/tmpfs/3-supported-random-distro$
new file mode 120000
index 000000000..0862b4457
--- /dev/null
+++ b/qa/suites/rbd/pwl-cache/tmpfs/3-supported-random-distro$
@@ -0,0 +1 @@
+.qa/distros/supported-random-distro$ \ No newline at end of file
diff --git a/qa/suites/rbd/pwl-cache/tmpfs/4-cache-path.yaml b/qa/suites/rbd/pwl-cache/tmpfs/4-cache-path.yaml
new file mode 100644
index 000000000..b5578a0ae
--- /dev/null
+++ b/qa/suites/rbd/pwl-cache/tmpfs/4-cache-path.yaml
@@ -0,0 +1,22 @@
+overrides:
+ ceph:
+ conf:
+ client:
+ rbd_persistent_cache_path: /home/ubuntu/cephtest/rbd-pwl-cache
+ rbd_plugins: pwl_cache
+tasks:
+- exec:
+ client.0:
+ - "mkdir /home/ubuntu/cephtest/tmpfs"
+ - "mkdir /home/ubuntu/cephtest/rbd-pwl-cache"
+ - "sudo mount -t tmpfs -o size=20G tmpfs /home/ubuntu/cephtest/tmpfs"
+ - "truncate -s 20G /home/ubuntu/cephtest/tmpfs/loopfile"
+ - "mkfs.ext4 /home/ubuntu/cephtest/tmpfs/loopfile"
+ - "sudo mount -o loop /home/ubuntu/cephtest/tmpfs/loopfile /home/ubuntu/cephtest/rbd-pwl-cache"
+ - "sudo chmod 777 /home/ubuntu/cephtest/rbd-pwl-cache"
+- exec_on_cleanup:
+ client.0:
+ - "sudo umount /home/ubuntu/cephtest/rbd-pwl-cache"
+ - "sudo umount /home/ubuntu/cephtest/tmpfs"
+ - "rm -rf /home/ubuntu/cephtest/rbd-pwl-cache"
+ - "rm -rf /home/ubuntu/cephtest/tmpfs"
diff --git a/qa/suites/rbd/pwl-cache/tmpfs/5-cache-mode/.qa b/qa/suites/rbd/pwl-cache/tmpfs/5-cache-mode/.qa
new file mode 120000
index 000000000..a602a0353
--- /dev/null
+++ b/qa/suites/rbd/pwl-cache/tmpfs/5-cache-mode/.qa
@@ -0,0 +1 @@
+../.qa/ \ No newline at end of file
diff --git a/qa/suites/rbd/pwl-cache/tmpfs/5-cache-mode/rwl.yaml b/qa/suites/rbd/pwl-cache/tmpfs/5-cache-mode/rwl.yaml
new file mode 100644
index 000000000..5aeab26b3
--- /dev/null
+++ b/qa/suites/rbd/pwl-cache/tmpfs/5-cache-mode/rwl.yaml
@@ -0,0 +1,5 @@
+overrides:
+ ceph:
+ conf:
+ client:
+ rbd_persistent_cache_mode: rwl
diff --git a/qa/suites/rbd/pwl-cache/tmpfs/5-cache-mode/ssd.yaml b/qa/suites/rbd/pwl-cache/tmpfs/5-cache-mode/ssd.yaml
new file mode 100644
index 000000000..082149147
--- /dev/null
+++ b/qa/suites/rbd/pwl-cache/tmpfs/5-cache-mode/ssd.yaml
@@ -0,0 +1,5 @@
+overrides:
+ ceph:
+ conf:
+ client:
+ rbd_persistent_cache_mode: ssd
diff --git a/qa/suites/rbd/pwl-cache/tmpfs/6-cache-size/.qa b/qa/suites/rbd/pwl-cache/tmpfs/6-cache-size/.qa
new file mode 120000
index 000000000..a602a0353
--- /dev/null
+++ b/qa/suites/rbd/pwl-cache/tmpfs/6-cache-size/.qa
@@ -0,0 +1 @@
+../.qa/ \ No newline at end of file
diff --git a/qa/suites/rbd/pwl-cache/tmpfs/6-cache-size/1G.yaml b/qa/suites/rbd/pwl-cache/tmpfs/6-cache-size/1G.yaml
new file mode 100644
index 000000000..53fcddcdf
--- /dev/null
+++ b/qa/suites/rbd/pwl-cache/tmpfs/6-cache-size/1G.yaml
@@ -0,0 +1,5 @@
+overrides:
+ ceph:
+ conf:
+ client:
+ rbd_persistent_cache_size: 1073741824
diff --git a/qa/suites/rbd/pwl-cache/tmpfs/6-cache-size/5G.yaml b/qa/suites/rbd/pwl-cache/tmpfs/6-cache-size/5G.yaml
new file mode 100644
index 000000000..1c43b5de8
--- /dev/null
+++ b/qa/suites/rbd/pwl-cache/tmpfs/6-cache-size/5G.yaml
@@ -0,0 +1,5 @@
+overrides:
+ ceph:
+ conf:
+ client:
+ rbd_persistent_cache_size: 5368709120
diff --git a/qa/suites/rbd/pwl-cache/tmpfs/7-workloads/.qa b/qa/suites/rbd/pwl-cache/tmpfs/7-workloads/.qa
new file mode 120000
index 000000000..a602a0353
--- /dev/null
+++ b/qa/suites/rbd/pwl-cache/tmpfs/7-workloads/.qa
@@ -0,0 +1 @@
+../.qa/ \ No newline at end of file
diff --git a/qa/suites/rbd/pwl-cache/tmpfs/7-workloads/qemu_xfstests.yaml b/qa/suites/rbd/pwl-cache/tmpfs/7-workloads/qemu_xfstests.yaml
new file mode 100644
index 000000000..255b9631e
--- /dev/null
+++ b/qa/suites/rbd/pwl-cache/tmpfs/7-workloads/qemu_xfstests.yaml
@@ -0,0 +1,8 @@
+tasks:
+- qemu:
+ client.0:
+ test: qa/run_xfstests_qemu.sh
+ type: block
+ cpus: 4
+ memory: 4096
+ disks: 3
diff --git a/qa/suites/rbd/pwl-cache/tmpfs/conf b/qa/suites/rbd/pwl-cache/tmpfs/conf
new file mode 120000
index 000000000..4bc0fe86c
--- /dev/null
+++ b/qa/suites/rbd/pwl-cache/tmpfs/conf
@@ -0,0 +1 @@
+.qa/rbd/conf \ No newline at end of file
diff --git a/qa/suites/rbd/qemu/% b/qa/suites/rbd/qemu/%
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/qa/suites/rbd/qemu/%
diff --git a/qa/suites/rbd/qemu/.qa b/qa/suites/rbd/qemu/.qa
new file mode 120000
index 000000000..a602a0353
--- /dev/null
+++ b/qa/suites/rbd/qemu/.qa
@@ -0,0 +1 @@
+../.qa/ \ No newline at end of file
diff --git a/qa/suites/rbd/qemu/cache/.qa b/qa/suites/rbd/qemu/cache/.qa
new file mode 120000
index 000000000..a602a0353
--- /dev/null
+++ b/qa/suites/rbd/qemu/cache/.qa
@@ -0,0 +1 @@
+../.qa/ \ No newline at end of file
diff --git a/qa/suites/rbd/qemu/cache/none.yaml b/qa/suites/rbd/qemu/cache/none.yaml
new file mode 100644
index 000000000..42fd9c955
--- /dev/null
+++ b/qa/suites/rbd/qemu/cache/none.yaml
@@ -0,0 +1,6 @@
+tasks:
+- install:
+- ceph:
+ conf:
+ client:
+ rbd cache: false
diff --git a/qa/suites/rbd/qemu/cache/writearound.yaml b/qa/suites/rbd/qemu/cache/writearound.yaml
new file mode 100644
index 000000000..b6f8e319b
--- /dev/null
+++ b/qa/suites/rbd/qemu/cache/writearound.yaml
@@ -0,0 +1,7 @@
+tasks:
+- install:
+- ceph:
+ conf:
+ client:
+ rbd cache: true
+ rbd cache policy: writearound
diff --git a/qa/suites/rbd/qemu/cache/writeback.yaml b/qa/suites/rbd/qemu/cache/writeback.yaml
new file mode 100644
index 000000000..a55ec1df0
--- /dev/null
+++ b/qa/suites/rbd/qemu/cache/writeback.yaml
@@ -0,0 +1,7 @@
+tasks:
+- install:
+- ceph:
+ conf:
+ client:
+ rbd cache: true
+ rbd cache policy: writeback
diff --git a/qa/suites/rbd/qemu/cache/writethrough.yaml b/qa/suites/rbd/qemu/cache/writethrough.yaml
new file mode 100644
index 000000000..6dc29e16c
--- /dev/null
+++ b/qa/suites/rbd/qemu/cache/writethrough.yaml
@@ -0,0 +1,7 @@
+tasks:
+- install:
+- ceph:
+ conf:
+ client:
+ rbd cache: true
+ rbd cache max dirty: 0
diff --git a/qa/suites/rbd/qemu/clusters/+ b/qa/suites/rbd/qemu/clusters/+
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/qa/suites/rbd/qemu/clusters/+
diff --git a/qa/suites/rbd/qemu/clusters/.qa b/qa/suites/rbd/qemu/clusters/.qa
new file mode 120000
index 000000000..a602a0353
--- /dev/null
+++ b/qa/suites/rbd/qemu/clusters/.qa
@@ -0,0 +1 @@
+../.qa/ \ No newline at end of file
diff --git a/qa/suites/rbd/qemu/clusters/fixed-3.yaml b/qa/suites/rbd/qemu/clusters/fixed-3.yaml
new file mode 120000
index 000000000..f75a848b8
--- /dev/null
+++ b/qa/suites/rbd/qemu/clusters/fixed-3.yaml
@@ -0,0 +1 @@
+.qa/clusters/fixed-3.yaml \ No newline at end of file
diff --git a/qa/suites/rbd/qemu/clusters/openstack.yaml b/qa/suites/rbd/qemu/clusters/openstack.yaml
new file mode 100644
index 000000000..9c39c7e5f
--- /dev/null
+++ b/qa/suites/rbd/qemu/clusters/openstack.yaml
@@ -0,0 +1,8 @@
+openstack:
+ - machine:
+ disk: 40 # GB
+ ram: 30000 # MB
+ cpus: 1
+ volumes: # attached to each instance
+ count: 4
+ size: 30 # GB
diff --git a/qa/suites/rbd/qemu/conf b/qa/suites/rbd/qemu/conf
new file mode 120000
index 000000000..4bc0fe86c
--- /dev/null
+++ b/qa/suites/rbd/qemu/conf
@@ -0,0 +1 @@
+.qa/rbd/conf \ No newline at end of file
diff --git a/qa/suites/rbd/qemu/data-pool b/qa/suites/rbd/qemu/data-pool
new file mode 120000
index 000000000..3df827572
--- /dev/null
+++ b/qa/suites/rbd/qemu/data-pool
@@ -0,0 +1 @@
+.qa/rbd/data-pool/ \ No newline at end of file
diff --git a/qa/suites/rbd/qemu/features/.qa b/qa/suites/rbd/qemu/features/.qa
new file mode 120000
index 000000000..a602a0353
--- /dev/null
+++ b/qa/suites/rbd/qemu/features/.qa
@@ -0,0 +1 @@
+../.qa/ \ No newline at end of file
diff --git a/qa/suites/rbd/qemu/features/defaults.yaml b/qa/suites/rbd/qemu/features/defaults.yaml
new file mode 100644
index 000000000..75afd68dd
--- /dev/null
+++ b/qa/suites/rbd/qemu/features/defaults.yaml
@@ -0,0 +1,5 @@
+overrides:
+ ceph:
+ conf:
+ client:
+ rbd default features: 61
diff --git a/qa/suites/rbd/qemu/features/journaling.yaml b/qa/suites/rbd/qemu/features/journaling.yaml
new file mode 100644
index 000000000..6cea62a88
--- /dev/null
+++ b/qa/suites/rbd/qemu/features/journaling.yaml
@@ -0,0 +1,5 @@
+overrides:
+ ceph:
+ conf:
+ client:
+ rbd default features: 125
diff --git a/qa/suites/rbd/qemu/features/readbalance.yaml b/qa/suites/rbd/qemu/features/readbalance.yaml
new file mode 100644
index 000000000..e3812f4c7
--- /dev/null
+++ b/qa/suites/rbd/qemu/features/readbalance.yaml
@@ -0,0 +1,10 @@
+overrides:
+ ceph:
+ conf:
+ client:
+ rbd read from replica policy: balance
+
+tasks:
+- exec:
+ osd.0:
+ - ceph osd set-require-min-compat-client octopus
diff --git a/qa/suites/rbd/qemu/msgr-failures/.qa b/qa/suites/rbd/qemu/msgr-failures/.qa
new file mode 120000
index 000000000..a602a0353
--- /dev/null
+++ b/qa/suites/rbd/qemu/msgr-failures/.qa
@@ -0,0 +1 @@
+../.qa/ \ No newline at end of file
diff --git a/qa/suites/rbd/qemu/msgr-failures/few.yaml b/qa/suites/rbd/qemu/msgr-failures/few.yaml
new file mode 100644
index 000000000..ca8e09853
--- /dev/null
+++ b/qa/suites/rbd/qemu/msgr-failures/few.yaml
@@ -0,0 +1,9 @@
+overrides:
+ ceph:
+ conf:
+ global:
+ ms inject socket failures: 5000
+ mon client directed command retry: 5
+ log-ignorelist:
+ - but it is still running
+ - \(OSD_SLOW_PING_TIME
diff --git a/qa/suites/rbd/qemu/objectstore b/qa/suites/rbd/qemu/objectstore
new file mode 120000
index 000000000..c40bd3261
--- /dev/null
+++ b/qa/suites/rbd/qemu/objectstore
@@ -0,0 +1 @@
+.qa/objectstore \ No newline at end of file
diff --git a/qa/suites/rbd/qemu/supported-random-distro$ b/qa/suites/rbd/qemu/supported-random-distro$
new file mode 120000
index 000000000..0862b4457
--- /dev/null
+++ b/qa/suites/rbd/qemu/supported-random-distro$
@@ -0,0 +1 @@
+.qa/distros/supported-random-distro$ \ No newline at end of file
diff --git a/qa/suites/rbd/qemu/workloads/.qa b/qa/suites/rbd/qemu/workloads/.qa
new file mode 120000
index 000000000..a602a0353
--- /dev/null
+++ b/qa/suites/rbd/qemu/workloads/.qa
@@ -0,0 +1 @@
+../.qa/ \ No newline at end of file
diff --git a/qa/suites/rbd/qemu/workloads/qemu_bonnie.yaml b/qa/suites/rbd/qemu/workloads/qemu_bonnie.yaml
new file mode 100644
index 000000000..0ef9ebb65
--- /dev/null
+++ b/qa/suites/rbd/qemu/workloads/qemu_bonnie.yaml
@@ -0,0 +1,6 @@
+tasks:
+- qemu:
+ all:
+ clone: true
+ test: qa/workunits/suites/bonnie.sh
+exclude_arch: armv7l
diff --git a/qa/suites/rbd/qemu/workloads/qemu_fsstress.yaml b/qa/suites/rbd/qemu/workloads/qemu_fsstress.yaml
new file mode 100644
index 000000000..95f514805
--- /dev/null
+++ b/qa/suites/rbd/qemu/workloads/qemu_fsstress.yaml
@@ -0,0 +1,6 @@
+tasks:
+- qemu:
+ all:
+ clone: true
+ test: qa/workunits/suites/fsstress.sh
+exclude_arch: armv7l
diff --git a/qa/suites/rbd/qemu/workloads/qemu_iozone.yaml.disabled b/qa/suites/rbd/qemu/workloads/qemu_iozone.yaml.disabled
new file mode 100644
index 000000000..e159e208e
--- /dev/null
+++ b/qa/suites/rbd/qemu/workloads/qemu_iozone.yaml.disabled
@@ -0,0 +1,6 @@
+tasks:
+- qemu:
+ all:
+ test: qa/workunits/suites/iozone.sh
+ image_size: 20480
+exclude_arch: armv7l
diff --git a/qa/suites/rbd/qemu/workloads/qemu_xfstests.yaml b/qa/suites/rbd/qemu/workloads/qemu_xfstests.yaml
new file mode 100644
index 000000000..198f798d4
--- /dev/null
+++ b/qa/suites/rbd/qemu/workloads/qemu_xfstests.yaml
@@ -0,0 +1,8 @@
+tasks:
+- qemu:
+ all:
+ clone: true
+ type: block
+ disks: 3
+ test: qa/run_xfstests_qemu.sh
+exclude_arch: armv7l
diff --git a/qa/suites/rbd/singleton-bluestore/% b/qa/suites/rbd/singleton-bluestore/%
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/qa/suites/rbd/singleton-bluestore/%
diff --git a/qa/suites/rbd/singleton-bluestore/.qa b/qa/suites/rbd/singleton-bluestore/.qa
new file mode 120000
index 000000000..a602a0353
--- /dev/null
+++ b/qa/suites/rbd/singleton-bluestore/.qa
@@ -0,0 +1 @@
+../.qa/ \ No newline at end of file
diff --git a/qa/suites/rbd/singleton-bluestore/all/.qa b/qa/suites/rbd/singleton-bluestore/all/.qa
new file mode 120000
index 000000000..a602a0353
--- /dev/null
+++ b/qa/suites/rbd/singleton-bluestore/all/.qa
@@ -0,0 +1 @@
+../.qa/ \ No newline at end of file
diff --git a/qa/suites/rbd/singleton-bluestore/all/issue-20295.yaml b/qa/suites/rbd/singleton-bluestore/all/issue-20295.yaml
new file mode 100644
index 000000000..48156c7a0
--- /dev/null
+++ b/qa/suites/rbd/singleton-bluestore/all/issue-20295.yaml
@@ -0,0 +1,12 @@
+roles:
+- [mon.a, mgr.x, osd.0, osd.1, osd.2, client.0]
+- [mon.b, mgr.y, osd.3, osd.4, osd.5]
+- [mon.c, mgr.z, osd.6, osd.7, osd.8]
+- [osd.9, osd.10, osd.11]
+tasks:
+- install:
+- ceph:
+- workunit:
+ timeout: 30m
+ clients:
+ all: [rbd/issue-20295.sh]
diff --git a/qa/suites/rbd/singleton-bluestore/conf b/qa/suites/rbd/singleton-bluestore/conf
new file mode 120000
index 000000000..4bc0fe86c
--- /dev/null
+++ b/qa/suites/rbd/singleton-bluestore/conf
@@ -0,0 +1 @@
+.qa/rbd/conf \ No newline at end of file
diff --git a/qa/suites/rbd/singleton-bluestore/objectstore/.qa b/qa/suites/rbd/singleton-bluestore/objectstore/.qa
new file mode 120000
index 000000000..a602a0353
--- /dev/null
+++ b/qa/suites/rbd/singleton-bluestore/objectstore/.qa
@@ -0,0 +1 @@
+../.qa/ \ No newline at end of file
diff --git a/qa/suites/rbd/singleton-bluestore/objectstore/bluestore-bitmap.yaml b/qa/suites/rbd/singleton-bluestore/objectstore/bluestore-bitmap.yaml
new file mode 120000
index 000000000..a59cf5175
--- /dev/null
+++ b/qa/suites/rbd/singleton-bluestore/objectstore/bluestore-bitmap.yaml
@@ -0,0 +1 @@
+.qa/objectstore/bluestore-bitmap.yaml \ No newline at end of file
diff --git a/qa/suites/rbd/singleton-bluestore/objectstore/bluestore-comp-snappy.yaml b/qa/suites/rbd/singleton-bluestore/objectstore/bluestore-comp-snappy.yaml
new file mode 120000
index 000000000..888caf55f
--- /dev/null
+++ b/qa/suites/rbd/singleton-bluestore/objectstore/bluestore-comp-snappy.yaml
@@ -0,0 +1 @@
+.qa/objectstore/bluestore-comp-snappy.yaml \ No newline at end of file
diff --git a/qa/suites/rbd/singleton-bluestore/openstack.yaml b/qa/suites/rbd/singleton-bluestore/openstack.yaml
new file mode 100644
index 000000000..f4d1349b4
--- /dev/null
+++ b/qa/suites/rbd/singleton-bluestore/openstack.yaml
@@ -0,0 +1,4 @@
+openstack:
+ - volumes: # attached to each instance
+ count: 3
+ size: 30 # GB
diff --git a/qa/suites/rbd/singleton-bluestore/supported-random-distro$ b/qa/suites/rbd/singleton-bluestore/supported-random-distro$
new file mode 120000
index 000000000..0862b4457
--- /dev/null
+++ b/qa/suites/rbd/singleton-bluestore/supported-random-distro$
@@ -0,0 +1 @@
+.qa/distros/supported-random-distro$ \ No newline at end of file
diff --git a/qa/suites/rbd/singleton/% b/qa/suites/rbd/singleton/%
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/qa/suites/rbd/singleton/%
diff --git a/qa/suites/rbd/singleton/.qa b/qa/suites/rbd/singleton/.qa
new file mode 120000
index 000000000..a602a0353
--- /dev/null
+++ b/qa/suites/rbd/singleton/.qa
@@ -0,0 +1 @@
+../.qa/ \ No newline at end of file
diff --git a/qa/suites/rbd/singleton/all/.qa b/qa/suites/rbd/singleton/all/.qa
new file mode 120000
index 000000000..a602a0353
--- /dev/null
+++ b/qa/suites/rbd/singleton/all/.qa
@@ -0,0 +1 @@
+../.qa/ \ No newline at end of file
diff --git a/qa/suites/rbd/singleton/all/admin_socket.yaml b/qa/suites/rbd/singleton/all/admin_socket.yaml
new file mode 100644
index 000000000..22dbd8c03
--- /dev/null
+++ b/qa/suites/rbd/singleton/all/admin_socket.yaml
@@ -0,0 +1,9 @@
+roles:
+- [mon.a, mgr.x, osd.0, osd.1, client.0]
+tasks:
+- install:
+- ceph:
+ fs: xfs
+- workunit:
+ clients:
+ all: [rbd/test_admin_socket.sh]
diff --git a/qa/suites/rbd/singleton/all/formatted-output.yaml b/qa/suites/rbd/singleton/all/formatted-output.yaml
new file mode 100644
index 000000000..7be94ef23
--- /dev/null
+++ b/qa/suites/rbd/singleton/all/formatted-output.yaml
@@ -0,0 +1,10 @@
+roles:
+- [mon.a, mgr.x, osd.0, osd.1, client.0]
+tasks:
+- install:
+- ceph:
+ fs: xfs
+- cram:
+ clients:
+ client.0:
+ - src/test/cli-integration/rbd/formatted-output.t
diff --git a/qa/suites/rbd/singleton/all/merge_diff.yaml b/qa/suites/rbd/singleton/all/merge_diff.yaml
new file mode 100644
index 000000000..31b269d63
--- /dev/null
+++ b/qa/suites/rbd/singleton/all/merge_diff.yaml
@@ -0,0 +1,9 @@
+roles:
+- [mon.a, mgr.x, osd.0, osd.1, client.0]
+tasks:
+- install:
+- ceph:
+ fs: xfs
+- workunit:
+ clients:
+ all: [rbd/merge_diff.sh]
diff --git a/qa/suites/rbd/singleton/all/mon-command-help.yaml b/qa/suites/rbd/singleton/all/mon-command-help.yaml
new file mode 100644
index 000000000..a7290aadb
--- /dev/null
+++ b/qa/suites/rbd/singleton/all/mon-command-help.yaml
@@ -0,0 +1,10 @@
+roles:
+- [mon.a, mgr.x, osd.0, osd.1, client.0]
+tasks:
+- install:
+- ceph:
+ fs: xfs
+- cram:
+ clients:
+ client.0:
+ - src/test/cli-integration/rbd/mon-command-help.t
diff --git a/qa/suites/rbd/singleton/all/permissions.yaml b/qa/suites/rbd/singleton/all/permissions.yaml
new file mode 100644
index 000000000..c00a5c9b8
--- /dev/null
+++ b/qa/suites/rbd/singleton/all/permissions.yaml
@@ -0,0 +1,9 @@
+roles:
+- [mon.a, mgr.x, osd.0, osd.1, client.0]
+tasks:
+- install:
+- ceph:
+ fs: xfs
+- workunit:
+ clients:
+ all: [rbd/permissions.sh]
diff --git a/qa/suites/rbd/singleton/all/qemu-iotests-no-cache.yaml b/qa/suites/rbd/singleton/all/qemu-iotests-no-cache.yaml
new file mode 100644
index 000000000..364dd8810
--- /dev/null
+++ b/qa/suites/rbd/singleton/all/qemu-iotests-no-cache.yaml
@@ -0,0 +1,19 @@
+exclude_arch: armv7l
+roles:
+- [mon.a, mgr.x, osd.0, osd.1, client.0]
+tasks:
+- install:
+ extra_system_packages:
+ rpm:
+ - qemu-kvm-block-rbd
+ deb:
+ - qemu-block-extra
+ - qemu-utils
+- ceph:
+ fs: xfs
+ conf:
+ client:
+ rbd cache: false
+- workunit:
+ clients:
+ all: [rbd/qemu-iotests.sh]
diff --git a/qa/suites/rbd/singleton/all/qemu-iotests-writearound.yaml b/qa/suites/rbd/singleton/all/qemu-iotests-writearound.yaml
new file mode 100644
index 000000000..975708385
--- /dev/null
+++ b/qa/suites/rbd/singleton/all/qemu-iotests-writearound.yaml
@@ -0,0 +1,20 @@
+exclude_arch: armv7l
+roles:
+- [mon.a, mgr.x, osd.0, osd.1, client.0]
+tasks:
+- install:
+ extra_system_packages:
+ rpm:
+ - qemu-kvm-block-rbd
+ deb:
+ - qemu-block-extra
+ - qemu-utils
+- ceph:
+ fs: xfs
+ conf:
+ client:
+ rbd cache: true
+ rbd cache policy: writearound
+- workunit:
+ clients:
+ all: [rbd/qemu-iotests.sh]
diff --git a/qa/suites/rbd/singleton/all/qemu-iotests-writeback.yaml b/qa/suites/rbd/singleton/all/qemu-iotests-writeback.yaml
new file mode 100644
index 000000000..9d078c33d
--- /dev/null
+++ b/qa/suites/rbd/singleton/all/qemu-iotests-writeback.yaml
@@ -0,0 +1,20 @@
+exclude_arch: armv7l
+roles:
+- [mon.a, mgr.x, osd.0, osd.1, client.0]
+tasks:
+- install:
+ extra_system_packages:
+ rpm:
+ - qemu-kvm-block-rbd
+ deb:
+ - qemu-block-extra
+ - qemu-utils
+- ceph:
+ fs: xfs
+ conf:
+ client:
+ rbd cache: true
+ rbd cache policy: writeback
+- workunit:
+ clients:
+ all: [rbd/qemu-iotests.sh]
diff --git a/qa/suites/rbd/singleton/all/qemu-iotests-writethrough.yaml b/qa/suites/rbd/singleton/all/qemu-iotests-writethrough.yaml
new file mode 100644
index 000000000..c5250bb90
--- /dev/null
+++ b/qa/suites/rbd/singleton/all/qemu-iotests-writethrough.yaml
@@ -0,0 +1,20 @@
+exclude_arch: armv7l
+roles:
+- [mon.a, mgr.x, osd.0, osd.1, client.0]
+tasks:
+- install:
+ extra_system_packages:
+ rpm:
+ - qemu-kvm-block-rbd
+ deb:
+ - qemu-block-extra
+ - qemu-utils
+- ceph:
+ fs: xfs
+ conf:
+ client:
+ rbd cache: true
+ rbd cache max dirty: 0
+- workunit:
+ clients:
+ all: [rbd/qemu-iotests.sh]
diff --git a/qa/suites/rbd/singleton/all/qos.yaml b/qa/suites/rbd/singleton/all/qos.yaml
new file mode 100644
index 000000000..66b90520b
--- /dev/null
+++ b/qa/suites/rbd/singleton/all/qos.yaml
@@ -0,0 +1,9 @@
+roles:
+- [mon.a, mgr.x, osd.0, osd.1, client.0]
+tasks:
+- install:
+- ceph:
+ fs: xfs
+- workunit:
+ clients:
+ all: [rbd/qos.sh]
diff --git a/qa/suites/rbd/singleton/all/rbd-vs-unmanaged-snaps.yaml b/qa/suites/rbd/singleton/all/rbd-vs-unmanaged-snaps.yaml
new file mode 100644
index 000000000..f14bd7431
--- /dev/null
+++ b/qa/suites/rbd/singleton/all/rbd-vs-unmanaged-snaps.yaml
@@ -0,0 +1,14 @@
+roles:
+- [mon.a, mgr.x, osd.0, osd.1, client.0]
+tasks:
+- install:
+- ceph:
+ fs: xfs
+ conf:
+ client:
+ rbd validate pool: false
+- workunit:
+ clients:
+ all:
+ - mon/rbd_snaps_ops.sh
+
diff --git a/qa/suites/rbd/singleton/all/rbd_mirror.yaml b/qa/suites/rbd/singleton/all/rbd_mirror.yaml
new file mode 100644
index 000000000..4120d21c9
--- /dev/null
+++ b/qa/suites/rbd/singleton/all/rbd_mirror.yaml
@@ -0,0 +1,12 @@
+roles:
+- [mon.a, mgr.x, osd.0, osd.1, client.0]
+tasks:
+- install:
+- ceph:
+ fs: xfs
+ log-ignorelist:
+ - overall HEALTH_
+ - \(CACHE_POOL_NO_HIT_SET\)
+- workunit:
+ clients:
+ all: [rbd/test_rbd_mirror.sh]
diff --git a/qa/suites/rbd/singleton/all/rbd_tasks.yaml b/qa/suites/rbd/singleton/all/rbd_tasks.yaml
new file mode 100644
index 000000000..782b02141
--- /dev/null
+++ b/qa/suites/rbd/singleton/all/rbd_tasks.yaml
@@ -0,0 +1,9 @@
+roles:
+- [mon.a, mgr.x, osd.0, osd.1, client.0]
+tasks:
+- install:
+- ceph:
+ fs: xfs
+- workunit:
+ clients:
+ all: [rbd/test_rbd_tasks.sh]
diff --git a/qa/suites/rbd/singleton/all/rbdmap_RBDMAPFILE.yaml b/qa/suites/rbd/singleton/all/rbdmap_RBDMAPFILE.yaml
new file mode 100644
index 000000000..0053e66ba
--- /dev/null
+++ b/qa/suites/rbd/singleton/all/rbdmap_RBDMAPFILE.yaml
@@ -0,0 +1,7 @@
+roles:
+- [client.0]
+tasks:
+- install:
+- workunit:
+ clients:
+ all: [rbd/test_rbdmap_RBDMAPFILE.sh]
diff --git a/qa/suites/rbd/singleton/all/read-flags-no-cache.yaml b/qa/suites/rbd/singleton/all/read-flags-no-cache.yaml
new file mode 100644
index 000000000..cf602cbb1
--- /dev/null
+++ b/qa/suites/rbd/singleton/all/read-flags-no-cache.yaml
@@ -0,0 +1,12 @@
+roles:
+- [mon.a, mgr.x, osd.0, osd.1, client.0]
+tasks:
+- install:
+- ceph:
+ fs: xfs
+ conf:
+ client:
+ rbd cache: false
+- workunit:
+ clients:
+ all: [rbd/read-flags.sh]
diff --git a/qa/suites/rbd/singleton/all/read-flags-writeback.yaml b/qa/suites/rbd/singleton/all/read-flags-writeback.yaml
new file mode 100644
index 000000000..ba90c1d1e
--- /dev/null
+++ b/qa/suites/rbd/singleton/all/read-flags-writeback.yaml
@@ -0,0 +1,13 @@
+roles:
+- [mon.a, mgr.x, osd.0, osd.1, client.0]
+tasks:
+- install:
+- ceph:
+ fs: xfs
+ conf:
+ client:
+ rbd cache: true
+ rbd cache policy: writeback
+- workunit:
+ clients:
+ all: [rbd/read-flags.sh]
diff --git a/qa/suites/rbd/singleton/all/read-flags-writethrough.yaml b/qa/suites/rbd/singleton/all/read-flags-writethrough.yaml
new file mode 100644
index 000000000..fc499d495
--- /dev/null
+++ b/qa/suites/rbd/singleton/all/read-flags-writethrough.yaml
@@ -0,0 +1,13 @@
+roles:
+- [mon.a, mgr.x, osd.0, osd.1, client.0]
+tasks:
+- install:
+- ceph:
+ fs: xfs
+ conf:
+ client:
+ rbd cache: true
+ rbd cache max dirty: 0
+- workunit:
+ clients:
+ all: [rbd/read-flags.sh]
diff --git a/qa/suites/rbd/singleton/all/snap-diff.yaml b/qa/suites/rbd/singleton/all/snap-diff.yaml
new file mode 100644
index 000000000..be7e68589
--- /dev/null
+++ b/qa/suites/rbd/singleton/all/snap-diff.yaml
@@ -0,0 +1,10 @@
+roles:
+- [mon.a, mgr.x, osd.0, osd.1, client.0]
+tasks:
+- install:
+- ceph:
+ fs: xfs
+- cram:
+ clients:
+ client.0:
+ - src/test/cli-integration/rbd/snap-diff.t
diff --git a/qa/suites/rbd/singleton/all/verify_pool.yaml b/qa/suites/rbd/singleton/all/verify_pool.yaml
new file mode 100644
index 000000000..5ab06f749
--- /dev/null
+++ b/qa/suites/rbd/singleton/all/verify_pool.yaml
@@ -0,0 +1,9 @@
+roles:
+- [mon.a, mgr.x, osd.0, osd.1, client.0]
+tasks:
+- install:
+- ceph:
+ fs: xfs
+- workunit:
+ clients:
+ all: [rbd/verify_pool.sh]
diff --git a/qa/suites/rbd/singleton/conf b/qa/suites/rbd/singleton/conf
new file mode 120000
index 000000000..4bc0fe86c
--- /dev/null
+++ b/qa/suites/rbd/singleton/conf
@@ -0,0 +1 @@
+.qa/rbd/conf \ No newline at end of file
diff --git a/qa/suites/rbd/singleton/objectstore b/qa/suites/rbd/singleton/objectstore
new file mode 120000
index 000000000..c40bd3261
--- /dev/null
+++ b/qa/suites/rbd/singleton/objectstore
@@ -0,0 +1 @@
+.qa/objectstore \ No newline at end of file
diff --git a/qa/suites/rbd/singleton/openstack.yaml b/qa/suites/rbd/singleton/openstack.yaml
new file mode 100644
index 000000000..21eca2bbd
--- /dev/null
+++ b/qa/suites/rbd/singleton/openstack.yaml
@@ -0,0 +1,4 @@
+openstack:
+ - volumes: # attached to each instance
+ count: 2
+ size: 30 # GB
diff --git a/qa/suites/rbd/singleton/supported-random-distro$ b/qa/suites/rbd/singleton/supported-random-distro$
new file mode 120000
index 000000000..0862b4457
--- /dev/null
+++ b/qa/suites/rbd/singleton/supported-random-distro$
@@ -0,0 +1 @@
+.qa/distros/supported-random-distro$ \ No newline at end of file
diff --git a/qa/suites/rbd/thrash/% b/qa/suites/rbd/thrash/%
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/qa/suites/rbd/thrash/%
diff --git a/qa/suites/rbd/thrash/.qa b/qa/suites/rbd/thrash/.qa
new file mode 120000
index 000000000..a602a0353
--- /dev/null
+++ b/qa/suites/rbd/thrash/.qa
@@ -0,0 +1 @@
+../.qa/ \ No newline at end of file
diff --git a/qa/suites/rbd/thrash/base/.qa b/qa/suites/rbd/thrash/base/.qa
new file mode 120000
index 000000000..a602a0353
--- /dev/null
+++ b/qa/suites/rbd/thrash/base/.qa
@@ -0,0 +1 @@
+../.qa/ \ No newline at end of file
diff --git a/qa/suites/rbd/thrash/base/install.yaml b/qa/suites/rbd/thrash/base/install.yaml
new file mode 100644
index 000000000..2030acb90
--- /dev/null
+++ b/qa/suites/rbd/thrash/base/install.yaml
@@ -0,0 +1,3 @@
+tasks:
+- install:
+- ceph:
diff --git a/qa/suites/rbd/thrash/clusters/+ b/qa/suites/rbd/thrash/clusters/+
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/qa/suites/rbd/thrash/clusters/+
diff --git a/qa/suites/rbd/thrash/clusters/.qa b/qa/suites/rbd/thrash/clusters/.qa
new file mode 120000
index 000000000..a602a0353
--- /dev/null
+++ b/qa/suites/rbd/thrash/clusters/.qa
@@ -0,0 +1 @@
+../.qa/ \ No newline at end of file
diff --git a/qa/suites/rbd/thrash/clusters/fixed-2.yaml b/qa/suites/rbd/thrash/clusters/fixed-2.yaml
new file mode 120000
index 000000000..230ff0fda
--- /dev/null
+++ b/qa/suites/rbd/thrash/clusters/fixed-2.yaml
@@ -0,0 +1 @@
+.qa/clusters/fixed-2.yaml \ No newline at end of file
diff --git a/qa/suites/rbd/thrash/clusters/openstack.yaml b/qa/suites/rbd/thrash/clusters/openstack.yaml
new file mode 100644
index 000000000..40fef4770
--- /dev/null
+++ b/qa/suites/rbd/thrash/clusters/openstack.yaml
@@ -0,0 +1,8 @@
+openstack:
+ - machine:
+ disk: 40 # GB
+ ram: 8000 # MB
+ cpus: 1
+ volumes: # attached to each instance
+ count: 4
+ size: 30 # GB
diff --git a/qa/suites/rbd/thrash/conf b/qa/suites/rbd/thrash/conf
new file mode 120000
index 000000000..4bc0fe86c
--- /dev/null
+++ b/qa/suites/rbd/thrash/conf
@@ -0,0 +1 @@
+.qa/rbd/conf \ No newline at end of file
diff --git a/qa/suites/rbd/thrash/msgr-failures/.qa b/qa/suites/rbd/thrash/msgr-failures/.qa
new file mode 120000
index 000000000..a602a0353
--- /dev/null
+++ b/qa/suites/rbd/thrash/msgr-failures/.qa
@@ -0,0 +1 @@
+../.qa/ \ No newline at end of file
diff --git a/qa/suites/rbd/thrash/msgr-failures/few.yaml b/qa/suites/rbd/thrash/msgr-failures/few.yaml
new file mode 100644
index 000000000..519288992
--- /dev/null
+++ b/qa/suites/rbd/thrash/msgr-failures/few.yaml
@@ -0,0 +1,8 @@
+overrides:
+ ceph:
+ conf:
+ global:
+ ms inject socket failures: 5000
+ mon client directed command retry: 5
+ log-ignorelist:
+ - \(OSD_SLOW_PING_TIME
diff --git a/qa/suites/rbd/thrash/objectstore b/qa/suites/rbd/thrash/objectstore
new file mode 120000
index 000000000..c40bd3261
--- /dev/null
+++ b/qa/suites/rbd/thrash/objectstore
@@ -0,0 +1 @@
+.qa/objectstore \ No newline at end of file
diff --git a/qa/suites/rbd/thrash/supported-random-distro$ b/qa/suites/rbd/thrash/supported-random-distro$
new file mode 120000
index 000000000..0862b4457
--- /dev/null
+++ b/qa/suites/rbd/thrash/supported-random-distro$
@@ -0,0 +1 @@
+.qa/distros/supported-random-distro$ \ No newline at end of file
diff --git a/qa/suites/rbd/thrash/thrashers/.qa b/qa/suites/rbd/thrash/thrashers/.qa
new file mode 120000
index 000000000..a602a0353
--- /dev/null
+++ b/qa/suites/rbd/thrash/thrashers/.qa
@@ -0,0 +1 @@
+../.qa/ \ No newline at end of file
diff --git a/qa/suites/rbd/thrash/thrashers/default.yaml b/qa/suites/rbd/thrash/thrashers/default.yaml
new file mode 100644
index 000000000..3e2bf7fe1
--- /dev/null
+++ b/qa/suites/rbd/thrash/thrashers/default.yaml
@@ -0,0 +1,8 @@
+overrides:
+ ceph:
+ log-ignorelist:
+ - but it is still running
+ - objects unfound and apparently lost
+tasks:
+- thrashosds:
+ timeout: 1200
diff --git a/qa/suites/rbd/thrash/thrashosds-health.yaml b/qa/suites/rbd/thrash/thrashosds-health.yaml
new file mode 120000
index 000000000..9124eb1aa
--- /dev/null
+++ b/qa/suites/rbd/thrash/thrashosds-health.yaml
@@ -0,0 +1 @@
+.qa/tasks/thrashosds-health.yaml \ No newline at end of file
diff --git a/qa/suites/rbd/thrash/workloads/.qa b/qa/suites/rbd/thrash/workloads/.qa
new file mode 120000
index 000000000..a602a0353
--- /dev/null
+++ b/qa/suites/rbd/thrash/workloads/.qa
@@ -0,0 +1 @@
+../.qa/ \ No newline at end of file
diff --git a/qa/suites/rbd/thrash/workloads/journal.yaml b/qa/suites/rbd/thrash/workloads/journal.yaml
new file mode 100644
index 000000000..4dae10633
--- /dev/null
+++ b/qa/suites/rbd/thrash/workloads/journal.yaml
@@ -0,0 +1,5 @@
+tasks:
+- workunit:
+ clients:
+ client.0:
+ - rbd/journal.sh
diff --git a/qa/suites/rbd/thrash/workloads/rbd_api_tests.yaml b/qa/suites/rbd/thrash/workloads/rbd_api_tests.yaml
new file mode 100644
index 000000000..ec4194598
--- /dev/null
+++ b/qa/suites/rbd/thrash/workloads/rbd_api_tests.yaml
@@ -0,0 +1,14 @@
+overrides:
+ ceph:
+ log-ignorelist:
+ - overall HEALTH_
+ - \(CACHE_POOL_NO_HIT_SET\)
+ - is full \(reached quota
+ - \(POOL_FULL\)
+tasks:
+- workunit:
+ clients:
+ client.0:
+ - rbd/test_librbd.sh
+ env:
+ RBD_FEATURES: "61"
diff --git a/qa/suites/rbd/thrash/workloads/rbd_api_tests_copy_on_read.yaml b/qa/suites/rbd/thrash/workloads/rbd_api_tests_copy_on_read.yaml
new file mode 100644
index 000000000..26e20522c
--- /dev/null
+++ b/qa/suites/rbd/thrash/workloads/rbd_api_tests_copy_on_read.yaml
@@ -0,0 +1,17 @@
+tasks:
+- workunit:
+ clients:
+ client.0:
+ - rbd/test_librbd.sh
+ env:
+ RBD_FEATURES: "61"
+overrides:
+ ceph:
+ log-ignorelist:
+ - overall HEALTH_
+ - \(CACHE_POOL_NO_HIT_SET\)
+ - is full \(reached quota
+ - \(POOL_FULL\)
+ conf:
+ client:
+ rbd clone copy on read: true
diff --git a/qa/suites/rbd/thrash/workloads/rbd_api_tests_journaling.yaml b/qa/suites/rbd/thrash/workloads/rbd_api_tests_journaling.yaml
new file mode 100644
index 000000000..6c3686806
--- /dev/null
+++ b/qa/suites/rbd/thrash/workloads/rbd_api_tests_journaling.yaml
@@ -0,0 +1,14 @@
+overrides:
+ ceph:
+ log-ignorelist:
+ - overall HEALTH_
+ - \(CACHE_POOL_NO_HIT_SET\)
+ - is full \(reached quota
+ - \(POOL_FULL\)
+tasks:
+- workunit:
+ clients:
+ client.0:
+ - rbd/test_librbd.sh
+ env:
+ RBD_FEATURES: "125"
diff --git a/qa/suites/rbd/thrash/workloads/rbd_api_tests_no_locking.yaml b/qa/suites/rbd/thrash/workloads/rbd_api_tests_no_locking.yaml
new file mode 100644
index 000000000..eb63fd771
--- /dev/null
+++ b/qa/suites/rbd/thrash/workloads/rbd_api_tests_no_locking.yaml
@@ -0,0 +1,14 @@
+overrides:
+ ceph:
+ log-ignorelist:
+ - overall HEALTH_
+ - \(CACHE_POOL_NO_HIT_SET\)
+ - is full \(reached quota
+ - \(POOL_FULL\)
+tasks:
+- workunit:
+ clients:
+ client.0:
+ - rbd/test_librbd.sh
+ env:
+ RBD_FEATURES: "1"
diff --git a/qa/suites/rbd/thrash/workloads/rbd_fsx_cache_writearound.yaml b/qa/suites/rbd/thrash/workloads/rbd_fsx_cache_writearound.yaml
new file mode 100644
index 000000000..e9ea1ebd1
--- /dev/null
+++ b/qa/suites/rbd/thrash/workloads/rbd_fsx_cache_writearound.yaml
@@ -0,0 +1,10 @@
+tasks:
+- rbd_fsx:
+ clients: [client.0]
+ ops: 6000
+overrides:
+ ceph:
+ conf:
+ client:
+ rbd cache: true
+ rbd cache policy: writearound
diff --git a/qa/suites/rbd/thrash/workloads/rbd_fsx_cache_writeback.yaml b/qa/suites/rbd/thrash/workloads/rbd_fsx_cache_writeback.yaml
new file mode 100644
index 000000000..41f7d84c9
--- /dev/null
+++ b/qa/suites/rbd/thrash/workloads/rbd_fsx_cache_writeback.yaml
@@ -0,0 +1,10 @@
+tasks:
+- rbd_fsx:
+ clients: [client.0]
+ ops: 6000
+overrides:
+ ceph:
+ conf:
+ client:
+ rbd cache: true
+ rbd cache policy: writeback
diff --git a/qa/suites/rbd/thrash/workloads/rbd_fsx_cache_writethrough.yaml b/qa/suites/rbd/thrash/workloads/rbd_fsx_cache_writethrough.yaml
new file mode 100644
index 000000000..463ba9965
--- /dev/null
+++ b/qa/suites/rbd/thrash/workloads/rbd_fsx_cache_writethrough.yaml
@@ -0,0 +1,10 @@
+tasks:
+- rbd_fsx:
+ clients: [client.0]
+ ops: 6000
+overrides:
+ ceph:
+ conf:
+ client:
+ rbd cache: true
+ rbd cache max dirty: 0
diff --git a/qa/suites/rbd/thrash/workloads/rbd_fsx_copy_on_read.yaml b/qa/suites/rbd/thrash/workloads/rbd_fsx_copy_on_read.yaml
new file mode 100644
index 000000000..0c284ca8f
--- /dev/null
+++ b/qa/suites/rbd/thrash/workloads/rbd_fsx_copy_on_read.yaml
@@ -0,0 +1,10 @@
+tasks:
+- rbd_fsx:
+ clients: [client.0]
+ ops: 6000
+overrides:
+ ceph:
+ conf:
+ client:
+ rbd cache: true
+ rbd clone copy on read: true
diff --git a/qa/suites/rbd/thrash/workloads/rbd_fsx_deep_copy.yaml b/qa/suites/rbd/thrash/workloads/rbd_fsx_deep_copy.yaml
new file mode 100644
index 000000000..797491499
--- /dev/null
+++ b/qa/suites/rbd/thrash/workloads/rbd_fsx_deep_copy.yaml
@@ -0,0 +1,5 @@
+tasks:
+- rbd_fsx:
+ clients: [client.0]
+ ops: 6000
+ deep_copy: True
diff --git a/qa/suites/rbd/thrash/workloads/rbd_fsx_journal.yaml b/qa/suites/rbd/thrash/workloads/rbd_fsx_journal.yaml
new file mode 100644
index 000000000..13e9a7830
--- /dev/null
+++ b/qa/suites/rbd/thrash/workloads/rbd_fsx_journal.yaml
@@ -0,0 +1,5 @@
+tasks:
+- rbd_fsx:
+ clients: [client.0]
+ ops: 6000
+ journal_replay: True
diff --git a/qa/suites/rbd/thrash/workloads/rbd_fsx_nocache.yaml b/qa/suites/rbd/thrash/workloads/rbd_fsx_nocache.yaml
new file mode 100644
index 000000000..968665e18
--- /dev/null
+++ b/qa/suites/rbd/thrash/workloads/rbd_fsx_nocache.yaml
@@ -0,0 +1,9 @@
+tasks:
+- rbd_fsx:
+ clients: [client.0]
+ ops: 6000
+overrides:
+ ceph:
+ conf:
+ client:
+ rbd cache: false
diff --git a/qa/suites/rbd/thrash/workloads/rbd_fsx_rate_limit.yaml b/qa/suites/rbd/thrash/workloads/rbd_fsx_rate_limit.yaml
new file mode 100644
index 000000000..611320bca
--- /dev/null
+++ b/qa/suites/rbd/thrash/workloads/rbd_fsx_rate_limit.yaml
@@ -0,0 +1,11 @@
+tasks:
+- rbd_fsx:
+ clients: [client.0]
+ ops: 6000
+overrides:
+ ceph:
+ conf:
+ client:
+ rbd qos iops limit: 50
+ rbd qos iops burst: 100
+ rbd qos schedule tick min: 100
diff --git a/qa/suites/rbd/valgrind/% b/qa/suites/rbd/valgrind/%
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/qa/suites/rbd/valgrind/%
diff --git a/qa/suites/rbd/valgrind/.qa b/qa/suites/rbd/valgrind/.qa
new file mode 120000
index 000000000..a602a0353
--- /dev/null
+++ b/qa/suites/rbd/valgrind/.qa
@@ -0,0 +1 @@
+../.qa/ \ No newline at end of file
diff --git a/qa/suites/rbd/valgrind/base/.qa b/qa/suites/rbd/valgrind/base/.qa
new file mode 120000
index 000000000..a602a0353
--- /dev/null
+++ b/qa/suites/rbd/valgrind/base/.qa
@@ -0,0 +1 @@
+../.qa/ \ No newline at end of file
diff --git a/qa/suites/rbd/valgrind/base/install.yaml b/qa/suites/rbd/valgrind/base/install.yaml
new file mode 100644
index 000000000..2030acb90
--- /dev/null
+++ b/qa/suites/rbd/valgrind/base/install.yaml
@@ -0,0 +1,3 @@
+tasks:
+- install:
+- ceph:
diff --git a/qa/suites/rbd/valgrind/centos_latest.yaml b/qa/suites/rbd/valgrind/centos_latest.yaml
new file mode 120000
index 000000000..bd9854e70
--- /dev/null
+++ b/qa/suites/rbd/valgrind/centos_latest.yaml
@@ -0,0 +1 @@
+.qa/distros/supported/centos_latest.yaml \ No newline at end of file
diff --git a/qa/suites/rbd/valgrind/clusters b/qa/suites/rbd/valgrind/clusters
new file mode 120000
index 000000000..ae92569e8
--- /dev/null
+++ b/qa/suites/rbd/valgrind/clusters
@@ -0,0 +1 @@
+../basic/clusters \ No newline at end of file
diff --git a/qa/suites/rbd/valgrind/conf b/qa/suites/rbd/valgrind/conf
new file mode 120000
index 000000000..4bc0fe86c
--- /dev/null
+++ b/qa/suites/rbd/valgrind/conf
@@ -0,0 +1 @@
+.qa/rbd/conf \ No newline at end of file
diff --git a/qa/suites/rbd/valgrind/objectstore b/qa/suites/rbd/valgrind/objectstore
new file mode 120000
index 000000000..c40bd3261
--- /dev/null
+++ b/qa/suites/rbd/valgrind/objectstore
@@ -0,0 +1 @@
+.qa/objectstore \ No newline at end of file
diff --git a/qa/suites/rbd/valgrind/validator/.qa b/qa/suites/rbd/valgrind/validator/.qa
new file mode 120000
index 000000000..a602a0353
--- /dev/null
+++ b/qa/suites/rbd/valgrind/validator/.qa
@@ -0,0 +1 @@
+../.qa/ \ No newline at end of file
diff --git a/qa/suites/rbd/valgrind/validator/memcheck.yaml b/qa/suites/rbd/valgrind/validator/memcheck.yaml
new file mode 100644
index 000000000..fcea1b88c
--- /dev/null
+++ b/qa/suites/rbd/valgrind/validator/memcheck.yaml
@@ -0,0 +1,12 @@
+# see http://tracker.ceph.com/issues/20360 and http://tracker.ceph.com/issues/18126
+os_type: centos
+
+overrides:
+ install:
+ ceph:
+ debuginfo: true
+ rbd_fsx:
+ valgrind: ["--tool=memcheck"]
+ workunit:
+ env:
+ VALGRIND: "--tool=memcheck --leak-check=full"
diff --git a/qa/suites/rbd/valgrind/workloads/.qa b/qa/suites/rbd/valgrind/workloads/.qa
new file mode 120000
index 000000000..a602a0353
--- /dev/null
+++ b/qa/suites/rbd/valgrind/workloads/.qa
@@ -0,0 +1 @@
+../.qa/ \ No newline at end of file
diff --git a/qa/suites/rbd/valgrind/workloads/c_api_tests.yaml b/qa/suites/rbd/valgrind/workloads/c_api_tests.yaml
new file mode 100644
index 000000000..eb63fd771
--- /dev/null
+++ b/qa/suites/rbd/valgrind/workloads/c_api_tests.yaml
@@ -0,0 +1,14 @@
+overrides:
+ ceph:
+ log-ignorelist:
+ - overall HEALTH_
+ - \(CACHE_POOL_NO_HIT_SET\)
+ - is full \(reached quota
+ - \(POOL_FULL\)
+tasks:
+- workunit:
+ clients:
+ client.0:
+ - rbd/test_librbd.sh
+ env:
+ RBD_FEATURES: "1"
diff --git a/qa/suites/rbd/valgrind/workloads/c_api_tests_with_defaults.yaml b/qa/suites/rbd/valgrind/workloads/c_api_tests_with_defaults.yaml
new file mode 100644
index 000000000..ec4194598
--- /dev/null
+++ b/qa/suites/rbd/valgrind/workloads/c_api_tests_with_defaults.yaml
@@ -0,0 +1,14 @@
+overrides:
+ ceph:
+ log-ignorelist:
+ - overall HEALTH_
+ - \(CACHE_POOL_NO_HIT_SET\)
+ - is full \(reached quota
+ - \(POOL_FULL\)
+tasks:
+- workunit:
+ clients:
+ client.0:
+ - rbd/test_librbd.sh
+ env:
+ RBD_FEATURES: "61"
diff --git a/qa/suites/rbd/valgrind/workloads/c_api_tests_with_journaling.yaml b/qa/suites/rbd/valgrind/workloads/c_api_tests_with_journaling.yaml
new file mode 100644
index 000000000..6c3686806
--- /dev/null
+++ b/qa/suites/rbd/valgrind/workloads/c_api_tests_with_journaling.yaml
@@ -0,0 +1,14 @@
+overrides:
+ ceph:
+ log-ignorelist:
+ - overall HEALTH_
+ - \(CACHE_POOL_NO_HIT_SET\)
+ - is full \(reached quota
+ - \(POOL_FULL\)
+tasks:
+- workunit:
+ clients:
+ client.0:
+ - rbd/test_librbd.sh
+ env:
+ RBD_FEATURES: "125"
diff --git a/qa/suites/rbd/valgrind/workloads/fsx.yaml b/qa/suites/rbd/valgrind/workloads/fsx.yaml
new file mode 100644
index 000000000..5c745a2c6
--- /dev/null
+++ b/qa/suites/rbd/valgrind/workloads/fsx.yaml
@@ -0,0 +1,4 @@
+tasks:
+- rbd_fsx:
+ clients: [client.0]
+ size: 134217728
diff --git a/qa/suites/rbd/valgrind/workloads/python_api_tests.yaml b/qa/suites/rbd/valgrind/workloads/python_api_tests.yaml
new file mode 100644
index 000000000..516c323df
--- /dev/null
+++ b/qa/suites/rbd/valgrind/workloads/python_api_tests.yaml
@@ -0,0 +1,12 @@
+overrides:
+ install:
+ ceph:
+ extra_system_packages:
+ - python3-pytest
+tasks:
+- workunit:
+ clients:
+ client.0:
+ - rbd/test_librbd_python.sh
+ env:
+ RBD_FEATURES: "1"
diff --git a/qa/suites/rbd/valgrind/workloads/python_api_tests_with_defaults.yaml b/qa/suites/rbd/valgrind/workloads/python_api_tests_with_defaults.yaml
new file mode 100644
index 000000000..831f3762b
--- /dev/null
+++ b/qa/suites/rbd/valgrind/workloads/python_api_tests_with_defaults.yaml
@@ -0,0 +1,12 @@
+overrides:
+ install:
+ ceph:
+ extra_system_packages:
+ - python3-pytest
+tasks:
+- workunit:
+ clients:
+ client.0:
+ - rbd/test_librbd_python.sh
+ env:
+ RBD_FEATURES: "61"
diff --git a/qa/suites/rbd/valgrind/workloads/python_api_tests_with_journaling.yaml b/qa/suites/rbd/valgrind/workloads/python_api_tests_with_journaling.yaml
new file mode 100644
index 000000000..8bd751146
--- /dev/null
+++ b/qa/suites/rbd/valgrind/workloads/python_api_tests_with_journaling.yaml
@@ -0,0 +1,12 @@
+overrides:
+ install:
+ ceph:
+ extra_system_packages:
+ - python3-pytest
+tasks:
+- workunit:
+ clients:
+ client.0:
+ - rbd/test_librbd_python.sh
+ env:
+ RBD_FEATURES: "125"
diff --git a/qa/suites/rbd/valgrind/workloads/rbd_mirror.yaml b/qa/suites/rbd/valgrind/workloads/rbd_mirror.yaml
new file mode 100644
index 000000000..ae5a83c30
--- /dev/null
+++ b/qa/suites/rbd/valgrind/workloads/rbd_mirror.yaml
@@ -0,0 +1,10 @@
+overrides:
+ ceph:
+ log-ignorelist:
+ - overall HEALTH_
+ - \(CACHE_POOL_NO_HIT_SET\)
+tasks:
+- workunit:
+ clients:
+ client.0:
+ - rbd/test_rbd_mirror.sh