summaryrefslogtreecommitdiffstats
path: root/qa/suites/fs
diff options
context:
space:
mode:
Diffstat (limited to 'qa/suites/fs')
l---------qa/suites/fs/.qa1
-rw-r--r--qa/suites/fs/32bits/%0
l---------qa/suites/fs/32bits/.qa1
l---------qa/suites/fs/32bits/begin1
l---------qa/suites/fs/32bits/clusters/.qa1
l---------qa/suites/fs/32bits/clusters/fixed-2-ucephfs.yaml1
l---------qa/suites/fs/32bits/conf1
l---------qa/suites/fs/32bits/distro1
l---------qa/suites/fs/32bits/mount/.qa1
l---------qa/suites/fs/32bits/mount/fuse.yaml1
l---------qa/suites/fs/32bits/objectstore-ec1
-rw-r--r--qa/suites/fs/32bits/overrides/+0
l---------qa/suites/fs/32bits/overrides/.qa1
-rw-r--r--qa/suites/fs/32bits/overrides/faked-ino.yaml5
l---------qa/suites/fs/32bits/overrides/ignorelist_health.yaml1
l---------qa/suites/fs/32bits/overrides/ignorelist_wrongly_marked_down.yaml1
l---------qa/suites/fs/32bits/tasks/.qa1
l---------qa/suites/fs/32bits/tasks/cfuse_workunit_suites_fsstress.yaml1
-rw-r--r--qa/suites/fs/32bits/tasks/cfuse_workunit_suites_pjd.yaml11
l---------qa/suites/fs/bugs/.qa1
-rw-r--r--qa/suites/fs/bugs/client_trim_caps/%0
l---------qa/suites/fs/bugs/client_trim_caps/.qa1
l---------qa/suites/fs/bugs/client_trim_caps/begin1
l---------qa/suites/fs/bugs/client_trim_caps/centos_latest.yaml1
l---------qa/suites/fs/bugs/client_trim_caps/clusters/.qa1
-rw-r--r--qa/suites/fs/bugs/client_trim_caps/clusters/small-cluster.yaml11
l---------qa/suites/fs/bugs/client_trim_caps/conf1
l---------qa/suites/fs/bugs/client_trim_caps/objectstore/.qa1
l---------qa/suites/fs/bugs/client_trim_caps/objectstore/bluestore-bitmap.yaml1
-rw-r--r--qa/suites/fs/bugs/client_trim_caps/overrides/+0
l---------qa/suites/fs/bugs/client_trim_caps/overrides/.qa1
l---------qa/suites/fs/bugs/client_trim_caps/overrides/ignorelist_health.yaml1
l---------qa/suites/fs/bugs/client_trim_caps/overrides/ignorelist_wrongly_marked_down.yaml1
l---------qa/suites/fs/bugs/client_trim_caps/overrides/no_client_pidfile.yaml1
l---------qa/suites/fs/bugs/client_trim_caps/tasks/.qa1
-rw-r--r--qa/suites/fs/bugs/client_trim_caps/tasks/trim-i24137.yaml14
l---------qa/suites/fs/cephadm/.qa1
-rw-r--r--qa/suites/fs/cephadm/multivolume/%0
l---------qa/suites/fs/cephadm/multivolume/.qa1
-rw-r--r--qa/suites/fs/cephadm/multivolume/0-start.yaml39
-rw-r--r--qa/suites/fs/cephadm/multivolume/1-mount.yaml7
l---------qa/suites/fs/cephadm/multivolume/2-workload/.qa1
l---------qa/suites/fs/cephadm/multivolume/2-workload/dbench.yaml1
l---------qa/suites/fs/cephadm/multivolume/distro/.qa1
l---------qa/suites/fs/cephadm/multivolume/distro/single-container-host.yaml1
-rw-r--r--qa/suites/fs/cephadm/renamevolume/%0
l---------qa/suites/fs/cephadm/renamevolume/.qa1
-rw-r--r--qa/suites/fs/cephadm/renamevolume/0-start.yaml38
-rw-r--r--qa/suites/fs/cephadm/renamevolume/1-rename.yaml11
l---------qa/suites/fs/cephadm/renamevolume/distro/.qa1
l---------qa/suites/fs/cephadm/renamevolume/distro/single-container-host.yaml1
l---------qa/suites/fs/cephadm/renamevolume/overrides/.qa1
l---------qa/suites/fs/cephadm/renamevolume/overrides/ignorelist_health.yaml1
-rw-r--r--qa/suites/fs/fscrypt/%0
l---------qa/suites/fs/fscrypt/.qa1
l---------qa/suites/fs/fscrypt/begin1
l---------qa/suites/fs/fscrypt/bluestore-bitmap.yaml1
l---------qa/suites/fs/fscrypt/clusters/.qa1
l---------qa/suites/fs/fscrypt/clusters/1-mds-1-client.yaml1
l---------qa/suites/fs/fscrypt/conf1
-rw-r--r--qa/suites/fs/fscrypt/distro/$0
l---------qa/suites/fs/fscrypt/distro/.qa1
l---------qa/suites/fs/fscrypt/distro/centos_latest.yaml1
l---------qa/suites/fs/fscrypt/distro/ubuntu_latest.yaml1
l---------qa/suites/fs/fscrypt/mount/.qa1
-rw-r--r--qa/suites/fs/fscrypt/mount/kclient/%0
l---------qa/suites/fs/fscrypt/mount/kclient/.qa1
l---------qa/suites/fs/fscrypt/mount/kclient/mount-syntax/.qa1
l---------qa/suites/fs/fscrypt/mount/kclient/mount-syntax/v1.yaml1
l---------qa/suites/fs/fscrypt/mount/kclient/mount.yaml1
-rw-r--r--qa/suites/fs/fscrypt/mount/kclient/overrides/%0
l---------qa/suites/fs/fscrypt/mount/kclient/overrides/.qa1
l---------qa/suites/fs/fscrypt/mount/kclient/overrides/distro/.qa1
l---------qa/suites/fs/fscrypt/mount/kclient/overrides/distro/testing/.qa1
l---------qa/suites/fs/fscrypt/mount/kclient/overrides/distro/testing/k-testing.yaml1
-rw-r--r--qa/suites/fs/fscrypt/overrides/+0
l---------qa/suites/fs/fscrypt/overrides/.qa1
l---------qa/suites/fs/fscrypt/overrides/ignorelist_health.yaml1
-rw-r--r--qa/suites/fs/fscrypt/overrides/ignorelist_health_more.yaml5
l---------qa/suites/fs/fscrypt/overrides/ignorelist_wrongly_marked_down.yaml1
-rw-r--r--qa/suites/fs/fscrypt/overrides/pg-warn.yaml5
l---------qa/suites/fs/fscrypt/tasks/.qa1
-rw-r--r--qa/suites/fs/fscrypt/tasks/fscrypt-common.yaml5
-rw-r--r--qa/suites/fs/fscrypt/tasks/fscrypt-dbench.yaml7
-rw-r--r--qa/suites/fs/fscrypt/tasks/fscrypt-ffsb.yaml7
-rw-r--r--qa/suites/fs/fscrypt/tasks/fscrypt-iozone.yaml7
-rw-r--r--qa/suites/fs/fscrypt/tasks/fscrypt-pjd.yaml7
-rw-r--r--qa/suites/fs/full/%0
l---------qa/suites/fs/full/.qa1
l---------qa/suites/fs/full/begin1
l---------qa/suites/fs/full/clusters/.qa1
l---------qa/suites/fs/full/clusters/1-node-1-mds-1-osd.yaml1
l---------qa/suites/fs/full/conf1
l---------qa/suites/fs/full/distro1
l---------qa/suites/fs/full/mount/.qa1
-rw-r--r--qa/suites/fs/full/mount/fuse.yaml2
l---------qa/suites/fs/full/objectstore/.qa1
l---------qa/suites/fs/full/objectstore/bluestore-bitmap.yaml1
-rw-r--r--qa/suites/fs/full/overrides.yaml19
-rw-r--r--qa/suites/fs/full/overrides/+0
l---------qa/suites/fs/full/overrides/.qa1
l---------qa/suites/fs/full/overrides/ignorelist_health.yaml1
l---------qa/suites/fs/full/overrides/ignorelist_wrongly_marked_down.yaml1
l---------qa/suites/fs/full/overrides/no_client_pidfile.yaml1
l---------qa/suites/fs/full/tasks/.qa1
-rw-r--r--qa/suites/fs/full/tasks/mgr-osd-full.yaml31
-rw-r--r--qa/suites/fs/functional/%0
l---------qa/suites/fs/functional/.qa1
l---------qa/suites/fs/functional/begin1
l---------qa/suites/fs/functional/clusters/.qa1
l---------qa/suites/fs/functional/clusters/1a3s-mds-4c-client.yaml1
l---------qa/suites/fs/functional/conf1
l---------qa/suites/fs/functional/distro1
l---------qa/suites/fs/functional/mount1
l---------qa/suites/fs/functional/objectstore/.qa1
l---------qa/suites/fs/functional/objectstore/bluestore-bitmap.yaml1
l---------qa/suites/fs/functional/objectstore/bluestore-ec-root.yaml1
-rw-r--r--qa/suites/fs/functional/overrides/+0
l---------qa/suites/fs/functional/overrides/.qa1
l---------qa/suites/fs/functional/overrides/ignorelist_health.yaml1
l---------qa/suites/fs/functional/overrides/ignorelist_wrongly_marked_down.yaml1
l---------qa/suites/fs/functional/overrides/no_client_pidfile.yaml1
l---------qa/suites/fs/functional/tasks/.qa1
-rw-r--r--qa/suites/fs/functional/tasks/acls.yaml10
-rw-r--r--qa/suites/fs/functional/tasks/admin.yaml12
-rw-r--r--qa/suites/fs/functional/tasks/alternate-pool.yaml19
-rw-r--r--qa/suites/fs/functional/tasks/asok_dump_tree.yaml4
-rw-r--r--qa/suites/fs/functional/tasks/auto-repair.yaml11
-rw-r--r--qa/suites/fs/functional/tasks/backtrace.yaml4
-rw-r--r--qa/suites/fs/functional/tasks/cap-flush.yaml8
-rw-r--r--qa/suites/fs/functional/tasks/client-limits.yaml18
-rw-r--r--qa/suites/fs/functional/tasks/client-readahead.yaml5
-rw-r--r--qa/suites/fs/functional/tasks/client-recovery.yaml16
-rw-r--r--qa/suites/fs/functional/tasks/damage.yaml27
-rw-r--r--qa/suites/fs/functional/tasks/data-scan.yaml18
-rw-r--r--qa/suites/fs/functional/tasks/exports.yaml9
-rw-r--r--qa/suites/fs/functional/tasks/forward-scrub.yaml13
-rw-r--r--qa/suites/fs/functional/tasks/fragment.yaml5
-rw-r--r--qa/suites/fs/functional/tasks/journal-repair.yaml13
-rw-r--r--qa/suites/fs/functional/tasks/mds-flush.yaml4
-rw-r--r--qa/suites/fs/functional/tasks/mds-full.yaml38
-rw-r--r--qa/suites/fs/functional/tasks/mds_creation_retry.yaml6
-rw-r--r--qa/suites/fs/functional/tasks/metrics.yaml5
-rw-r--r--qa/suites/fs/functional/tasks/multimds_misc.yaml9
-rw-r--r--qa/suites/fs/functional/tasks/openfiletable.yaml4
-rw-r--r--qa/suites/fs/functional/tasks/pool-perm.yaml4
-rw-r--r--qa/suites/fs/functional/tasks/quota.yaml4
-rw-r--r--qa/suites/fs/functional/tasks/recovery-fs.yaml4
-rw-r--r--qa/suites/fs/functional/tasks/scrub.yaml19
-rw-r--r--qa/suites/fs/functional/tasks/sessionmap.yaml9
-rw-r--r--qa/suites/fs/functional/tasks/snap-schedule.yaml22
-rw-r--r--qa/suites/fs/functional/tasks/snap_schedule_snapdir.yaml30
-rw-r--r--qa/suites/fs/functional/tasks/snapshots.yaml16
-rw-r--r--qa/suites/fs/functional/tasks/strays.yaml4
-rw-r--r--qa/suites/fs/functional/tasks/test_journal_migration.yaml4
-rw-r--r--qa/suites/fs/functional/tasks/truncate_delay.yaml14
l---------qa/suites/fs/functional/tasks/workunit/.qa1
-rw-r--r--qa/suites/fs/functional/tasks/workunit/dir-max-entries.yaml5
-rw-r--r--qa/suites/fs/functional/tasks/workunit/quota.yaml5
-rw-r--r--qa/suites/fs/libcephfs/%0
l---------qa/suites/fs/libcephfs/.qa1
l---------qa/suites/fs/libcephfs/begin1
l---------qa/suites/fs/libcephfs/clusters/.qa1
l---------qa/suites/fs/libcephfs/clusters/1-mds-1-client-coloc.yaml1
l---------qa/suites/fs/libcephfs/conf1
l---------qa/suites/fs/libcephfs/distro1
l---------qa/suites/fs/libcephfs/objectstore/.qa1
l---------qa/suites/fs/libcephfs/objectstore/bluestore-bitmap.yaml1
-rw-r--r--qa/suites/fs/libcephfs/overrides/+0
l---------qa/suites/fs/libcephfs/overrides/.qa1
l---------qa/suites/fs/libcephfs/overrides/ignorelist_health.yaml1
l---------qa/suites/fs/libcephfs/overrides/ignorelist_wrongly_marked_down.yaml1
l---------qa/suites/fs/libcephfs/overrides/no_client_pidfile.yaml1
l---------qa/suites/fs/libcephfs/tasks/.qa1
-rw-r--r--qa/suites/fs/libcephfs/tasks/client.yaml14
-rw-r--r--qa/suites/fs/libcephfs/tasks/ino_release_cb.yaml19
-rw-r--r--qa/suites/fs/libcephfs/tasks/libcephfs/+0
l---------qa/suites/fs/libcephfs/tasks/libcephfs/.qa1
l---------qa/suites/fs/libcephfs/tasks/libcephfs/frag.yaml1
-rw-r--r--qa/suites/fs/libcephfs/tasks/libcephfs/test.yaml18
-rw-r--r--qa/suites/fs/libcephfs/tasks/libcephfs_python.yaml17
-rw-r--r--qa/suites/fs/mirror-ha/%0
l---------qa/suites/fs/mirror-ha/.qa1
l---------qa/suites/fs/mirror-ha/begin1
-rw-r--r--qa/suites/fs/mirror-ha/cephfs-mirror/+0
l---------qa/suites/fs/mirror-ha/cephfs-mirror/.qa1
-rw-r--r--qa/suites/fs/mirror-ha/cephfs-mirror/1-volume-create-rm.yaml14
-rw-r--r--qa/suites/fs/mirror-ha/cephfs-mirror/2-three-per-cluster.yaml12
-rw-r--r--qa/suites/fs/mirror-ha/clients/+0
l---------qa/suites/fs/mirror-ha/clients/.qa1
-rw-r--r--qa/suites/fs/mirror-ha/clients/mirror.yaml32
-rw-r--r--qa/suites/fs/mirror-ha/cluster/+0
l---------qa/suites/fs/mirror-ha/cluster/.qa1
-rw-r--r--qa/suites/fs/mirror-ha/cluster/1-node.yaml20
l---------qa/suites/fs/mirror-ha/objectstore/.qa1
l---------qa/suites/fs/mirror-ha/objectstore/bluestore-bitmap.yaml1
-rw-r--r--qa/suites/fs/mirror-ha/overrides/+0
l---------qa/suites/fs/mirror-ha/overrides/.qa1
-rw-r--r--qa/suites/fs/mirror-ha/overrides/whitelist_health.yaml14
l---------qa/suites/fs/mirror-ha/supported-random-distro$1
l---------qa/suites/fs/mirror-ha/workloads/.qa1
-rw-r--r--qa/suites/fs/mirror-ha/workloads/cephfs-mirror-ha-workunit.yaml33
-rw-r--r--qa/suites/fs/mirror/%0
l---------qa/suites/fs/mirror/.qa1
l---------qa/suites/fs/mirror/begin1
l---------qa/suites/fs/mirror/cephfs-mirror/.qa1
-rw-r--r--qa/suites/fs/mirror/cephfs-mirror/one-per-cluster.yaml5
-rw-r--r--qa/suites/fs/mirror/clients/+0
l---------qa/suites/fs/mirror/clients/.qa1
-rw-r--r--qa/suites/fs/mirror/clients/mirror.yaml18
-rw-r--r--qa/suites/fs/mirror/cluster/+0
l---------qa/suites/fs/mirror/cluster/.qa1
-rw-r--r--qa/suites/fs/mirror/cluster/1-node.yaml17
l---------qa/suites/fs/mirror/mount/.qa1
-rw-r--r--qa/suites/fs/mirror/mount/fuse.yaml2
l---------qa/suites/fs/mirror/objectstore/.qa1
l---------qa/suites/fs/mirror/objectstore/bluestore-bitmap.yaml1
-rw-r--r--qa/suites/fs/mirror/overrides/+0
l---------qa/suites/fs/mirror/overrides/.qa1
-rw-r--r--qa/suites/fs/mirror/overrides/whitelist_health.yaml14
l---------qa/suites/fs/mirror/supported-random-distros$1
l---------qa/suites/fs/mirror/tasks/.qa1
-rw-r--r--qa/suites/fs/mirror/tasks/mirror.yaml10
-rw-r--r--qa/suites/fs/mixed-clients/%0
l---------qa/suites/fs/mixed-clients/.qa1
l---------qa/suites/fs/mixed-clients/begin1
l---------qa/suites/fs/mixed-clients/clusters/.qa1
l---------qa/suites/fs/mixed-clients/clusters/1a3s-mds-2c-client.yaml1
l---------qa/suites/fs/mixed-clients/conf1
-rw-r--r--qa/suites/fs/mixed-clients/distro/$0
l---------qa/suites/fs/mixed-clients/distro/.qa1
l---------qa/suites/fs/mixed-clients/distro/centos_8.yaml1
l---------qa/suites/fs/mixed-clients/distro/rhel_8.yaml1
-rw-r--r--qa/suites/fs/mixed-clients/distro/ubuntu/+0
l---------qa/suites/fs/mixed-clients/distro/ubuntu/.qa1
l---------qa/suites/fs/mixed-clients/distro/ubuntu/latest.yaml1
-rw-r--r--qa/suites/fs/mixed-clients/distro/ubuntu/overrides.yaml4
l---------qa/suites/fs/mixed-clients/kclient-overrides1
l---------qa/suites/fs/mixed-clients/objectstore-ec1
-rw-r--r--qa/suites/fs/mixed-clients/overrides/+0
l---------qa/suites/fs/mixed-clients/overrides/.qa1
l---------qa/suites/fs/mixed-clients/overrides/ignorelist_health.yaml1
l---------qa/suites/fs/mixed-clients/overrides/ignorelist_wrongly_marked_down.yaml1
l---------qa/suites/fs/mixed-clients/overrides/osd-asserts.yaml1
l---------qa/suites/fs/mixed-clients/tasks/.qa1
-rw-r--r--qa/suites/fs/mixed-clients/tasks/kernel_cfuse_workunits_dbench_iozone.yaml18
-rw-r--r--qa/suites/fs/mixed-clients/tasks/kernel_cfuse_workunits_untarbuild_blogbench.yaml18
-rw-r--r--qa/suites/fs/multiclient/%0
l---------qa/suites/fs/multiclient/.qa1
l---------qa/suites/fs/multiclient/begin1
l---------qa/suites/fs/multiclient/clusters/.qa1
l---------qa/suites/fs/multiclient/clusters/1-mds-2-client.yaml1
l---------qa/suites/fs/multiclient/clusters/1-mds-3-client.yaml1
l---------qa/suites/fs/multiclient/conf1
l---------qa/suites/fs/multiclient/distros/.qa1
l---------qa/suites/fs/multiclient/distros/ubuntu_latest.yaml1
l---------qa/suites/fs/multiclient/mount/.qa1
l---------qa/suites/fs/multiclient/mount/fuse.yaml1
-rw-r--r--qa/suites/fs/multiclient/mount/kclient.yaml.disabled7
l---------qa/suites/fs/multiclient/objectstore-ec1
-rw-r--r--qa/suites/fs/multiclient/overrides/+0
l---------qa/suites/fs/multiclient/overrides/.qa1
l---------qa/suites/fs/multiclient/overrides/ignorelist_health.yaml1
l---------qa/suites/fs/multiclient/overrides/ignorelist_wrongly_marked_down.yaml1
l---------qa/suites/fs/multiclient/tasks/.qa1
-rw-r--r--qa/suites/fs/multiclient/tasks/cephfs_misc_tests.yaml14
-rw-r--r--qa/suites/fs/multiclient/tasks/fsx-mpi.yaml.disabled17
-rw-r--r--qa/suites/fs/multiclient/tasks/ior-shared-file.yaml31
-rw-r--r--qa/suites/fs/multiclient/tasks/mdtest.yaml34
-rw-r--r--qa/suites/fs/multifs/%0
l---------qa/suites/fs/multifs/.qa1
l---------qa/suites/fs/multifs/begin1
l---------qa/suites/fs/multifs/clusters/.qa1
l---------qa/suites/fs/multifs/clusters/1a3s-mds-2c-client.yaml1
l---------qa/suites/fs/multifs/conf1
l---------qa/suites/fs/multifs/distro1
l---------qa/suites/fs/multifs/mount1
l---------qa/suites/fs/multifs/objectstore-ec1
-rw-r--r--qa/suites/fs/multifs/overrides/+0
l---------qa/suites/fs/multifs/overrides/.qa1
l---------qa/suites/fs/multifs/overrides/ignorelist_health.yaml1
l---------qa/suites/fs/multifs/overrides/ignorelist_wrongly_marked_down.yaml1
-rw-r--r--qa/suites/fs/multifs/overrides/mon-debug.yaml5
l---------qa/suites/fs/multifs/tasks/.qa1
-rw-r--r--qa/suites/fs/multifs/tasks/failover.yaml20
-rw-r--r--qa/suites/fs/multifs/tasks/multifs-auth.yaml5
-rw-r--r--qa/suites/fs/nfs/%0
l---------qa/suites/fs/nfs/.qa1
-rw-r--r--qa/suites/fs/nfs/cluster/+0
l---------qa/suites/fs/nfs/cluster/.qa1
-rw-r--r--qa/suites/fs/nfs/cluster/1-node.yaml16
l---------qa/suites/fs/nfs/overrides/.qa1
-rw-r--r--qa/suites/fs/nfs/overrides/ignorelist_health.yaml13
l---------qa/suites/fs/nfs/supported-random-distros$1
l---------qa/suites/fs/nfs/tasks/.qa1
-rw-r--r--qa/suites/fs/nfs/tasks/nfs.yaml4
-rw-r--r--qa/suites/fs/permission/%0
l---------qa/suites/fs/permission/.qa1
l---------qa/suites/fs/permission/begin1
l---------qa/suites/fs/permission/clusters/.qa1
l---------qa/suites/fs/permission/clusters/fixed-2-ucephfs.yaml1
l---------qa/suites/fs/permission/conf1
l---------qa/suites/fs/permission/distro1
l---------qa/suites/fs/permission/mount/.qa1
l---------qa/suites/fs/permission/mount/fuse.yaml1
l---------qa/suites/fs/permission/objectstore-ec1
-rw-r--r--qa/suites/fs/permission/overrides/+0
l---------qa/suites/fs/permission/overrides/.qa1
l---------qa/suites/fs/permission/overrides/ignorelist_health.yaml1
l---------qa/suites/fs/permission/overrides/ignorelist_wrongly_marked_down.yaml1
l---------qa/suites/fs/permission/tasks/.qa1
-rw-r--r--qa/suites/fs/permission/tasks/cfuse_workunit_misc.yaml12
-rw-r--r--qa/suites/fs/permission/tasks/cfuse_workunit_suites_pjd.yaml12
-rw-r--r--qa/suites/fs/shell/%0
l---------qa/suites/fs/shell/.qa1
l---------qa/suites/fs/shell/begin1
l---------qa/suites/fs/shell/clusters/.qa1
l---------qa/suites/fs/shell/clusters/1-mds-1-client-coloc.yaml1
l---------qa/suites/fs/shell/conf1
l---------qa/suites/fs/shell/distro1
l---------qa/suites/fs/shell/mount/.qa1
l---------qa/suites/fs/shell/mount/fuse.yaml1
l---------qa/suites/fs/shell/objectstore/.qa1
l---------qa/suites/fs/shell/objectstore/bluestore-bitmap.yaml1
-rw-r--r--qa/suites/fs/shell/overrides/+0
l---------qa/suites/fs/shell/overrides/.qa1
l---------qa/suites/fs/shell/overrides/ignorelist_health.yaml1
l---------qa/suites/fs/shell/overrides/ignorelist_wrongly_marked_down.yaml1
l---------qa/suites/fs/shell/overrides/no_client_pidfile.yaml1
l---------qa/suites/fs/shell/tasks/.qa1
-rw-r--r--qa/suites/fs/shell/tasks/cephfs-shell.yaml8
-rw-r--r--qa/suites/fs/snaps/%0
l---------qa/suites/fs/snaps/.qa1
l---------qa/suites/fs/snaps/begin1
l---------qa/suites/fs/snaps/clusters/.qa1
l---------qa/suites/fs/snaps/clusters/1a3s-mds-1c-client.yaml1
l---------qa/suites/fs/snaps/conf1
l---------qa/suites/fs/snaps/distro1
l---------qa/suites/fs/snaps/mount1
l---------qa/suites/fs/snaps/objectstore-ec1
-rw-r--r--qa/suites/fs/snaps/overrides/+0
l---------qa/suites/fs/snaps/overrides/.qa1
l---------qa/suites/fs/snaps/overrides/ignorelist_health.yaml1
l---------qa/suites/fs/snaps/overrides/ignorelist_wrongly_marked_down.yaml1
l---------qa/suites/fs/snaps/tasks/.qa1
l---------qa/suites/fs/snaps/tasks/workunit/.qa1
-rw-r--r--qa/suites/fs/snaps/tasks/workunit/snaps.yaml6
l---------qa/suites/fs/thrash/.qa1
-rw-r--r--qa/suites/fs/thrash/multifs/%0
l---------qa/suites/fs/thrash/multifs/.qa1
l---------qa/suites/fs/thrash/multifs/begin1
l---------qa/suites/fs/thrash/multifs/clusters/.qa1
l---------qa/suites/fs/thrash/multifs/clusters/1a3s-mds-2c-client.yaml1
l---------qa/suites/fs/thrash/multifs/conf1
l---------qa/suites/fs/thrash/multifs/distro1
l---------qa/suites/fs/thrash/multifs/mount1
l---------qa/suites/fs/thrash/multifs/msgr-failures/.qa1
-rw-r--r--qa/suites/fs/thrash/multifs/msgr-failures/none.yaml0
-rw-r--r--qa/suites/fs/thrash/multifs/msgr-failures/osd-mds-delay.yaml17
l---------qa/suites/fs/thrash/multifs/objectstore/.qa1
l---------qa/suites/fs/thrash/multifs/objectstore/bluestore-bitmap.yaml1
-rw-r--r--qa/suites/fs/thrash/multifs/overrides/+0
l---------qa/suites/fs/thrash/multifs/overrides/.qa1
-rw-r--r--qa/suites/fs/thrash/multifs/overrides/client-shutdown.yaml6
l---------qa/suites/fs/thrash/multifs/overrides/frag.yaml1
l---------qa/suites/fs/thrash/multifs/overrides/ignorelist_health.yaml1
l---------qa/suites/fs/thrash/multifs/overrides/ignorelist_wrongly_marked_down.yaml1
-rw-r--r--qa/suites/fs/thrash/multifs/overrides/multifs.yaml16
l---------qa/suites/fs/thrash/multifs/overrides/session_timeout.yaml1
l---------qa/suites/fs/thrash/multifs/overrides/thrashosds-health.yaml1
-rw-r--r--qa/suites/fs/thrash/multifs/tasks/%0
l---------qa/suites/fs/thrash/multifs/tasks/.qa1
l---------qa/suites/fs/thrash/multifs/tasks/1-thrash/.qa1
-rw-r--r--qa/suites/fs/thrash/multifs/tasks/1-thrash/mds.yaml7
-rw-r--r--qa/suites/fs/thrash/multifs/tasks/1-thrash/mon.yaml10
l---------qa/suites/fs/thrash/multifs/tasks/2-workunit/.qa1
-rw-r--r--qa/suites/fs/thrash/multifs/tasks/2-workunit/cfuse_workunit_snaptests.yaml6
l---------qa/suites/fs/thrash/multifs/tasks/2-workunit/cfuse_workunit_suites_fsstress.yaml1
-rw-r--r--qa/suites/fs/thrash/multifs/tasks/2-workunit/cfuse_workunit_suites_pjd.yaml11
l---------qa/suites/fs/thrash/multifs/tasks/2-workunit/cfuse_workunit_trivial_sync.yaml1
-rw-r--r--qa/suites/fs/thrash/multifs/tasks/2-workunit/ffsb.yaml13
-rw-r--r--qa/suites/fs/thrash/multifs/tasks/2-workunit/iozone.yaml5
-rw-r--r--qa/suites/fs/thrash/workloads/%0
l---------qa/suites/fs/thrash/workloads/.qa1
l---------qa/suites/fs/thrash/workloads/begin1
l---------qa/suites/fs/thrash/workloads/clusters/.qa1
l---------qa/suites/fs/thrash/workloads/clusters/1a5s-mds-1c-client.yaml1
l---------qa/suites/fs/thrash/workloads/conf1
l---------qa/suites/fs/thrash/workloads/distro1
l---------qa/suites/fs/thrash/workloads/mount1
l---------qa/suites/fs/thrash/workloads/msgr-failures/.qa1
-rw-r--r--qa/suites/fs/thrash/workloads/msgr-failures/none.yaml0
-rw-r--r--qa/suites/fs/thrash/workloads/msgr-failures/osd-mds-delay.yaml17
l---------qa/suites/fs/thrash/workloads/objectstore-ec1
-rw-r--r--qa/suites/fs/thrash/workloads/overrides/%0
l---------qa/suites/fs/thrash/workloads/overrides/.qa1
-rw-r--r--qa/suites/fs/thrash/workloads/overrides/client-shutdown.yaml6
l---------qa/suites/fs/thrash/workloads/overrides/frag.yaml1
l---------qa/suites/fs/thrash/workloads/overrides/ignorelist_health.yaml1
l---------qa/suites/fs/thrash/workloads/overrides/ignorelist_wrongly_marked_down.yaml1
l---------qa/suites/fs/thrash/workloads/overrides/prefetch_dirfrags/.qa1
-rw-r--r--qa/suites/fs/thrash/workloads/overrides/prefetch_dirfrags/no.yaml5
-rw-r--r--qa/suites/fs/thrash/workloads/overrides/prefetch_dirfrags/yes.yaml5
l---------qa/suites/fs/thrash/workloads/overrides/prefetch_entire_dirfrags1
-rw-r--r--qa/suites/fs/thrash/workloads/overrides/races.yaml5
l---------qa/suites/fs/thrash/workloads/overrides/session_timeout.yaml1
l---------qa/suites/fs/thrash/workloads/overrides/thrashosds-health.yaml1
l---------qa/suites/fs/thrash/workloads/ranks/.qa1
-rw-r--r--qa/suites/fs/thrash/workloads/ranks/1.yaml0
-rw-r--r--qa/suites/fs/thrash/workloads/ranks/3.yaml9
-rw-r--r--qa/suites/fs/thrash/workloads/ranks/5.yaml9
-rw-r--r--qa/suites/fs/thrash/workloads/tasks/%0
l---------qa/suites/fs/thrash/workloads/tasks/.qa1
l---------qa/suites/fs/thrash/workloads/tasks/1-thrash/.qa1
-rw-r--r--qa/suites/fs/thrash/workloads/tasks/1-thrash/mds.yaml7
-rw-r--r--qa/suites/fs/thrash/workloads/tasks/1-thrash/mon.yaml10
-rw-r--r--qa/suites/fs/thrash/workloads/tasks/1-thrash/osd.yaml9
l---------qa/suites/fs/thrash/workloads/tasks/2-workunit/.qa1
l---------qa/suites/fs/thrash/workloads/tasks/2-workunit/fs/.qa1
-rw-r--r--qa/suites/fs/thrash/workloads/tasks/2-workunit/fs/snaps.yaml6
l---------qa/suites/fs/thrash/workloads/tasks/2-workunit/fs/trivial_sync.yaml1
l---------qa/suites/fs/thrash/workloads/tasks/2-workunit/suites/.qa1
-rw-r--r--qa/suites/fs/thrash/workloads/tasks/2-workunit/suites/ffsb.yaml13
-rw-r--r--qa/suites/fs/thrash/workloads/tasks/2-workunit/suites/fsstress.yaml6
-rw-r--r--qa/suites/fs/thrash/workloads/tasks/2-workunit/suites/iozone.yaml5
-rw-r--r--qa/suites/fs/thrash/workloads/tasks/2-workunit/suites/pjd.yaml11
-rw-r--r--qa/suites/fs/top/%0
l---------qa/suites/fs/top/.qa1
l---------qa/suites/fs/top/begin1
-rw-r--r--qa/suites/fs/top/cluster/+0
l---------qa/suites/fs/top/cluster/.qa1
-rw-r--r--qa/suites/fs/top/cluster/1-node.yaml12
l---------qa/suites/fs/top/mount/.qa1
l---------qa/suites/fs/top/mount/fuse.yaml1
l---------qa/suites/fs/top/objectstore/.qa1
l---------qa/suites/fs/top/objectstore/bluestore-bitmap.yaml1
l---------qa/suites/fs/top/overrides/.qa1
l---------qa/suites/fs/top/overrides/ignorelist_health.yaml1
l---------qa/suites/fs/top/supported-random-distros$1
l---------qa/suites/fs/top/tasks/.qa1
-rw-r--r--qa/suites/fs/top/tasks/fstop.yaml4
-rw-r--r--qa/suites/fs/traceless/%0
l---------qa/suites/fs/traceless/.qa1
l---------qa/suites/fs/traceless/begin1
l---------qa/suites/fs/traceless/clusters/.qa1
l---------qa/suites/fs/traceless/clusters/fixed-2-ucephfs.yaml1
l---------qa/suites/fs/traceless/conf1
l---------qa/suites/fs/traceless/distro1
l---------qa/suites/fs/traceless/mount/.qa1
l---------qa/suites/fs/traceless/mount/fuse.yaml1
l---------qa/suites/fs/traceless/objectstore-ec1
-rw-r--r--qa/suites/fs/traceless/overrides/+0
l---------qa/suites/fs/traceless/overrides/.qa1
l---------qa/suites/fs/traceless/overrides/frag.yaml1
l---------qa/suites/fs/traceless/overrides/ignorelist_health.yaml1
l---------qa/suites/fs/traceless/overrides/ignorelist_wrongly_marked_down.yaml1
l---------qa/suites/fs/traceless/tasks/.qa1
l---------qa/suites/fs/traceless/tasks/cfuse_workunit_suites_blogbench.yaml1
l---------qa/suites/fs/traceless/tasks/cfuse_workunit_suites_dbench.yaml1
l---------qa/suites/fs/traceless/tasks/cfuse_workunit_suites_ffsb.yaml1
l---------qa/suites/fs/traceless/tasks/cfuse_workunit_suites_fsstress.yaml1
l---------qa/suites/fs/traceless/traceless/.qa1
-rw-r--r--qa/suites/fs/traceless/traceless/50pc.yaml5
l---------qa/suites/fs/upgrade/.qa1
l---------qa/suites/fs/upgrade/featureful_client/.qa1
-rw-r--r--qa/suites/fs/upgrade/featureful_client/old_client/%0
l---------qa/suites/fs/upgrade/featureful_client/old_client/.qa1
l---------qa/suites/fs/upgrade/featureful_client/old_client/bluestore-bitmap.yaml1
l---------qa/suites/fs/upgrade/featureful_client/old_client/centos_8.yaml1
l---------qa/suites/fs/upgrade/featureful_client/old_client/clusters/.qa1
l---------qa/suites/fs/upgrade/featureful_client/old_client/clusters/1-mds-2-client-micro.yaml1
l---------qa/suites/fs/upgrade/featureful_client/old_client/conf1
-rw-r--r--qa/suites/fs/upgrade/featureful_client/old_client/overrides/%0
l---------qa/suites/fs/upgrade/featureful_client/old_client/overrides/.qa1
l---------qa/suites/fs/upgrade/featureful_client/old_client/overrides/ignorelist_health.yaml1
l---------qa/suites/fs/upgrade/featureful_client/old_client/overrides/ignorelist_wrongly_marked_down.yaml1
l---------qa/suites/fs/upgrade/featureful_client/old_client/overrides/multimds/.qa1
-rw-r--r--qa/suites/fs/upgrade/featureful_client/old_client/overrides/multimds/no.yaml4
-rw-r--r--qa/suites/fs/upgrade/featureful_client/old_client/overrides/multimds/yes.yaml4
-rw-r--r--qa/suites/fs/upgrade/featureful_client/old_client/overrides/pg-warn.yaml5
-rw-r--r--qa/suites/fs/upgrade/featureful_client/old_client/tasks/%0
l---------qa/suites/fs/upgrade/featureful_client/old_client/tasks/.qa1
-rw-r--r--qa/suites/fs/upgrade/featureful_client/old_client/tasks/0-octopus.yaml39
-rw-r--r--qa/suites/fs/upgrade/featureful_client/old_client/tasks/1-client.yaml8
-rw-r--r--qa/suites/fs/upgrade/featureful_client/old_client/tasks/2-upgrade.yaml48
l---------qa/suites/fs/upgrade/featureful_client/old_client/tasks/3-compat_client/.qa1
-rw-r--r--qa/suites/fs/upgrade/featureful_client/old_client/tasks/3-compat_client/no.yaml6
-rw-r--r--qa/suites/fs/upgrade/featureful_client/old_client/tasks/3-compat_client/quincy.yaml12
-rw-r--r--qa/suites/fs/upgrade/featureful_client/upgraded_client/%0
l---------qa/suites/fs/upgrade/featureful_client/upgraded_client/.qa1
l---------qa/suites/fs/upgrade/featureful_client/upgraded_client/bluestore-bitmap.yaml1
l---------qa/suites/fs/upgrade/featureful_client/upgraded_client/centos_8.yaml1
l---------qa/suites/fs/upgrade/featureful_client/upgraded_client/clusters/.qa1
l---------qa/suites/fs/upgrade/featureful_client/upgraded_client/clusters/1-mds-2-client-micro.yaml1
l---------qa/suites/fs/upgrade/featureful_client/upgraded_client/conf1
-rw-r--r--qa/suites/fs/upgrade/featureful_client/upgraded_client/overrides/%0
l---------qa/suites/fs/upgrade/featureful_client/upgraded_client/overrides/.qa1
l---------qa/suites/fs/upgrade/featureful_client/upgraded_client/overrides/ignorelist_health.yaml1
l---------qa/suites/fs/upgrade/featureful_client/upgraded_client/overrides/ignorelist_wrongly_marked_down.yaml1
l---------qa/suites/fs/upgrade/featureful_client/upgraded_client/overrides/multimds/.qa1
-rw-r--r--qa/suites/fs/upgrade/featureful_client/upgraded_client/overrides/multimds/no.yaml4
-rw-r--r--qa/suites/fs/upgrade/featureful_client/upgraded_client/overrides/multimds/yes.yaml4
-rw-r--r--qa/suites/fs/upgrade/featureful_client/upgraded_client/overrides/pg-warn.yaml5
-rw-r--r--qa/suites/fs/upgrade/featureful_client/upgraded_client/tasks/%0
l---------qa/suites/fs/upgrade/featureful_client/upgraded_client/tasks/.qa1
-rw-r--r--qa/suites/fs/upgrade/featureful_client/upgraded_client/tasks/0-octopus.yaml39
-rw-r--r--qa/suites/fs/upgrade/featureful_client/upgraded_client/tasks/1-client.yaml11
-rw-r--r--qa/suites/fs/upgrade/featureful_client/upgraded_client/tasks/2-upgrade.yaml48
-rw-r--r--qa/suites/fs/upgrade/featureful_client/upgraded_client/tasks/3-client-upgrade.yaml15
-rw-r--r--qa/suites/fs/upgrade/featureful_client/upgraded_client/tasks/4-compat_client.yaml17
-rw-r--r--qa/suites/fs/upgrade/featureful_client/upgraded_client/tasks/5-client-sanity.yaml6
-rw-r--r--qa/suites/fs/upgrade/mds_upgrade_sequence/%0
l---------qa/suites/fs/upgrade/mds_upgrade_sequence/.qa1
l---------qa/suites/fs/upgrade/mds_upgrade_sequence/bluestore-bitmap.yaml1
l---------qa/suites/fs/upgrade/mds_upgrade_sequence/centos_8.stream_container_tools.yaml1
l---------qa/suites/fs/upgrade/mds_upgrade_sequence/conf1
-rw-r--r--qa/suites/fs/upgrade/mds_upgrade_sequence/fail_fs/no.yaml3
-rw-r--r--qa/suites/fs/upgrade/mds_upgrade_sequence/fail_fs/yes.yaml3
-rw-r--r--qa/suites/fs/upgrade/mds_upgrade_sequence/overrides/%0
l---------qa/suites/fs/upgrade/mds_upgrade_sequence/overrides/.qa1
l---------qa/suites/fs/upgrade/mds_upgrade_sequence/overrides/ignorelist_health.yaml1
l---------qa/suites/fs/upgrade/mds_upgrade_sequence/overrides/ignorelist_wrongly_marked_down.yaml1
-rw-r--r--qa/suites/fs/upgrade/mds_upgrade_sequence/overrides/pg-warn.yaml5
-rw-r--r--qa/suites/fs/upgrade/mds_upgrade_sequence/overrides/syntax.yaml3
-rw-r--r--qa/suites/fs/upgrade/mds_upgrade_sequence/roles.yaml11
-rw-r--r--qa/suites/fs/upgrade/mds_upgrade_sequence/tasks/%0
l---------qa/suites/fs/upgrade/mds_upgrade_sequence/tasks/.qa1
l---------qa/suites/fs/upgrade/mds_upgrade_sequence/tasks/0-from/.qa1
-rw-r--r--qa/suites/fs/upgrade/mds_upgrade_sequence/tasks/0-from/pacific.yaml32
-rw-r--r--qa/suites/fs/upgrade/mds_upgrade_sequence/tasks/0-from/v16.2.4.yaml34
-rw-r--r--qa/suites/fs/upgrade/mds_upgrade_sequence/tasks/1-volume/%0
l---------qa/suites/fs/upgrade/mds_upgrade_sequence/tasks/1-volume/.qa1
-rw-r--r--qa/suites/fs/upgrade/mds_upgrade_sequence/tasks/1-volume/0-create.yaml5
l---------qa/suites/fs/upgrade/mds_upgrade_sequence/tasks/1-volume/1-ranks/.qa1
-rw-r--r--qa/suites/fs/upgrade/mds_upgrade_sequence/tasks/1-volume/1-ranks/1.yaml4
-rw-r--r--qa/suites/fs/upgrade/mds_upgrade_sequence/tasks/1-volume/1-ranks/2.yaml4
l---------qa/suites/fs/upgrade/mds_upgrade_sequence/tasks/1-volume/2-allow_standby_replay/.qa1
-rw-r--r--qa/suites/fs/upgrade/mds_upgrade_sequence/tasks/1-volume/2-allow_standby_replay/no.yaml4
-rw-r--r--qa/suites/fs/upgrade/mds_upgrade_sequence/tasks/1-volume/2-allow_standby_replay/yes.yaml4
l---------qa/suites/fs/upgrade/mds_upgrade_sequence/tasks/1-volume/3-inline/.qa1
-rw-r--r--qa/suites/fs/upgrade/mds_upgrade_sequence/tasks/1-volume/3-inline/no.yaml4
-rw-r--r--qa/suites/fs/upgrade/mds_upgrade_sequence/tasks/1-volume/3-inline/yes.yaml4
-rw-r--r--qa/suites/fs/upgrade/mds_upgrade_sequence/tasks/1-volume/4-verify.yaml7
-rw-r--r--qa/suites/fs/upgrade/mds_upgrade_sequence/tasks/2-client.yaml3
-rw-r--r--qa/suites/fs/upgrade/mds_upgrade_sequence/tasks/3-upgrade-mgr-staggered.yaml18
-rw-r--r--qa/suites/fs/upgrade/mds_upgrade_sequence/tasks/4-config-upgrade/+0
-rw-r--r--qa/suites/fs/upgrade/mds_upgrade_sequence/tasks/4-config-upgrade/fail_fs.yaml15
-rw-r--r--qa/suites/fs/upgrade/mds_upgrade_sequence/tasks/5-upgrade-with-workload.yaml35
-rw-r--r--qa/suites/fs/upgrade/mds_upgrade_sequence/tasks/6-verify.yaml5
-rw-r--r--qa/suites/fs/upgrade/nofs/%0
l---------qa/suites/fs/upgrade/nofs/.qa1
-rw-r--r--qa/suites/fs/upgrade/nofs/README3
l---------qa/suites/fs/upgrade/nofs/bluestore-bitmap.yaml1
l---------qa/suites/fs/upgrade/nofs/centos_8.yaml1
l---------qa/suites/fs/upgrade/nofs/conf1
-rw-r--r--qa/suites/fs/upgrade/nofs/no-mds-cluster.yaml6
-rw-r--r--qa/suites/fs/upgrade/nofs/overrides/%0
l---------qa/suites/fs/upgrade/nofs/overrides/.qa1
l---------qa/suites/fs/upgrade/nofs/overrides/ignorelist_health.yaml1
l---------qa/suites/fs/upgrade/nofs/overrides/ignorelist_wrongly_marked_down.yaml1
-rw-r--r--qa/suites/fs/upgrade/nofs/overrides/pg-warn.yaml5
-rw-r--r--qa/suites/fs/upgrade/nofs/tasks/%0
l---------qa/suites/fs/upgrade/nofs/tasks/.qa1
-rw-r--r--qa/suites/fs/upgrade/nofs/tasks/0-pacific.yaml39
-rw-r--r--qa/suites/fs/upgrade/nofs/tasks/1-upgrade.yaml44
-rw-r--r--qa/suites/fs/upgrade/upgraded_client/%0
l---------qa/suites/fs/upgrade/upgraded_client/.qa1
l---------qa/suites/fs/upgrade/upgraded_client/bluestore-bitmap.yaml1
l---------qa/suites/fs/upgrade/upgraded_client/centos_8.yaml1
-rw-r--r--qa/suites/fs/upgrade/upgraded_client/clusters/%0
l---------qa/suites/fs/upgrade/upgraded_client/clusters/.qa1
l---------qa/suites/fs/upgrade/upgraded_client/clusters/1-mds-1-client-micro.yaml1
l---------qa/suites/fs/upgrade/upgraded_client/conf1
-rw-r--r--qa/suites/fs/upgrade/upgraded_client/overrides/%0
l---------qa/suites/fs/upgrade/upgraded_client/overrides/.qa1
l---------qa/suites/fs/upgrade/upgraded_client/overrides/ignorelist_health.yaml1
l---------qa/suites/fs/upgrade/upgraded_client/overrides/ignorelist_wrongly_marked_down.yaml1
-rw-r--r--qa/suites/fs/upgrade/upgraded_client/overrides/pg-warn.yaml5
-rw-r--r--qa/suites/fs/upgrade/upgraded_client/tasks/%0
l---------qa/suites/fs/upgrade/upgraded_client/tasks/.qa1
-rw-r--r--qa/suites/fs/upgrade/upgraded_client/tasks/0-from/nautilus.yaml53
-rw-r--r--qa/suites/fs/upgrade/upgraded_client/tasks/0-from/pacific.yaml53
l---------qa/suites/fs/upgrade/upgraded_client/tasks/1-mount/.qa1
l---------qa/suites/fs/upgrade/upgraded_client/tasks/1-mount/mount1
l---------qa/suites/fs/upgrade/upgraded_client/tasks/2-workload/.qa1
-rw-r--r--qa/suites/fs/upgrade/upgraded_client/tasks/2-workload/new_ops/%0
-rw-r--r--qa/suites/fs/upgrade/upgraded_client/tasks/2-workload/new_ops/0-clients/fuse-upgrade.yaml14
-rw-r--r--qa/suites/fs/upgrade/upgraded_client/tasks/2-workload/new_ops/0-clients/kclient.yaml8
-rw-r--r--qa/suites/fs/upgrade/upgraded_client/tasks/2-workload/new_ops/1-client-sanity.yaml4
-rw-r--r--qa/suites/fs/upgrade/upgraded_client/tasks/2-workload/stress_tests/%0
l---------qa/suites/fs/upgrade/upgraded_client/tasks/2-workload/stress_tests/.qa1
-rw-r--r--qa/suites/fs/upgrade/upgraded_client/tasks/2-workload/stress_tests/0-client-upgrade.yaml14
l---------qa/suites/fs/upgrade/upgraded_client/tasks/2-workload/stress_tests/1-tests/.qa1
l---------qa/suites/fs/upgrade/upgraded_client/tasks/2-workload/stress_tests/1-tests/blogbench.yaml1
l---------qa/suites/fs/upgrade/upgraded_client/tasks/2-workload/stress_tests/1-tests/dbench.yaml1
l---------qa/suites/fs/upgrade/upgraded_client/tasks/2-workload/stress_tests/1-tests/fsstress.yaml1
l---------qa/suites/fs/upgrade/upgraded_client/tasks/2-workload/stress_tests/1-tests/iozone.yaml1
l---------qa/suites/fs/upgrade/upgraded_client/tasks/2-workload/stress_tests/1-tests/kernel_untar_build.yaml1
-rw-r--r--qa/suites/fs/valgrind/%0
l---------qa/suites/fs/valgrind/.qa1
l---------qa/suites/fs/valgrind/begin1
l---------qa/suites/fs/valgrind/centos_latest.yaml1
-rw-r--r--qa/suites/fs/valgrind/debug.yaml4
-rw-r--r--qa/suites/fs/valgrind/mirror/%0
l---------qa/suites/fs/valgrind/mirror/.qa1
l---------qa/suites/fs/valgrind/mirror/cephfs-mirror/.qa1
-rw-r--r--qa/suites/fs/valgrind/mirror/cephfs-mirror/one-per-cluster.yaml7
l---------qa/suites/fs/valgrind/mirror/clients/.qa1
-rw-r--r--qa/suites/fs/valgrind/mirror/clients/mirror.yaml18
l---------qa/suites/fs/valgrind/mirror/cluster/.qa1
-rw-r--r--qa/suites/fs/valgrind/mirror/cluster/1-node.yaml17
l---------qa/suites/fs/valgrind/mirror/mount/.qa1
-rw-r--r--qa/suites/fs/valgrind/mirror/mount/fuse.yaml2
l---------qa/suites/fs/valgrind/mirror/overrides/.qa1
-rw-r--r--qa/suites/fs/valgrind/mirror/overrides/whitelist_health.yaml14
l---------qa/suites/fs/valgrind/mirror/tasks/.qa1
-rw-r--r--qa/suites/fs/valgrind/mirror/tasks/mirror.yaml10
-rw-r--r--qa/suites/fs/verify/%0
l---------qa/suites/fs/verify/.qa1
l---------qa/suites/fs/verify/begin1
l---------qa/suites/fs/verify/clusters/.qa1
l---------qa/suites/fs/verify/clusters/1a5s-mds-1c-client.yaml1
l---------qa/suites/fs/verify/conf1
-rw-r--r--qa/suites/fs/verify/distro/$0
l---------qa/suites/fs/verify/distro/.qa1
l---------qa/suites/fs/verify/distro/centos_8.yaml1
l---------qa/suites/fs/verify/distro/rhel_8.yaml1
-rw-r--r--qa/suites/fs/verify/distro/ubuntu/+0
l---------qa/suites/fs/verify/distro/ubuntu/.qa1
l---------qa/suites/fs/verify/distro/ubuntu/latest.yaml1
-rw-r--r--qa/suites/fs/verify/distro/ubuntu/overrides.yaml4
l---------qa/suites/fs/verify/mount/.qa1
l---------qa/suites/fs/verify/mount/fuse.yaml1
-rw-r--r--qa/suites/fs/verify/mount/kclient/+0
l---------qa/suites/fs/verify/mount/kclient/.qa1
l---------qa/suites/fs/verify/mount/kclient/k-testing.yaml1
l---------qa/suites/fs/verify/mount/kclient/mount.yaml1
l---------qa/suites/fs/verify/mount/kclient/ms-die-on-skipped.yaml1
l---------qa/suites/fs/verify/objectstore-ec1
-rw-r--r--qa/suites/fs/verify/overrides/+0
l---------qa/suites/fs/verify/overrides/.qa1
l---------qa/suites/fs/verify/overrides/ignorelist_health.yaml1
l---------qa/suites/fs/verify/overrides/ignorelist_wrongly_marked_down.yaml1
-rw-r--r--qa/suites/fs/verify/overrides/mon-debug.yaml6
l---------qa/suites/fs/verify/overrides/session_timeout.yaml1
l---------qa/suites/fs/verify/ranks/.qa1
-rw-r--r--qa/suites/fs/verify/ranks/1.yaml0
-rw-r--r--qa/suites/fs/verify/ranks/3.yaml9
-rw-r--r--qa/suites/fs/verify/ranks/5.yaml9
l---------qa/suites/fs/verify/tasks/.qa1
l---------qa/suites/fs/verify/tasks/dbench.yaml1
l---------qa/suites/fs/verify/tasks/fsstress.yaml1
l---------qa/suites/fs/verify/validater/.qa1
-rw-r--r--qa/suites/fs/verify/validater/lockdep.yaml5
-rw-r--r--qa/suites/fs/verify/validater/valgrind.yaml29
-rw-r--r--qa/suites/fs/volumes/%0
l---------qa/suites/fs/volumes/.qa1
l---------qa/suites/fs/volumes/begin1
l---------qa/suites/fs/volumes/clusters/.qa1
l---------qa/suites/fs/volumes/clusters/1a3s-mds-4c-client.yaml1
l---------qa/suites/fs/volumes/conf1
l---------qa/suites/fs/volumes/distro1
l---------qa/suites/fs/volumes/mount1
l---------qa/suites/fs/volumes/objectstore/.qa1
l---------qa/suites/fs/volumes/objectstore/bluestore-bitmap.yaml1
-rw-r--r--qa/suites/fs/volumes/overrides/+0
l---------qa/suites/fs/volumes/overrides/.qa1
l---------qa/suites/fs/volumes/overrides/ignorelist_health.yaml1
l---------qa/suites/fs/volumes/overrides/ignorelist_wrongly_marked_down.yaml1
l---------qa/suites/fs/volumes/overrides/no_client_pidfile.yaml1
l---------qa/suites/fs/volumes/tasks/.qa1
-rw-r--r--qa/suites/fs/volumes/tasks/volumes/%0
l---------qa/suites/fs/volumes/tasks/volumes/.qa1
-rw-r--r--qa/suites/fs/volumes/tasks/volumes/overrides.yaml17
l---------qa/suites/fs/volumes/tasks/volumes/test/.qa1
-rw-r--r--qa/suites/fs/volumes/tasks/volumes/test/basic.yaml8
-rw-r--r--qa/suites/fs/volumes/tasks/volumes/test/clone.yaml5
-rw-r--r--qa/suites/fs/volumes/tasks/volumes/test/finisher_per_module.yaml13
-rw-r--r--qa/suites/fs/volumes/tasks/volumes/test/misc.yaml5
-rw-r--r--qa/suites/fs/volumes/tasks/volumes/test/snapshot.yaml6
-rw-r--r--qa/suites/fs/workload/%0
l---------qa/suites/fs/workload/.qa1
l---------qa/suites/fs/workload/0-rhel_8.yaml1
-rw-r--r--qa/suites/fs/workload/begin/+0
l---------qa/suites/fs/workload/begin/.qa1
l---------qa/suites/fs/workload/begin/0-install.yaml1
-rw-r--r--qa/suites/fs/workload/begin/1-cephadm.yaml21
l---------qa/suites/fs/workload/begin/2-logrotate.yaml1
l---------qa/suites/fs/workload/clusters/.qa1
l---------qa/suites/fs/workload/clusters/1a11s-mds-1c-client-3node.yaml1
l---------qa/suites/fs/workload/conf1
l---------qa/suites/fs/workload/mount/.qa1
l---------qa/suites/fs/workload/mount/fuse.yaml1
-rw-r--r--qa/suites/fs/workload/mount/kclient/%1
l---------qa/suites/fs/workload/mount/kclient/.qa1
l---------qa/suites/fs/workload/mount/kclient/base1
l---------qa/suites/fs/workload/mount/kclient/ms_mode/.qa1
-rw-r--r--qa/suites/fs/workload/mount/kclient/ms_mode/crc.yaml3
-rw-r--r--qa/suites/fs/workload/mount/kclient/ms_mode/legacy.yaml3
-rw-r--r--qa/suites/fs/workload/mount/kclient/ms_mode/secure.yaml3
l---------qa/suites/fs/workload/mount/kclient/wsync/.qa1
-rw-r--r--qa/suites/fs/workload/mount/kclient/wsync/no.yaml3
-rw-r--r--qa/suites/fs/workload/mount/kclient/wsync/yes.yaml3
l---------qa/suites/fs/workload/objectstore-ec1
l---------qa/suites/fs/workload/omap_limit/.qa1
-rw-r--r--qa/suites/fs/workload/omap_limit/10.yaml5
-rw-r--r--qa/suites/fs/workload/omap_limit/10000.yaml5
-rw-r--r--qa/suites/fs/workload/overrides/+0
l---------qa/suites/fs/workload/overrides/.qa1
-rw-r--r--qa/suites/fs/workload/overrides/cephsqlite-timeout.yaml7
l---------qa/suites/fs/workload/overrides/frag.yaml1
l---------qa/suites/fs/workload/overrides/ignorelist_health.yaml1
l---------qa/suites/fs/workload/overrides/ignorelist_wrongly_marked_down.yaml1
l---------qa/suites/fs/workload/overrides/osd-asserts.yaml1
l---------qa/suites/fs/workload/overrides/session_timeout.yaml1
l---------qa/suites/fs/workload/ranks/.qa1
-rw-r--r--qa/suites/fs/workload/ranks/1.yaml0
-rw-r--r--qa/suites/fs/workload/ranks/multi/%0
-rw-r--r--qa/suites/fs/workload/ranks/multi/export-check.yaml6
-rw-r--r--qa/suites/fs/workload/ranks/multi/n/3.yaml4
-rw-r--r--qa/suites/fs/workload/ranks/multi/n/5.yaml4
-rw-r--r--qa/suites/fs/workload/ranks/multi/replication/always.yaml18
-rw-r--r--qa/suites/fs/workload/ranks/multi/replication/default.yaml1
-rw-r--r--qa/suites/fs/workload/standby-replay.yaml4
-rw-r--r--qa/suites/fs/workload/tasks/%0
l---------qa/suites/fs/workload/tasks/.qa1
-rw-r--r--qa/suites/fs/workload/tasks/0-subvolume/$0
l---------qa/suites/fs/workload/tasks/0-subvolume/.qa1
-rw-r--r--qa/suites/fs/workload/tasks/0-subvolume/no-subvolume.yaml0
-rw-r--r--qa/suites/fs/workload/tasks/0-subvolume/with-namespace-isolated-and-quota.yaml11
-rw-r--r--qa/suites/fs/workload/tasks/0-subvolume/with-namespace-isolated.yaml11
-rw-r--r--qa/suites/fs/workload/tasks/0-subvolume/with-no-extra-options.yaml10
-rw-r--r--qa/suites/fs/workload/tasks/0-subvolume/with-quota.yaml11
-rw-r--r--qa/suites/fs/workload/tasks/1-check-counter.yaml2
l---------qa/suites/fs/workload/tasks/2-scrub/.qa1
-rw-r--r--qa/suites/fs/workload/tasks/2-scrub/no.yaml0
-rw-r--r--qa/suites/fs/workload/tasks/2-scrub/yes.yaml10
l---------qa/suites/fs/workload/tasks/3-snaps/.qa1
-rw-r--r--qa/suites/fs/workload/tasks/3-snaps/no.yaml0
-rw-r--r--qa/suites/fs/workload/tasks/3-snaps/yes.yaml30
l---------qa/suites/fs/workload/tasks/4-flush/.qa1
-rw-r--r--qa/suites/fs/workload/tasks/4-flush/no.yaml0
-rw-r--r--qa/suites/fs/workload/tasks/4-flush/yes.yaml4
l---------qa/suites/fs/workload/tasks/5-workunit/.qa1
-rw-r--r--qa/suites/fs/workload/tasks/5-workunit/direct_io.yaml9
l---------qa/suites/fs/workload/tasks/5-workunit/fs/.qa1
-rw-r--r--qa/suites/fs/workload/tasks/5-workunit/fs/misc.yaml10
-rw-r--r--qa/suites/fs/workload/tasks/5-workunit/fs/norstats.yaml17
-rw-r--r--qa/suites/fs/workload/tasks/5-workunit/fs/test_o_trunc.yaml8
-rw-r--r--qa/suites/fs/workload/tasks/5-workunit/kernel_untar_build.yaml10
-rw-r--r--qa/suites/fs/workload/tasks/5-workunit/postgres.yaml36
l---------qa/suites/fs/workload/tasks/5-workunit/suites/.qa1
-rw-r--r--qa/suites/fs/workload/tasks/5-workunit/suites/blogbench.yaml10
-rw-r--r--qa/suites/fs/workload/tasks/5-workunit/suites/dbench.yaml5
-rw-r--r--qa/suites/fs/workload/tasks/5-workunit/suites/ffsb.yaml18
-rw-r--r--qa/suites/fs/workload/tasks/5-workunit/suites/fsstress.yaml6
-rw-r--r--qa/suites/fs/workload/tasks/5-workunit/suites/fsx.yaml10
-rw-r--r--qa/suites/fs/workload/tasks/5-workunit/suites/fsync-tester.yaml8
-rw-r--r--qa/suites/fs/workload/tasks/5-workunit/suites/iogen.yaml8
-rw-r--r--qa/suites/fs/workload/tasks/5-workunit/suites/iozone.yaml8
-rw-r--r--qa/suites/fs/workload/tasks/5-workunit/suites/pjd.yaml12
761 files changed, 3078 insertions, 0 deletions
diff --git a/qa/suites/fs/.qa b/qa/suites/fs/.qa
new file mode 120000
index 000000000..a602a0353
--- /dev/null
+++ b/qa/suites/fs/.qa
@@ -0,0 +1 @@
+../.qa/ \ No newline at end of file
diff --git a/qa/suites/fs/32bits/% b/qa/suites/fs/32bits/%
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/qa/suites/fs/32bits/%
diff --git a/qa/suites/fs/32bits/.qa b/qa/suites/fs/32bits/.qa
new file mode 120000
index 000000000..a602a0353
--- /dev/null
+++ b/qa/suites/fs/32bits/.qa
@@ -0,0 +1 @@
+../.qa/ \ No newline at end of file
diff --git a/qa/suites/fs/32bits/begin b/qa/suites/fs/32bits/begin
new file mode 120000
index 000000000..77af91f7d
--- /dev/null
+++ b/qa/suites/fs/32bits/begin
@@ -0,0 +1 @@
+.qa/cephfs/begin/ \ No newline at end of file
diff --git a/qa/suites/fs/32bits/clusters/.qa b/qa/suites/fs/32bits/clusters/.qa
new file mode 120000
index 000000000..a602a0353
--- /dev/null
+++ b/qa/suites/fs/32bits/clusters/.qa
@@ -0,0 +1 @@
+../.qa/ \ No newline at end of file
diff --git a/qa/suites/fs/32bits/clusters/fixed-2-ucephfs.yaml b/qa/suites/fs/32bits/clusters/fixed-2-ucephfs.yaml
new file mode 120000
index 000000000..b0c41a89a
--- /dev/null
+++ b/qa/suites/fs/32bits/clusters/fixed-2-ucephfs.yaml
@@ -0,0 +1 @@
+.qa/cephfs/clusters/fixed-2-ucephfs.yaml \ No newline at end of file
diff --git a/qa/suites/fs/32bits/conf b/qa/suites/fs/32bits/conf
new file mode 120000
index 000000000..16e8cc44b
--- /dev/null
+++ b/qa/suites/fs/32bits/conf
@@ -0,0 +1 @@
+.qa/cephfs/conf \ No newline at end of file
diff --git a/qa/suites/fs/32bits/distro b/qa/suites/fs/32bits/distro
new file mode 120000
index 000000000..0862b4457
--- /dev/null
+++ b/qa/suites/fs/32bits/distro
@@ -0,0 +1 @@
+.qa/distros/supported-random-distro$ \ No newline at end of file
diff --git a/qa/suites/fs/32bits/mount/.qa b/qa/suites/fs/32bits/mount/.qa
new file mode 120000
index 000000000..a602a0353
--- /dev/null
+++ b/qa/suites/fs/32bits/mount/.qa
@@ -0,0 +1 @@
+../.qa/ \ No newline at end of file
diff --git a/qa/suites/fs/32bits/mount/fuse.yaml b/qa/suites/fs/32bits/mount/fuse.yaml
new file mode 120000
index 000000000..0e55da9fb
--- /dev/null
+++ b/qa/suites/fs/32bits/mount/fuse.yaml
@@ -0,0 +1 @@
+.qa/cephfs/mount/fuse.yaml \ No newline at end of file
diff --git a/qa/suites/fs/32bits/objectstore-ec b/qa/suites/fs/32bits/objectstore-ec
new file mode 120000
index 000000000..affe29493
--- /dev/null
+++ b/qa/suites/fs/32bits/objectstore-ec
@@ -0,0 +1 @@
+.qa/cephfs/objectstore-ec \ No newline at end of file
diff --git a/qa/suites/fs/32bits/overrides/+ b/qa/suites/fs/32bits/overrides/+
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/qa/suites/fs/32bits/overrides/+
diff --git a/qa/suites/fs/32bits/overrides/.qa b/qa/suites/fs/32bits/overrides/.qa
new file mode 120000
index 000000000..a602a0353
--- /dev/null
+++ b/qa/suites/fs/32bits/overrides/.qa
@@ -0,0 +1 @@
+../.qa/ \ No newline at end of file
diff --git a/qa/suites/fs/32bits/overrides/faked-ino.yaml b/qa/suites/fs/32bits/overrides/faked-ino.yaml
new file mode 100644
index 000000000..102df684d
--- /dev/null
+++ b/qa/suites/fs/32bits/overrides/faked-ino.yaml
@@ -0,0 +1,5 @@
+overrides:
+ ceph:
+ conf:
+ client:
+ client use faked inos: true
diff --git a/qa/suites/fs/32bits/overrides/ignorelist_health.yaml b/qa/suites/fs/32bits/overrides/ignorelist_health.yaml
new file mode 120000
index 000000000..5cb891a95
--- /dev/null
+++ b/qa/suites/fs/32bits/overrides/ignorelist_health.yaml
@@ -0,0 +1 @@
+.qa/cephfs/overrides/ignorelist_health.yaml \ No newline at end of file
diff --git a/qa/suites/fs/32bits/overrides/ignorelist_wrongly_marked_down.yaml b/qa/suites/fs/32bits/overrides/ignorelist_wrongly_marked_down.yaml
new file mode 120000
index 000000000..f317cb714
--- /dev/null
+++ b/qa/suites/fs/32bits/overrides/ignorelist_wrongly_marked_down.yaml
@@ -0,0 +1 @@
+.qa/cephfs/overrides/ignorelist_wrongly_marked_down.yaml \ No newline at end of file
diff --git a/qa/suites/fs/32bits/tasks/.qa b/qa/suites/fs/32bits/tasks/.qa
new file mode 120000
index 000000000..a602a0353
--- /dev/null
+++ b/qa/suites/fs/32bits/tasks/.qa
@@ -0,0 +1 @@
+../.qa/ \ No newline at end of file
diff --git a/qa/suites/fs/32bits/tasks/cfuse_workunit_suites_fsstress.yaml b/qa/suites/fs/32bits/tasks/cfuse_workunit_suites_fsstress.yaml
new file mode 120000
index 000000000..c2e859fff
--- /dev/null
+++ b/qa/suites/fs/32bits/tasks/cfuse_workunit_suites_fsstress.yaml
@@ -0,0 +1 @@
+.qa/cephfs/tasks/cfuse_workunit_suites_fsstress.yaml \ No newline at end of file
diff --git a/qa/suites/fs/32bits/tasks/cfuse_workunit_suites_pjd.yaml b/qa/suites/fs/32bits/tasks/cfuse_workunit_suites_pjd.yaml
new file mode 100644
index 000000000..f7784383b
--- /dev/null
+++ b/qa/suites/fs/32bits/tasks/cfuse_workunit_suites_pjd.yaml
@@ -0,0 +1,11 @@
+overrides:
+ ceph:
+ conf:
+ client:
+ fuse set user groups: true
+tasks:
+- workunit:
+ timeout: 6h
+ clients:
+ all:
+ - suites/pjd.sh
diff --git a/qa/suites/fs/bugs/.qa b/qa/suites/fs/bugs/.qa
new file mode 120000
index 000000000..a602a0353
--- /dev/null
+++ b/qa/suites/fs/bugs/.qa
@@ -0,0 +1 @@
+../.qa/ \ No newline at end of file
diff --git a/qa/suites/fs/bugs/client_trim_caps/% b/qa/suites/fs/bugs/client_trim_caps/%
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/qa/suites/fs/bugs/client_trim_caps/%
diff --git a/qa/suites/fs/bugs/client_trim_caps/.qa b/qa/suites/fs/bugs/client_trim_caps/.qa
new file mode 120000
index 000000000..a602a0353
--- /dev/null
+++ b/qa/suites/fs/bugs/client_trim_caps/.qa
@@ -0,0 +1 @@
+../.qa/ \ No newline at end of file
diff --git a/qa/suites/fs/bugs/client_trim_caps/begin b/qa/suites/fs/bugs/client_trim_caps/begin
new file mode 120000
index 000000000..77af91f7d
--- /dev/null
+++ b/qa/suites/fs/bugs/client_trim_caps/begin
@@ -0,0 +1 @@
+.qa/cephfs/begin/ \ No newline at end of file
diff --git a/qa/suites/fs/bugs/client_trim_caps/centos_latest.yaml b/qa/suites/fs/bugs/client_trim_caps/centos_latest.yaml
new file mode 120000
index 000000000..bd9854e70
--- /dev/null
+++ b/qa/suites/fs/bugs/client_trim_caps/centos_latest.yaml
@@ -0,0 +1 @@
+.qa/distros/supported/centos_latest.yaml \ No newline at end of file
diff --git a/qa/suites/fs/bugs/client_trim_caps/clusters/.qa b/qa/suites/fs/bugs/client_trim_caps/clusters/.qa
new file mode 120000
index 000000000..a602a0353
--- /dev/null
+++ b/qa/suites/fs/bugs/client_trim_caps/clusters/.qa
@@ -0,0 +1 @@
+../.qa/ \ No newline at end of file
diff --git a/qa/suites/fs/bugs/client_trim_caps/clusters/small-cluster.yaml b/qa/suites/fs/bugs/client_trim_caps/clusters/small-cluster.yaml
new file mode 100644
index 000000000..5cd97a3ae
--- /dev/null
+++ b/qa/suites/fs/bugs/client_trim_caps/clusters/small-cluster.yaml
@@ -0,0 +1,11 @@
+roles:
+- [mon.a, mgr.x, osd.0, osd.1, osd.2, mds.a, mds.b, client.0]
+openstack:
+- volumes: # attached to each instance
+ count: 2
+ size: 10 # GB
+- machine:
+ disk: 100 # GB
+log-rotate:
+ ceph-mds: 10G
+ ceph-osd: 10G
diff --git a/qa/suites/fs/bugs/client_trim_caps/conf b/qa/suites/fs/bugs/client_trim_caps/conf
new file mode 120000
index 000000000..16e8cc44b
--- /dev/null
+++ b/qa/suites/fs/bugs/client_trim_caps/conf
@@ -0,0 +1 @@
+.qa/cephfs/conf \ No newline at end of file
diff --git a/qa/suites/fs/bugs/client_trim_caps/objectstore/.qa b/qa/suites/fs/bugs/client_trim_caps/objectstore/.qa
new file mode 120000
index 000000000..a602a0353
--- /dev/null
+++ b/qa/suites/fs/bugs/client_trim_caps/objectstore/.qa
@@ -0,0 +1 @@
+../.qa/ \ No newline at end of file
diff --git a/qa/suites/fs/bugs/client_trim_caps/objectstore/bluestore-bitmap.yaml b/qa/suites/fs/bugs/client_trim_caps/objectstore/bluestore-bitmap.yaml
new file mode 120000
index 000000000..a59cf5175
--- /dev/null
+++ b/qa/suites/fs/bugs/client_trim_caps/objectstore/bluestore-bitmap.yaml
@@ -0,0 +1 @@
+.qa/objectstore/bluestore-bitmap.yaml \ No newline at end of file
diff --git a/qa/suites/fs/bugs/client_trim_caps/overrides/+ b/qa/suites/fs/bugs/client_trim_caps/overrides/+
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/qa/suites/fs/bugs/client_trim_caps/overrides/+
diff --git a/qa/suites/fs/bugs/client_trim_caps/overrides/.qa b/qa/suites/fs/bugs/client_trim_caps/overrides/.qa
new file mode 120000
index 000000000..a602a0353
--- /dev/null
+++ b/qa/suites/fs/bugs/client_trim_caps/overrides/.qa
@@ -0,0 +1 @@
+../.qa/ \ No newline at end of file
diff --git a/qa/suites/fs/bugs/client_trim_caps/overrides/ignorelist_health.yaml b/qa/suites/fs/bugs/client_trim_caps/overrides/ignorelist_health.yaml
new file mode 120000
index 000000000..5cb891a95
--- /dev/null
+++ b/qa/suites/fs/bugs/client_trim_caps/overrides/ignorelist_health.yaml
@@ -0,0 +1 @@
+.qa/cephfs/overrides/ignorelist_health.yaml \ No newline at end of file
diff --git a/qa/suites/fs/bugs/client_trim_caps/overrides/ignorelist_wrongly_marked_down.yaml b/qa/suites/fs/bugs/client_trim_caps/overrides/ignorelist_wrongly_marked_down.yaml
new file mode 120000
index 000000000..f317cb714
--- /dev/null
+++ b/qa/suites/fs/bugs/client_trim_caps/overrides/ignorelist_wrongly_marked_down.yaml
@@ -0,0 +1 @@
+.qa/cephfs/overrides/ignorelist_wrongly_marked_down.yaml \ No newline at end of file
diff --git a/qa/suites/fs/bugs/client_trim_caps/overrides/no_client_pidfile.yaml b/qa/suites/fs/bugs/client_trim_caps/overrides/no_client_pidfile.yaml
new file mode 120000
index 000000000..8888f3327
--- /dev/null
+++ b/qa/suites/fs/bugs/client_trim_caps/overrides/no_client_pidfile.yaml
@@ -0,0 +1 @@
+.qa/overrides/no_client_pidfile.yaml \ No newline at end of file
diff --git a/qa/suites/fs/bugs/client_trim_caps/tasks/.qa b/qa/suites/fs/bugs/client_trim_caps/tasks/.qa
new file mode 120000
index 000000000..a602a0353
--- /dev/null
+++ b/qa/suites/fs/bugs/client_trim_caps/tasks/.qa
@@ -0,0 +1 @@
+../.qa/ \ No newline at end of file
diff --git a/qa/suites/fs/bugs/client_trim_caps/tasks/trim-i24137.yaml b/qa/suites/fs/bugs/client_trim_caps/tasks/trim-i24137.yaml
new file mode 100644
index 000000000..098f7d053
--- /dev/null
+++ b/qa/suites/fs/bugs/client_trim_caps/tasks/trim-i24137.yaml
@@ -0,0 +1,14 @@
+# Note this test is unlikely to exercise the code as expected in the future:
+# "It's too tricky to arrange inodes in session->caps. we don't know if it
+# still works in the future." -Zheng
+
+tasks:
+- exec:
+ mon.a:
+ - ceph config set mds mds_min_caps_per_client 1
+- background_exec:
+ mon.a:
+ - "sleep 30 && ceph config set mds mds_max_caps_per_client 1"
+- exec:
+ client.0:
+ - ceph_test_trim_caps
diff --git a/qa/suites/fs/cephadm/.qa b/qa/suites/fs/cephadm/.qa
new file mode 120000
index 000000000..a602a0353
--- /dev/null
+++ b/qa/suites/fs/cephadm/.qa
@@ -0,0 +1 @@
+../.qa/ \ No newline at end of file
diff --git a/qa/suites/fs/cephadm/multivolume/% b/qa/suites/fs/cephadm/multivolume/%
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/qa/suites/fs/cephadm/multivolume/%
diff --git a/qa/suites/fs/cephadm/multivolume/.qa b/qa/suites/fs/cephadm/multivolume/.qa
new file mode 120000
index 000000000..a602a0353
--- /dev/null
+++ b/qa/suites/fs/cephadm/multivolume/.qa
@@ -0,0 +1 @@
+../.qa/ \ No newline at end of file
diff --git a/qa/suites/fs/cephadm/multivolume/0-start.yaml b/qa/suites/fs/cephadm/multivolume/0-start.yaml
new file mode 100644
index 000000000..13dc863d2
--- /dev/null
+++ b/qa/suites/fs/cephadm/multivolume/0-start.yaml
@@ -0,0 +1,39 @@
+roles:
+- - host.a
+ - osd.0
+ - osd.1
+ - osd.2
+ - osd.3
+ - client.0
+- - host.b
+ - osd.4
+ - osd.5
+ - osd.6
+ - osd.7
+ - client.1
+openstack:
+- volumes: # attached to each instance
+ count: 4
+ size: 10 # GB
+overrides:
+ ceph:
+ conf:
+ osd:
+ osd shutdown pgref assert: true
+tasks:
+- install:
+- cephadm:
+ roleless: true
+- cephadm.shell:
+ host.a:
+ - ceph orch status
+ - ceph orch ps
+ - ceph orch ls
+ - ceph orch host ls
+ - ceph orch device ls
+- cephadm.shell:
+ host.a:
+ - ceph fs volume create foo
+ - ceph fs volume create bar
+- fs.ready:
+ timeout: 300
diff --git a/qa/suites/fs/cephadm/multivolume/1-mount.yaml b/qa/suites/fs/cephadm/multivolume/1-mount.yaml
new file mode 100644
index 000000000..713621972
--- /dev/null
+++ b/qa/suites/fs/cephadm/multivolume/1-mount.yaml
@@ -0,0 +1,7 @@
+tasks:
+ - ceph-fuse:
+ client.0:
+ cephfs_name: foo
+ - ceph-fuse:
+ client.1:
+ cephfs_name: bar
diff --git a/qa/suites/fs/cephadm/multivolume/2-workload/.qa b/qa/suites/fs/cephadm/multivolume/2-workload/.qa
new file mode 120000
index 000000000..a602a0353
--- /dev/null
+++ b/qa/suites/fs/cephadm/multivolume/2-workload/.qa
@@ -0,0 +1 @@
+../.qa/ \ No newline at end of file
diff --git a/qa/suites/fs/cephadm/multivolume/2-workload/dbench.yaml b/qa/suites/fs/cephadm/multivolume/2-workload/dbench.yaml
new file mode 120000
index 000000000..9fb8adcea
--- /dev/null
+++ b/qa/suites/fs/cephadm/multivolume/2-workload/dbench.yaml
@@ -0,0 +1 @@
+.qa/suites/fs/workload/tasks/5-workunit/suites/dbench.yaml \ No newline at end of file
diff --git a/qa/suites/fs/cephadm/multivolume/distro/.qa b/qa/suites/fs/cephadm/multivolume/distro/.qa
new file mode 120000
index 000000000..a602a0353
--- /dev/null
+++ b/qa/suites/fs/cephadm/multivolume/distro/.qa
@@ -0,0 +1 @@
+../.qa/ \ No newline at end of file
diff --git a/qa/suites/fs/cephadm/multivolume/distro/single-container-host.yaml b/qa/suites/fs/cephadm/multivolume/distro/single-container-host.yaml
new file mode 120000
index 000000000..7406e749c
--- /dev/null
+++ b/qa/suites/fs/cephadm/multivolume/distro/single-container-host.yaml
@@ -0,0 +1 @@
+.qa/distros/single-container-host.yaml \ No newline at end of file
diff --git a/qa/suites/fs/cephadm/renamevolume/% b/qa/suites/fs/cephadm/renamevolume/%
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/qa/suites/fs/cephadm/renamevolume/%
diff --git a/qa/suites/fs/cephadm/renamevolume/.qa b/qa/suites/fs/cephadm/renamevolume/.qa
new file mode 120000
index 000000000..a602a0353
--- /dev/null
+++ b/qa/suites/fs/cephadm/renamevolume/.qa
@@ -0,0 +1 @@
+../.qa/ \ No newline at end of file
diff --git a/qa/suites/fs/cephadm/renamevolume/0-start.yaml b/qa/suites/fs/cephadm/renamevolume/0-start.yaml
new file mode 100644
index 000000000..727837580
--- /dev/null
+++ b/qa/suites/fs/cephadm/renamevolume/0-start.yaml
@@ -0,0 +1,38 @@
+roles:
+- - host.a
+ - osd.0
+ - osd.1
+ - osd.2
+ - osd.3
+ - client.0
+- - host.b
+ - osd.4
+ - osd.5
+ - osd.6
+ - osd.7
+ - client.1
+openstack:
+- volumes: # attached to each instance
+ count: 4
+ size: 10 # GB
+overrides:
+ ceph:
+ conf:
+ osd:
+ osd shutdown pgref assert: true
+tasks:
+- install:
+- cephadm:
+ roleless: true
+- cephadm.shell:
+ host.a:
+ - ceph orch status
+ - ceph orch ps
+ - ceph orch ls
+ - ceph orch host ls
+ - ceph orch device ls
+- cephadm.shell:
+ host.a:
+ - ceph fs volume create foo
+- fs.ready:
+ timeout: 300
diff --git a/qa/suites/fs/cephadm/renamevolume/1-rename.yaml b/qa/suites/fs/cephadm/renamevolume/1-rename.yaml
new file mode 100644
index 000000000..7f9bc8906
--- /dev/null
+++ b/qa/suites/fs/cephadm/renamevolume/1-rename.yaml
@@ -0,0 +1,11 @@
+tasks:
+- cephadm.shell:
+ host.a:
+ - ceph fs volume rename foo bar --yes-i-really-mean-it
+- fs.ready:
+ timeout: 300
+- cephadm.shell:
+ host.a:
+ - |
+ set -ex
+ ceph orch ls mds --format=json | jq ".[] | .service_name" | grep "mds.bar"
diff --git a/qa/suites/fs/cephadm/renamevolume/distro/.qa b/qa/suites/fs/cephadm/renamevolume/distro/.qa
new file mode 120000
index 000000000..a602a0353
--- /dev/null
+++ b/qa/suites/fs/cephadm/renamevolume/distro/.qa
@@ -0,0 +1 @@
+../.qa/ \ No newline at end of file
diff --git a/qa/suites/fs/cephadm/renamevolume/distro/single-container-host.yaml b/qa/suites/fs/cephadm/renamevolume/distro/single-container-host.yaml
new file mode 120000
index 000000000..7406e749c
--- /dev/null
+++ b/qa/suites/fs/cephadm/renamevolume/distro/single-container-host.yaml
@@ -0,0 +1 @@
+.qa/distros/single-container-host.yaml \ No newline at end of file
diff --git a/qa/suites/fs/cephadm/renamevolume/overrides/.qa b/qa/suites/fs/cephadm/renamevolume/overrides/.qa
new file mode 120000
index 000000000..a602a0353
--- /dev/null
+++ b/qa/suites/fs/cephadm/renamevolume/overrides/.qa
@@ -0,0 +1 @@
+../.qa/ \ No newline at end of file
diff --git a/qa/suites/fs/cephadm/renamevolume/overrides/ignorelist_health.yaml b/qa/suites/fs/cephadm/renamevolume/overrides/ignorelist_health.yaml
new file mode 120000
index 000000000..5cb891a95
--- /dev/null
+++ b/qa/suites/fs/cephadm/renamevolume/overrides/ignorelist_health.yaml
@@ -0,0 +1 @@
+.qa/cephfs/overrides/ignorelist_health.yaml \ No newline at end of file
diff --git a/qa/suites/fs/fscrypt/% b/qa/suites/fs/fscrypt/%
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/qa/suites/fs/fscrypt/%
diff --git a/qa/suites/fs/fscrypt/.qa b/qa/suites/fs/fscrypt/.qa
new file mode 120000
index 000000000..a602a0353
--- /dev/null
+++ b/qa/suites/fs/fscrypt/.qa
@@ -0,0 +1 @@
+../.qa/ \ No newline at end of file
diff --git a/qa/suites/fs/fscrypt/begin b/qa/suites/fs/fscrypt/begin
new file mode 120000
index 000000000..77af91f7d
--- /dev/null
+++ b/qa/suites/fs/fscrypt/begin
@@ -0,0 +1 @@
+.qa/cephfs/begin/ \ No newline at end of file
diff --git a/qa/suites/fs/fscrypt/bluestore-bitmap.yaml b/qa/suites/fs/fscrypt/bluestore-bitmap.yaml
new file mode 120000
index 000000000..fb603bc9a
--- /dev/null
+++ b/qa/suites/fs/fscrypt/bluestore-bitmap.yaml
@@ -0,0 +1 @@
+.qa/cephfs/objectstore-ec/bluestore-bitmap.yaml \ No newline at end of file
diff --git a/qa/suites/fs/fscrypt/clusters/.qa b/qa/suites/fs/fscrypt/clusters/.qa
new file mode 120000
index 000000000..fea2489fd
--- /dev/null
+++ b/qa/suites/fs/fscrypt/clusters/.qa
@@ -0,0 +1 @@
+../.qa \ No newline at end of file
diff --git a/qa/suites/fs/fscrypt/clusters/1-mds-1-client.yaml b/qa/suites/fs/fscrypt/clusters/1-mds-1-client.yaml
new file mode 120000
index 000000000..64bdb79fe
--- /dev/null
+++ b/qa/suites/fs/fscrypt/clusters/1-mds-1-client.yaml
@@ -0,0 +1 @@
+.qa/cephfs/clusters/1-mds-1-client.yaml \ No newline at end of file
diff --git a/qa/suites/fs/fscrypt/conf b/qa/suites/fs/fscrypt/conf
new file mode 120000
index 000000000..6d4712984
--- /dev/null
+++ b/qa/suites/fs/fscrypt/conf
@@ -0,0 +1 @@
+.qa/cephfs/conf/ \ No newline at end of file
diff --git a/qa/suites/fs/fscrypt/distro/$ b/qa/suites/fs/fscrypt/distro/$
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/qa/suites/fs/fscrypt/distro/$
diff --git a/qa/suites/fs/fscrypt/distro/.qa b/qa/suites/fs/fscrypt/distro/.qa
new file mode 120000
index 000000000..a602a0353
--- /dev/null
+++ b/qa/suites/fs/fscrypt/distro/.qa
@@ -0,0 +1 @@
+../.qa/ \ No newline at end of file
diff --git a/qa/suites/fs/fscrypt/distro/centos_latest.yaml b/qa/suites/fs/fscrypt/distro/centos_latest.yaml
new file mode 120000
index 000000000..bd9854e70
--- /dev/null
+++ b/qa/suites/fs/fscrypt/distro/centos_latest.yaml
@@ -0,0 +1 @@
+.qa/distros/supported/centos_latest.yaml \ No newline at end of file
diff --git a/qa/suites/fs/fscrypt/distro/ubuntu_latest.yaml b/qa/suites/fs/fscrypt/distro/ubuntu_latest.yaml
new file mode 120000
index 000000000..3a09f9abb
--- /dev/null
+++ b/qa/suites/fs/fscrypt/distro/ubuntu_latest.yaml
@@ -0,0 +1 @@
+.qa/distros/supported/ubuntu_latest.yaml \ No newline at end of file
diff --git a/qa/suites/fs/fscrypt/mount/.qa b/qa/suites/fs/fscrypt/mount/.qa
new file mode 120000
index 000000000..a602a0353
--- /dev/null
+++ b/qa/suites/fs/fscrypt/mount/.qa
@@ -0,0 +1 @@
+../.qa/ \ No newline at end of file
diff --git a/qa/suites/fs/fscrypt/mount/kclient/% b/qa/suites/fs/fscrypt/mount/kclient/%
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/qa/suites/fs/fscrypt/mount/kclient/%
diff --git a/qa/suites/fs/fscrypt/mount/kclient/.qa b/qa/suites/fs/fscrypt/mount/kclient/.qa
new file mode 120000
index 000000000..a602a0353
--- /dev/null
+++ b/qa/suites/fs/fscrypt/mount/kclient/.qa
@@ -0,0 +1 @@
+../.qa/ \ No newline at end of file
diff --git a/qa/suites/fs/fscrypt/mount/kclient/mount-syntax/.qa b/qa/suites/fs/fscrypt/mount/kclient/mount-syntax/.qa
new file mode 120000
index 000000000..a602a0353
--- /dev/null
+++ b/qa/suites/fs/fscrypt/mount/kclient/mount-syntax/.qa
@@ -0,0 +1 @@
+../.qa/ \ No newline at end of file
diff --git a/qa/suites/fs/fscrypt/mount/kclient/mount-syntax/v1.yaml b/qa/suites/fs/fscrypt/mount/kclient/mount-syntax/v1.yaml
new file mode 120000
index 000000000..3315775c1
--- /dev/null
+++ b/qa/suites/fs/fscrypt/mount/kclient/mount-syntax/v1.yaml
@@ -0,0 +1 @@
+.qa/cephfs/mount/kclient/mount-syntax/v1.yaml \ No newline at end of file
diff --git a/qa/suites/fs/fscrypt/mount/kclient/mount.yaml b/qa/suites/fs/fscrypt/mount/kclient/mount.yaml
new file mode 120000
index 000000000..9967f23e2
--- /dev/null
+++ b/qa/suites/fs/fscrypt/mount/kclient/mount.yaml
@@ -0,0 +1 @@
+.qa/cephfs/mount/kclient/mount.yaml \ No newline at end of file
diff --git a/qa/suites/fs/fscrypt/mount/kclient/overrides/% b/qa/suites/fs/fscrypt/mount/kclient/overrides/%
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/qa/suites/fs/fscrypt/mount/kclient/overrides/%
diff --git a/qa/suites/fs/fscrypt/mount/kclient/overrides/.qa b/qa/suites/fs/fscrypt/mount/kclient/overrides/.qa
new file mode 120000
index 000000000..a602a0353
--- /dev/null
+++ b/qa/suites/fs/fscrypt/mount/kclient/overrides/.qa
@@ -0,0 +1 @@
+../.qa/ \ No newline at end of file
diff --git a/qa/suites/fs/fscrypt/mount/kclient/overrides/distro/.qa b/qa/suites/fs/fscrypt/mount/kclient/overrides/distro/.qa
new file mode 120000
index 000000000..a602a0353
--- /dev/null
+++ b/qa/suites/fs/fscrypt/mount/kclient/overrides/distro/.qa
@@ -0,0 +1 @@
+../.qa/ \ No newline at end of file
diff --git a/qa/suites/fs/fscrypt/mount/kclient/overrides/distro/testing/.qa b/qa/suites/fs/fscrypt/mount/kclient/overrides/distro/testing/.qa
new file mode 120000
index 000000000..a602a0353
--- /dev/null
+++ b/qa/suites/fs/fscrypt/mount/kclient/overrides/distro/testing/.qa
@@ -0,0 +1 @@
+../.qa/ \ No newline at end of file
diff --git a/qa/suites/fs/fscrypt/mount/kclient/overrides/distro/testing/k-testing.yaml b/qa/suites/fs/fscrypt/mount/kclient/overrides/distro/testing/k-testing.yaml
new file mode 120000
index 000000000..bec80be29
--- /dev/null
+++ b/qa/suites/fs/fscrypt/mount/kclient/overrides/distro/testing/k-testing.yaml
@@ -0,0 +1 @@
+.qa/cephfs/mount/kclient/overrides/distro/testing/k-testing.yaml \ No newline at end of file
diff --git a/qa/suites/fs/fscrypt/overrides/+ b/qa/suites/fs/fscrypt/overrides/+
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/qa/suites/fs/fscrypt/overrides/+
diff --git a/qa/suites/fs/fscrypt/overrides/.qa b/qa/suites/fs/fscrypt/overrides/.qa
new file mode 120000
index 000000000..a602a0353
--- /dev/null
+++ b/qa/suites/fs/fscrypt/overrides/.qa
@@ -0,0 +1 @@
+../.qa/ \ No newline at end of file
diff --git a/qa/suites/fs/fscrypt/overrides/ignorelist_health.yaml b/qa/suites/fs/fscrypt/overrides/ignorelist_health.yaml
new file mode 120000
index 000000000..5cb891a95
--- /dev/null
+++ b/qa/suites/fs/fscrypt/overrides/ignorelist_health.yaml
@@ -0,0 +1 @@
+.qa/cephfs/overrides/ignorelist_health.yaml \ No newline at end of file
diff --git a/qa/suites/fs/fscrypt/overrides/ignorelist_health_more.yaml b/qa/suites/fs/fscrypt/overrides/ignorelist_health_more.yaml
new file mode 100644
index 000000000..948352527
--- /dev/null
+++ b/qa/suites/fs/fscrypt/overrides/ignorelist_health_more.yaml
@@ -0,0 +1,5 @@
+overrides:
+ ceph:
+ log-ignorelist:
+ - Reduced data availability
+ - Degraded data redundancy
diff --git a/qa/suites/fs/fscrypt/overrides/ignorelist_wrongly_marked_down.yaml b/qa/suites/fs/fscrypt/overrides/ignorelist_wrongly_marked_down.yaml
new file mode 120000
index 000000000..f317cb714
--- /dev/null
+++ b/qa/suites/fs/fscrypt/overrides/ignorelist_wrongly_marked_down.yaml
@@ -0,0 +1 @@
+.qa/cephfs/overrides/ignorelist_wrongly_marked_down.yaml \ No newline at end of file
diff --git a/qa/suites/fs/fscrypt/overrides/pg-warn.yaml b/qa/suites/fs/fscrypt/overrides/pg-warn.yaml
new file mode 100644
index 000000000..4ae54a40d
--- /dev/null
+++ b/qa/suites/fs/fscrypt/overrides/pg-warn.yaml
@@ -0,0 +1,5 @@
+overrides:
+ ceph:
+ conf:
+ global:
+ mon pg warn min per osd: 0
diff --git a/qa/suites/fs/fscrypt/tasks/.qa b/qa/suites/fs/fscrypt/tasks/.qa
new file mode 120000
index 000000000..a602a0353
--- /dev/null
+++ b/qa/suites/fs/fscrypt/tasks/.qa
@@ -0,0 +1 @@
+../.qa/ \ No newline at end of file
diff --git a/qa/suites/fs/fscrypt/tasks/fscrypt-common.yaml b/qa/suites/fs/fscrypt/tasks/fscrypt-common.yaml
new file mode 100644
index 000000000..5cb34d981
--- /dev/null
+++ b/qa/suites/fs/fscrypt/tasks/fscrypt-common.yaml
@@ -0,0 +1,5 @@
+tasks:
+ - cephfs_test_runner:
+ fail_on_skip: false
+ modules:
+ - tasks.cephfs.test_fscrypt
diff --git a/qa/suites/fs/fscrypt/tasks/fscrypt-dbench.yaml b/qa/suites/fs/fscrypt/tasks/fscrypt-dbench.yaml
new file mode 100644
index 000000000..324bc64c3
--- /dev/null
+++ b/qa/suites/fs/fscrypt/tasks/fscrypt-dbench.yaml
@@ -0,0 +1,7 @@
+tasks:
+- workunit:
+ timeout: 6h
+ clients:
+ client.0:
+ - fs/fscrypt.sh none dbench
+ - fs/fscrypt.sh unlocked dbench
diff --git a/qa/suites/fs/fscrypt/tasks/fscrypt-ffsb.yaml b/qa/suites/fs/fscrypt/tasks/fscrypt-ffsb.yaml
new file mode 100644
index 000000000..0c70fe963
--- /dev/null
+++ b/qa/suites/fs/fscrypt/tasks/fscrypt-ffsb.yaml
@@ -0,0 +1,7 @@
+tasks:
+- workunit:
+ timeout: 6h
+ clients:
+ client.0:
+ - fs/fscrypt.sh none ffsb
+ - fs/fscrypt.sh unlocked ffsb
diff --git a/qa/suites/fs/fscrypt/tasks/fscrypt-iozone.yaml b/qa/suites/fs/fscrypt/tasks/fscrypt-iozone.yaml
new file mode 100644
index 000000000..5e9bb5aa3
--- /dev/null
+++ b/qa/suites/fs/fscrypt/tasks/fscrypt-iozone.yaml
@@ -0,0 +1,7 @@
+tasks:
+- workunit:
+ timeout: 6h
+ clients:
+ client.0:
+ - fs/fscrypt.sh none iozone
+ - fs/fscrypt.sh unlocked iozone
diff --git a/qa/suites/fs/fscrypt/tasks/fscrypt-pjd.yaml b/qa/suites/fs/fscrypt/tasks/fscrypt-pjd.yaml
new file mode 100644
index 000000000..6d8f709bd
--- /dev/null
+++ b/qa/suites/fs/fscrypt/tasks/fscrypt-pjd.yaml
@@ -0,0 +1,7 @@
+tasks:
+- workunit:
+ timeout: 6h
+ clients:
+ client.0:
+ - fs/fscrypt.sh none pjd
+ - fs/fscrypt.sh unlocked pjd
diff --git a/qa/suites/fs/full/% b/qa/suites/fs/full/%
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/qa/suites/fs/full/%
diff --git a/qa/suites/fs/full/.qa b/qa/suites/fs/full/.qa
new file mode 120000
index 000000000..a602a0353
--- /dev/null
+++ b/qa/suites/fs/full/.qa
@@ -0,0 +1 @@
+../.qa/ \ No newline at end of file
diff --git a/qa/suites/fs/full/begin b/qa/suites/fs/full/begin
new file mode 120000
index 000000000..77af91f7d
--- /dev/null
+++ b/qa/suites/fs/full/begin
@@ -0,0 +1 @@
+.qa/cephfs/begin/ \ No newline at end of file
diff --git a/qa/suites/fs/full/clusters/.qa b/qa/suites/fs/full/clusters/.qa
new file mode 120000
index 000000000..a602a0353
--- /dev/null
+++ b/qa/suites/fs/full/clusters/.qa
@@ -0,0 +1 @@
+../.qa/ \ No newline at end of file
diff --git a/qa/suites/fs/full/clusters/1-node-1-mds-1-osd.yaml b/qa/suites/fs/full/clusters/1-node-1-mds-1-osd.yaml
new file mode 120000
index 000000000..517b76547
--- /dev/null
+++ b/qa/suites/fs/full/clusters/1-node-1-mds-1-osd.yaml
@@ -0,0 +1 @@
+.qa/cephfs/clusters/1-node-1-mds-1-osd.yaml \ No newline at end of file
diff --git a/qa/suites/fs/full/conf b/qa/suites/fs/full/conf
new file mode 120000
index 000000000..16e8cc44b
--- /dev/null
+++ b/qa/suites/fs/full/conf
@@ -0,0 +1 @@
+.qa/cephfs/conf \ No newline at end of file
diff --git a/qa/suites/fs/full/distro b/qa/suites/fs/full/distro
new file mode 120000
index 000000000..0862b4457
--- /dev/null
+++ b/qa/suites/fs/full/distro
@@ -0,0 +1 @@
+.qa/distros/supported-random-distro$ \ No newline at end of file
diff --git a/qa/suites/fs/full/mount/.qa b/qa/suites/fs/full/mount/.qa
new file mode 120000
index 000000000..a602a0353
--- /dev/null
+++ b/qa/suites/fs/full/mount/.qa
@@ -0,0 +1 @@
+../.qa/ \ No newline at end of file
diff --git a/qa/suites/fs/full/mount/fuse.yaml b/qa/suites/fs/full/mount/fuse.yaml
new file mode 100644
index 000000000..8338cc493
--- /dev/null
+++ b/qa/suites/fs/full/mount/fuse.yaml
@@ -0,0 +1,2 @@
+tasks:
+ - ceph-fuse:
diff --git a/qa/suites/fs/full/objectstore/.qa b/qa/suites/fs/full/objectstore/.qa
new file mode 120000
index 000000000..a602a0353
--- /dev/null
+++ b/qa/suites/fs/full/objectstore/.qa
@@ -0,0 +1 @@
+../.qa/ \ No newline at end of file
diff --git a/qa/suites/fs/full/objectstore/bluestore-bitmap.yaml b/qa/suites/fs/full/objectstore/bluestore-bitmap.yaml
new file mode 120000
index 000000000..a59cf5175
--- /dev/null
+++ b/qa/suites/fs/full/objectstore/bluestore-bitmap.yaml
@@ -0,0 +1 @@
+.qa/objectstore/bluestore-bitmap.yaml \ No newline at end of file
diff --git a/qa/suites/fs/full/overrides.yaml b/qa/suites/fs/full/overrides.yaml
new file mode 100644
index 000000000..921528d66
--- /dev/null
+++ b/qa/suites/fs/full/overrides.yaml
@@ -0,0 +1,19 @@
+overrides:
+ ceph:
+ conf:
+ mgr:
+ debug client: 20
+ log-ignorelist:
+ - OSD full dropping all updates
+ - OSD near full
+ - pausewr flag
+ - failsafe engaged, dropping updates
+ - failsafe disengaged, no longer dropping
+ - is full \(reached quota
+ - POOL_FULL
+ - POOL_NEARFULL
+ - POOL_BACKFILLFULL
+ - PG_DEGRADED
+ - OSD_OUT_OF_ORDER_FULL
+ - OSD_NEARFULL
+ - OSD_FULL
diff --git a/qa/suites/fs/full/overrides/+ b/qa/suites/fs/full/overrides/+
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/qa/suites/fs/full/overrides/+
diff --git a/qa/suites/fs/full/overrides/.qa b/qa/suites/fs/full/overrides/.qa
new file mode 120000
index 000000000..a602a0353
--- /dev/null
+++ b/qa/suites/fs/full/overrides/.qa
@@ -0,0 +1 @@
+../.qa/ \ No newline at end of file
diff --git a/qa/suites/fs/full/overrides/ignorelist_health.yaml b/qa/suites/fs/full/overrides/ignorelist_health.yaml
new file mode 120000
index 000000000..5cb891a95
--- /dev/null
+++ b/qa/suites/fs/full/overrides/ignorelist_health.yaml
@@ -0,0 +1 @@
+.qa/cephfs/overrides/ignorelist_health.yaml \ No newline at end of file
diff --git a/qa/suites/fs/full/overrides/ignorelist_wrongly_marked_down.yaml b/qa/suites/fs/full/overrides/ignorelist_wrongly_marked_down.yaml
new file mode 120000
index 000000000..f317cb714
--- /dev/null
+++ b/qa/suites/fs/full/overrides/ignorelist_wrongly_marked_down.yaml
@@ -0,0 +1 @@
+.qa/cephfs/overrides/ignorelist_wrongly_marked_down.yaml \ No newline at end of file
diff --git a/qa/suites/fs/full/overrides/no_client_pidfile.yaml b/qa/suites/fs/full/overrides/no_client_pidfile.yaml
new file mode 120000
index 000000000..8888f3327
--- /dev/null
+++ b/qa/suites/fs/full/overrides/no_client_pidfile.yaml
@@ -0,0 +1 @@
+.qa/overrides/no_client_pidfile.yaml \ No newline at end of file
diff --git a/qa/suites/fs/full/tasks/.qa b/qa/suites/fs/full/tasks/.qa
new file mode 120000
index 000000000..a602a0353
--- /dev/null
+++ b/qa/suites/fs/full/tasks/.qa
@@ -0,0 +1 @@
+../.qa/ \ No newline at end of file
diff --git a/qa/suites/fs/full/tasks/mgr-osd-full.yaml b/qa/suites/fs/full/tasks/mgr-osd-full.yaml
new file mode 100644
index 000000000..b4f673e39
--- /dev/null
+++ b/qa/suites/fs/full/tasks/mgr-osd-full.yaml
@@ -0,0 +1,31 @@
+overrides:
+ ceph:
+ conf:
+ global:
+ osd_pool_default_size: 1
+ osd_pool_default_min_size: 1
+ client:
+ debug ms: 1
+ debug client: 20
+ mds:
+ debug ms: 1
+ debug mds: 20
+ osd: # force bluestore since it's required for ec overwrites
+ osd objectstore: bluestore
+ bluestore block size: 1073741824
+tasks:
+- workunit:
+ cleanup: true
+ clients:
+ client.0:
+ - fs/full/subvolume_rm.sh
+- workunit:
+ cleanup: true
+ clients:
+ client.0:
+ - fs/full/subvolume_clone.sh
+- workunit:
+ cleanup: true
+ clients:
+ client.0:
+ - fs/full/subvolume_snapshot_rm.sh
diff --git a/qa/suites/fs/functional/% b/qa/suites/fs/functional/%
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/qa/suites/fs/functional/%
diff --git a/qa/suites/fs/functional/.qa b/qa/suites/fs/functional/.qa
new file mode 120000
index 000000000..a602a0353
--- /dev/null
+++ b/qa/suites/fs/functional/.qa
@@ -0,0 +1 @@
+../.qa/ \ No newline at end of file
diff --git a/qa/suites/fs/functional/begin b/qa/suites/fs/functional/begin
new file mode 120000
index 000000000..77af91f7d
--- /dev/null
+++ b/qa/suites/fs/functional/begin
@@ -0,0 +1 @@
+.qa/cephfs/begin/ \ No newline at end of file
diff --git a/qa/suites/fs/functional/clusters/.qa b/qa/suites/fs/functional/clusters/.qa
new file mode 120000
index 000000000..a602a0353
--- /dev/null
+++ b/qa/suites/fs/functional/clusters/.qa
@@ -0,0 +1 @@
+../.qa/ \ No newline at end of file
diff --git a/qa/suites/fs/functional/clusters/1a3s-mds-4c-client.yaml b/qa/suites/fs/functional/clusters/1a3s-mds-4c-client.yaml
new file mode 120000
index 000000000..5c722a30b
--- /dev/null
+++ b/qa/suites/fs/functional/clusters/1a3s-mds-4c-client.yaml
@@ -0,0 +1 @@
+.qa/cephfs/clusters/1a3s-mds-4c-client.yaml \ No newline at end of file
diff --git a/qa/suites/fs/functional/conf b/qa/suites/fs/functional/conf
new file mode 120000
index 000000000..16e8cc44b
--- /dev/null
+++ b/qa/suites/fs/functional/conf
@@ -0,0 +1 @@
+.qa/cephfs/conf \ No newline at end of file
diff --git a/qa/suites/fs/functional/distro b/qa/suites/fs/functional/distro
new file mode 120000
index 000000000..0862b4457
--- /dev/null
+++ b/qa/suites/fs/functional/distro
@@ -0,0 +1 @@
+.qa/distros/supported-random-distro$ \ No newline at end of file
diff --git a/qa/suites/fs/functional/mount b/qa/suites/fs/functional/mount
new file mode 120000
index 000000000..e3600f453
--- /dev/null
+++ b/qa/suites/fs/functional/mount
@@ -0,0 +1 @@
+.qa/cephfs/mount/ \ No newline at end of file
diff --git a/qa/suites/fs/functional/objectstore/.qa b/qa/suites/fs/functional/objectstore/.qa
new file mode 120000
index 000000000..a602a0353
--- /dev/null
+++ b/qa/suites/fs/functional/objectstore/.qa
@@ -0,0 +1 @@
+../.qa/ \ No newline at end of file
diff --git a/qa/suites/fs/functional/objectstore/bluestore-bitmap.yaml b/qa/suites/fs/functional/objectstore/bluestore-bitmap.yaml
new file mode 120000
index 000000000..a59cf5175
--- /dev/null
+++ b/qa/suites/fs/functional/objectstore/bluestore-bitmap.yaml
@@ -0,0 +1 @@
+.qa/objectstore/bluestore-bitmap.yaml \ No newline at end of file
diff --git a/qa/suites/fs/functional/objectstore/bluestore-ec-root.yaml b/qa/suites/fs/functional/objectstore/bluestore-ec-root.yaml
new file mode 120000
index 000000000..4edebd682
--- /dev/null
+++ b/qa/suites/fs/functional/objectstore/bluestore-ec-root.yaml
@@ -0,0 +1 @@
+.qa/cephfs/objectstore-ec/bluestore-ec-root.yaml \ No newline at end of file
diff --git a/qa/suites/fs/functional/overrides/+ b/qa/suites/fs/functional/overrides/+
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/qa/suites/fs/functional/overrides/+
diff --git a/qa/suites/fs/functional/overrides/.qa b/qa/suites/fs/functional/overrides/.qa
new file mode 120000
index 000000000..a602a0353
--- /dev/null
+++ b/qa/suites/fs/functional/overrides/.qa
@@ -0,0 +1 @@
+../.qa/ \ No newline at end of file
diff --git a/qa/suites/fs/functional/overrides/ignorelist_health.yaml b/qa/suites/fs/functional/overrides/ignorelist_health.yaml
new file mode 120000
index 000000000..5cb891a95
--- /dev/null
+++ b/qa/suites/fs/functional/overrides/ignorelist_health.yaml
@@ -0,0 +1 @@
+.qa/cephfs/overrides/ignorelist_health.yaml \ No newline at end of file
diff --git a/qa/suites/fs/functional/overrides/ignorelist_wrongly_marked_down.yaml b/qa/suites/fs/functional/overrides/ignorelist_wrongly_marked_down.yaml
new file mode 120000
index 000000000..f317cb714
--- /dev/null
+++ b/qa/suites/fs/functional/overrides/ignorelist_wrongly_marked_down.yaml
@@ -0,0 +1 @@
+.qa/cephfs/overrides/ignorelist_wrongly_marked_down.yaml \ No newline at end of file
diff --git a/qa/suites/fs/functional/overrides/no_client_pidfile.yaml b/qa/suites/fs/functional/overrides/no_client_pidfile.yaml
new file mode 120000
index 000000000..8888f3327
--- /dev/null
+++ b/qa/suites/fs/functional/overrides/no_client_pidfile.yaml
@@ -0,0 +1 @@
+.qa/overrides/no_client_pidfile.yaml \ No newline at end of file
diff --git a/qa/suites/fs/functional/tasks/.qa b/qa/suites/fs/functional/tasks/.qa
new file mode 120000
index 000000000..a602a0353
--- /dev/null
+++ b/qa/suites/fs/functional/tasks/.qa
@@ -0,0 +1 @@
+../.qa/ \ No newline at end of file
diff --git a/qa/suites/fs/functional/tasks/acls.yaml b/qa/suites/fs/functional/tasks/acls.yaml
new file mode 100644
index 000000000..c44f6e00d
--- /dev/null
+++ b/qa/suites/fs/functional/tasks/acls.yaml
@@ -0,0 +1,10 @@
+overrides:
+ ceph:
+ log-ignorelist:
+ - Reduced data availability
+ - Degraded data redundancy
+tasks:
+ - cephfs_test_runner:
+ fail_on_skip: false
+ modules:
+ - tasks.cephfs.test_acls
diff --git a/qa/suites/fs/functional/tasks/admin.yaml b/qa/suites/fs/functional/tasks/admin.yaml
new file mode 100644
index 000000000..97ecc4cf4
--- /dev/null
+++ b/qa/suites/fs/functional/tasks/admin.yaml
@@ -0,0 +1,12 @@
+overrides:
+ ceph:
+ conf:
+ global:
+ lockdep: true
+ log-ignorelist:
+ - missing required features
+tasks:
+ - cephfs_test_runner:
+ fail_on_skip: false
+ modules:
+ - tasks.cephfs.test_admin
diff --git a/qa/suites/fs/functional/tasks/alternate-pool.yaml b/qa/suites/fs/functional/tasks/alternate-pool.yaml
new file mode 100644
index 000000000..7a1caa473
--- /dev/null
+++ b/qa/suites/fs/functional/tasks/alternate-pool.yaml
@@ -0,0 +1,19 @@
+overrides:
+ ceph:
+ log-ignorelist:
+ - bad backtrace
+ - object missing on disk
+ - error reading table object
+ - error reading sessionmap
+ - unmatched fragstat
+ - unmatched rstat
+ - was unreadable, recreating it now
+ - Scrub error on inode
+ - Metadata damage detected
+ - MDS_FAILED
+ - MDS_DAMAGE
+
+tasks:
+ - cephfs_test_runner:
+ modules:
+ - tasks.cephfs.test_recovery_pool
diff --git a/qa/suites/fs/functional/tasks/asok_dump_tree.yaml b/qa/suites/fs/functional/tasks/asok_dump_tree.yaml
new file mode 100644
index 000000000..7fa561470
--- /dev/null
+++ b/qa/suites/fs/functional/tasks/asok_dump_tree.yaml
@@ -0,0 +1,4 @@
+tasks:
+- cephfs_test_runner:
+ modules:
+ - tasks.cephfs.test_dump_tree
diff --git a/qa/suites/fs/functional/tasks/auto-repair.yaml b/qa/suites/fs/functional/tasks/auto-repair.yaml
new file mode 100644
index 000000000..1a3ff3efb
--- /dev/null
+++ b/qa/suites/fs/functional/tasks/auto-repair.yaml
@@ -0,0 +1,11 @@
+overrides:
+ ceph:
+ log-ignorelist:
+ - force file system read-only
+ - bad backtrace
+ - MDS in read-only mode
+ - \(MDS_READ_ONLY\)
+tasks:
+ - cephfs_test_runner:
+ modules:
+ - tasks.cephfs.test_auto_repair
diff --git a/qa/suites/fs/functional/tasks/backtrace.yaml b/qa/suites/fs/functional/tasks/backtrace.yaml
new file mode 100644
index 000000000..6d80c32cc
--- /dev/null
+++ b/qa/suites/fs/functional/tasks/backtrace.yaml
@@ -0,0 +1,4 @@
+tasks:
+ - cephfs_test_runner:
+ modules:
+ - tasks.cephfs.test_backtrace
diff --git a/qa/suites/fs/functional/tasks/cap-flush.yaml b/qa/suites/fs/functional/tasks/cap-flush.yaml
new file mode 100644
index 000000000..f063654a9
--- /dev/null
+++ b/qa/suites/fs/functional/tasks/cap-flush.yaml
@@ -0,0 +1,8 @@
+overrides:
+ ceph:
+ log-ignorelist:
+ - Replacing daemon mds.a
+tasks:
+ - cephfs_test_runner:
+ modules:
+ - tasks.cephfs.test_cap_flush
diff --git a/qa/suites/fs/functional/tasks/client-limits.yaml b/qa/suites/fs/functional/tasks/client-limits.yaml
new file mode 100644
index 000000000..b6b3c9858
--- /dev/null
+++ b/qa/suites/fs/functional/tasks/client-limits.yaml
@@ -0,0 +1,18 @@
+overrides:
+ ceph:
+ log-ignorelist:
+ - responding to mclientcaps\(revoke\)
+ - not advance its oldest_client_tid
+ - failing to advance its oldest client/flush tid
+ - Too many inodes in cache
+ - failing to respond to cache pressure
+ - slow requests are blocked
+ - failing to respond to capability release
+ - MDS cache is too large
+ - \(MDS_CLIENT_OLDEST_TID\)
+ - \(MDS_CACHE_OVERSIZED\)
+tasks:
+ - cephfs_test_runner:
+ fail_on_skip: false
+ modules:
+ - tasks.cephfs.test_client_limits
diff --git a/qa/suites/fs/functional/tasks/client-readahead.yaml b/qa/suites/fs/functional/tasks/client-readahead.yaml
new file mode 100644
index 000000000..7c5c850e6
--- /dev/null
+++ b/qa/suites/fs/functional/tasks/client-readahead.yaml
@@ -0,0 +1,5 @@
+tasks:
+ - cephfs_test_runner:
+ fail_on_skip: false
+ modules:
+ - tasks.cephfs.test_readahead
diff --git a/qa/suites/fs/functional/tasks/client-recovery.yaml b/qa/suites/fs/functional/tasks/client-recovery.yaml
new file mode 100644
index 000000000..e67acc3ab
--- /dev/null
+++ b/qa/suites/fs/functional/tasks/client-recovery.yaml
@@ -0,0 +1,16 @@
+# The task interferes with the network, so we need
+# to permit OSDs to complain about that.
+overrides:
+ ceph:
+ log-ignorelist:
+ - evicting unresponsive client
+ - but it is still running
+ - slow request
+ - MDS_CLIENT_LATE_RELEASE
+ - t responding to mclientcaps
+ - file system flag refuse_client_session is set
+tasks:
+ - cephfs_test_runner:
+ fail_on_skip: false
+ modules:
+ - tasks.cephfs.test_client_recovery
diff --git a/qa/suites/fs/functional/tasks/damage.yaml b/qa/suites/fs/functional/tasks/damage.yaml
new file mode 100644
index 000000000..7703aee93
--- /dev/null
+++ b/qa/suites/fs/functional/tasks/damage.yaml
@@ -0,0 +1,27 @@
+overrides:
+ ceph:
+ log-ignorelist:
+ - bad backtrace
+ - object missing on disk
+ - error reading table object
+ - error reading sessionmap
+ - Error loading MDS rank
+ - missing journal object
+ - Error recovering journal
+ - error decoding table object
+ - failed to read JournalPointer
+ - Corrupt directory entry
+ - Corrupt fnode header
+ - corrupt sessionmap header
+ - Corrupt dentry
+ - Scrub error on inode
+ - Metadata damage detected
+ - MDS_READ_ONLY
+ - force file system read-only
+ - with standby daemon mds
+ - MDS abort because newly corrupt dentry
+tasks:
+ - cephfs_test_runner:
+ modules:
+ - tasks.cephfs.test_damage
+
diff --git a/qa/suites/fs/functional/tasks/data-scan.yaml b/qa/suites/fs/functional/tasks/data-scan.yaml
new file mode 100644
index 000000000..b704a0036
--- /dev/null
+++ b/qa/suites/fs/functional/tasks/data-scan.yaml
@@ -0,0 +1,18 @@
+overrides:
+ ceph:
+ log-ignorelist:
+ - bad backtrace
+ - object missing on disk
+ - error reading table object
+ - error reading sessionmap
+ - unmatched fragstat
+ - unmatched rstat
+ - was unreadable, recreating it now
+ - Scrub error on inode
+ - Metadata damage detected
+ - inconsistent rstat on inode
+ - Error recovering journal
+tasks:
+ - cephfs_test_runner:
+ modules:
+ - tasks.cephfs.test_data_scan
diff --git a/qa/suites/fs/functional/tasks/exports.yaml b/qa/suites/fs/functional/tasks/exports.yaml
new file mode 100644
index 000000000..76819fee9
--- /dev/null
+++ b/qa/suites/fs/functional/tasks/exports.yaml
@@ -0,0 +1,9 @@
+overrides:
+ ceph:
+ log-ignorelist:
+ - Replacing daemon mds
+tasks:
+- cephfs_test_runner:
+ fail_on_skip: false
+ modules:
+ - tasks.cephfs.test_exports
diff --git a/qa/suites/fs/functional/tasks/forward-scrub.yaml b/qa/suites/fs/functional/tasks/forward-scrub.yaml
new file mode 100644
index 000000000..961d25db0
--- /dev/null
+++ b/qa/suites/fs/functional/tasks/forward-scrub.yaml
@@ -0,0 +1,13 @@
+overrides:
+ ceph:
+ log-ignorelist:
+ - inode wrongly marked free
+ - bad backtrace on inode
+ - inode table repaired for inode
+ - Scrub error on inode
+ - Scrub error on dir
+ - Metadata damage detected
+tasks:
+ - cephfs_test_runner:
+ modules:
+ - tasks.cephfs.test_forward_scrub
diff --git a/qa/suites/fs/functional/tasks/fragment.yaml b/qa/suites/fs/functional/tasks/fragment.yaml
new file mode 100644
index 000000000..482caad85
--- /dev/null
+++ b/qa/suites/fs/functional/tasks/fragment.yaml
@@ -0,0 +1,5 @@
+
+tasks:
+ - cephfs_test_runner:
+ modules:
+ - tasks.cephfs.test_fragment
diff --git a/qa/suites/fs/functional/tasks/journal-repair.yaml b/qa/suites/fs/functional/tasks/journal-repair.yaml
new file mode 100644
index 000000000..0dae6143c
--- /dev/null
+++ b/qa/suites/fs/functional/tasks/journal-repair.yaml
@@ -0,0 +1,13 @@
+overrides:
+ ceph:
+ log-ignorelist:
+ - bad backtrace on directory inode
+ - error reading table object
+ - Metadata damage detected
+ - slow requests are blocked
+ - Behind on trimming
+ - error reading sessionmap
+tasks:
+ - cephfs_test_runner:
+ modules:
+ - tasks.cephfs.test_journal_repair
diff --git a/qa/suites/fs/functional/tasks/mds-flush.yaml b/qa/suites/fs/functional/tasks/mds-flush.yaml
new file mode 100644
index 000000000..be8c4bee6
--- /dev/null
+++ b/qa/suites/fs/functional/tasks/mds-flush.yaml
@@ -0,0 +1,4 @@
+tasks:
+ - cephfs_test_runner:
+ modules:
+ - tasks.cephfs.test_flush
diff --git a/qa/suites/fs/functional/tasks/mds-full.yaml b/qa/suites/fs/functional/tasks/mds-full.yaml
new file mode 100644
index 000000000..9399890c4
--- /dev/null
+++ b/qa/suites/fs/functional/tasks/mds-full.yaml
@@ -0,0 +1,38 @@
+overrides:
+ ceph:
+ cephfs:
+ ec_profile:
+ - disabled
+ log-ignorelist:
+ - OSD full dropping all updates
+ - OSD near full
+ - pausewr flag
+ - failsafe engaged, dropping updates
+ - failsafe disengaged, no longer dropping
+ - is full \(reached quota
+ - POOL_FULL
+ - POOL_BACKFILLFULL
+ - PG_RECOVERY_FULL
+ - PG_DEGRADED
+ conf:
+ mon:
+ mon osd nearfull ratio: 0.6
+ mon osd backfillfull ratio: 0.6
+ mon osd full ratio: 0.7
+ osd:
+ osd mon report interval: 5
+ osd objectstore: memstore
+ osd failsafe full ratio: 1.0
+ memstore device bytes: 200000000
+ client.0:
+ debug client: 20
+ debug objecter: 20
+ debug objectcacher: 20
+ client.1:
+ debug client: 20
+ debug objecter: 20
+ debug objectcacher: 20
+tasks:
+ - cephfs_test_runner:
+ modules:
+ - tasks.cephfs.test_full
diff --git a/qa/suites/fs/functional/tasks/mds_creation_retry.yaml b/qa/suites/fs/functional/tasks/mds_creation_retry.yaml
new file mode 100644
index 000000000..fd23aa8ba
--- /dev/null
+++ b/qa/suites/fs/functional/tasks/mds_creation_retry.yaml
@@ -0,0 +1,6 @@
+tasks:
+-mds_creation_failure:
+- workunit:
+ clients:
+ all: [fs/misc/trivial_sync.sh]
+
diff --git a/qa/suites/fs/functional/tasks/metrics.yaml b/qa/suites/fs/functional/tasks/metrics.yaml
new file mode 100644
index 000000000..7e5ac4150
--- /dev/null
+++ b/qa/suites/fs/functional/tasks/metrics.yaml
@@ -0,0 +1,5 @@
+tasks:
+- cephfs_test_runner:
+ fail_on_skip: false
+ modules:
+ - tasks.cephfs.test_mds_metrics
diff --git a/qa/suites/fs/functional/tasks/multimds_misc.yaml b/qa/suites/fs/functional/tasks/multimds_misc.yaml
new file mode 100644
index 000000000..8cdf90310
--- /dev/null
+++ b/qa/suites/fs/functional/tasks/multimds_misc.yaml
@@ -0,0 +1,9 @@
+overrides:
+ ceph:
+ log-ignorelist:
+ - Scrub error on inode
+
+tasks:
+- cephfs_test_runner:
+ modules:
+ - tasks.cephfs.test_multimds_misc
diff --git a/qa/suites/fs/functional/tasks/openfiletable.yaml b/qa/suites/fs/functional/tasks/openfiletable.yaml
new file mode 100644
index 000000000..20cfa4f37
--- /dev/null
+++ b/qa/suites/fs/functional/tasks/openfiletable.yaml
@@ -0,0 +1,4 @@
+tasks:
+ - cephfs_test_runner:
+ modules:
+ - tasks.cephfs.test_openfiletable
diff --git a/qa/suites/fs/functional/tasks/pool-perm.yaml b/qa/suites/fs/functional/tasks/pool-perm.yaml
new file mode 100644
index 000000000..41392fe51
--- /dev/null
+++ b/qa/suites/fs/functional/tasks/pool-perm.yaml
@@ -0,0 +1,4 @@
+tasks:
+ - cephfs_test_runner:
+ modules:
+ - tasks.cephfs.test_pool_perm
diff --git a/qa/suites/fs/functional/tasks/quota.yaml b/qa/suites/fs/functional/tasks/quota.yaml
new file mode 100644
index 000000000..d44021e48
--- /dev/null
+++ b/qa/suites/fs/functional/tasks/quota.yaml
@@ -0,0 +1,4 @@
+tasks:
+ - cephfs_test_runner:
+ modules:
+ - tasks.cephfs.test_quota
diff --git a/qa/suites/fs/functional/tasks/recovery-fs.yaml b/qa/suites/fs/functional/tasks/recovery-fs.yaml
new file mode 100644
index 000000000..d354e9fbe
--- /dev/null
+++ b/qa/suites/fs/functional/tasks/recovery-fs.yaml
@@ -0,0 +1,4 @@
+tasks:
+- cephfs_test_runner:
+ modules:
+ - tasks.cephfs.test_recovery_fs
diff --git a/qa/suites/fs/functional/tasks/scrub.yaml b/qa/suites/fs/functional/tasks/scrub.yaml
new file mode 100644
index 000000000..09e666849
--- /dev/null
+++ b/qa/suites/fs/functional/tasks/scrub.yaml
@@ -0,0 +1,19 @@
+overrides:
+ ceph:
+ log-ignorelist:
+ - Replacing daemon mds
+ - Scrub error on inode
+ - Behind on trimming
+ - Metadata damage detected
+ - bad backtrace on inode
+ - overall HEALTH_
+ - \(MDS_TRIM\)
+ conf:
+ mds:
+ mds log max segments: 1
+ mds cache max size: 1000
+tasks:
+- cephfs_test_runner:
+ modules:
+ - tasks.cephfs.test_scrub_checks
+ - tasks.cephfs.test_scrub
diff --git a/qa/suites/fs/functional/tasks/sessionmap.yaml b/qa/suites/fs/functional/tasks/sessionmap.yaml
new file mode 100644
index 000000000..c12632e77
--- /dev/null
+++ b/qa/suites/fs/functional/tasks/sessionmap.yaml
@@ -0,0 +1,9 @@
+overrides:
+ ceph:
+ log-ignorelist:
+ - client session with non-allowable root
+tasks:
+ - cephfs_test_runner:
+ fail_on_skip: false
+ modules:
+ - tasks.cephfs.test_sessionmap
diff --git a/qa/suites/fs/functional/tasks/snap-schedule.yaml b/qa/suites/fs/functional/tasks/snap-schedule.yaml
new file mode 100644
index 000000000..f2e62b050
--- /dev/null
+++ b/qa/suites/fs/functional/tasks/snap-schedule.yaml
@@ -0,0 +1,22 @@
+overrides:
+ ceph:
+ conf:
+ mgr:
+ debug mgr: 20
+ debug ms: 1
+ debug finisher: 20
+ debug client: 20
+ log-whitelist:
+ - OSD full dropping all updates
+ - OSD near full
+ - pausewr flag
+ - failsafe engaged, dropping updates
+ - failsafe disengaged, no longer dropping
+ - is full \(reached quota
+ - POOL_FULL
+ - POOL_BACKFILLFULL
+
+tasks:
+ - cephfs_test_runner:
+ modules:
+ - tasks.cephfs.test_snap_schedules
diff --git a/qa/suites/fs/functional/tasks/snap_schedule_snapdir.yaml b/qa/suites/fs/functional/tasks/snap_schedule_snapdir.yaml
new file mode 100644
index 000000000..7bbcf000f
--- /dev/null
+++ b/qa/suites/fs/functional/tasks/snap_schedule_snapdir.yaml
@@ -0,0 +1,30 @@
+overrides:
+ ceph:
+ conf:
+ mgr:
+ debug mgr: 20
+ debug ms: 1
+ debug finisher: 20
+ debug client: 20
+ log-whitelist:
+ - OSD full dropping all updates
+ - OSD near full
+ - pausewr flag
+ - failsafe engaged, dropping updates
+ - failsafe disengaged, no longer dropping
+ - is full \(reached quota
+ - POOL_FULL
+ - POOL_BACKFILLFULL
+
+overrides:
+ kclient:
+ snapdirname: .customsnapkernel
+ ceph:
+ conf:
+ client:
+ client snapdir: .customsnapfuse
+
+tasks:
+ - cephfs_test_runner:
+ modules:
+ - tasks.cephfs.test_snap_schedules.TestSnapSchedulesSnapdir
diff --git a/qa/suites/fs/functional/tasks/snapshots.yaml b/qa/suites/fs/functional/tasks/snapshots.yaml
new file mode 100644
index 000000000..d5951468b
--- /dev/null
+++ b/qa/suites/fs/functional/tasks/snapshots.yaml
@@ -0,0 +1,16 @@
+overrides:
+ check-counter:
+ dry_run: true
+ ceph:
+ log-ignorelist:
+ - evicting unresponsive client
+ - RECENT_CRASH
+
+tasks:
+- exec:
+ mon.a:
+ - ceph config set mgr mgr/crash/warn_recent_interval 0
+- cephfs_test_runner:
+ fail_on_skip: false
+ modules:
+ - tasks.cephfs.test_snapshots
diff --git a/qa/suites/fs/functional/tasks/strays.yaml b/qa/suites/fs/functional/tasks/strays.yaml
new file mode 100644
index 000000000..3866ce510
--- /dev/null
+++ b/qa/suites/fs/functional/tasks/strays.yaml
@@ -0,0 +1,4 @@
+tasks:
+ - cephfs_test_runner:
+ modules:
+ - tasks.cephfs.test_strays
diff --git a/qa/suites/fs/functional/tasks/test_journal_migration.yaml b/qa/suites/fs/functional/tasks/test_journal_migration.yaml
new file mode 100644
index 000000000..f5c4dbc70
--- /dev/null
+++ b/qa/suites/fs/functional/tasks/test_journal_migration.yaml
@@ -0,0 +1,4 @@
+tasks:
+- cephfs_test_runner:
+ modules:
+ - tasks.cephfs.test_journal_migration
diff --git a/qa/suites/fs/functional/tasks/truncate_delay.yaml b/qa/suites/fs/functional/tasks/truncate_delay.yaml
new file mode 100644
index 000000000..acd1a5a04
--- /dev/null
+++ b/qa/suites/fs/functional/tasks/truncate_delay.yaml
@@ -0,0 +1,14 @@
+overrides:
+ ceph:
+ conf:
+ client:
+ ms_inject_delay_probability: 1
+ ms_inject_delay_type: osd
+ ms_inject_delay_max: 5
+ client_oc_max_dirty_age: 1
+tasks:
+- exec:
+ client.0:
+ - cd $TESTDIR/mnt.0 && dd if=/dev/zero of=./foo count=100
+ - sleep 2
+ - cd $TESTDIR/mnt.0 && truncate --size 0 ./foo
diff --git a/qa/suites/fs/functional/tasks/workunit/.qa b/qa/suites/fs/functional/tasks/workunit/.qa
new file mode 120000
index 000000000..a602a0353
--- /dev/null
+++ b/qa/suites/fs/functional/tasks/workunit/.qa
@@ -0,0 +1 @@
+../.qa/ \ No newline at end of file
diff --git a/qa/suites/fs/functional/tasks/workunit/dir-max-entries.yaml b/qa/suites/fs/functional/tasks/workunit/dir-max-entries.yaml
new file mode 100644
index 000000000..087dcc3d5
--- /dev/null
+++ b/qa/suites/fs/functional/tasks/workunit/dir-max-entries.yaml
@@ -0,0 +1,5 @@
+tasks:
+- workunit:
+ clients:
+ client.0:
+ - fs/maxentries
diff --git a/qa/suites/fs/functional/tasks/workunit/quota.yaml b/qa/suites/fs/functional/tasks/workunit/quota.yaml
new file mode 100644
index 000000000..7ac8714c5
--- /dev/null
+++ b/qa/suites/fs/functional/tasks/workunit/quota.yaml
@@ -0,0 +1,5 @@
+tasks:
+- workunit:
+ clients:
+ all:
+ - fs/quota
diff --git a/qa/suites/fs/libcephfs/% b/qa/suites/fs/libcephfs/%
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/qa/suites/fs/libcephfs/%
diff --git a/qa/suites/fs/libcephfs/.qa b/qa/suites/fs/libcephfs/.qa
new file mode 120000
index 000000000..a602a0353
--- /dev/null
+++ b/qa/suites/fs/libcephfs/.qa
@@ -0,0 +1 @@
+../.qa/ \ No newline at end of file
diff --git a/qa/suites/fs/libcephfs/begin b/qa/suites/fs/libcephfs/begin
new file mode 120000
index 000000000..77af91f7d
--- /dev/null
+++ b/qa/suites/fs/libcephfs/begin
@@ -0,0 +1 @@
+.qa/cephfs/begin/ \ No newline at end of file
diff --git a/qa/suites/fs/libcephfs/clusters/.qa b/qa/suites/fs/libcephfs/clusters/.qa
new file mode 120000
index 000000000..a602a0353
--- /dev/null
+++ b/qa/suites/fs/libcephfs/clusters/.qa
@@ -0,0 +1 @@
+../.qa/ \ No newline at end of file
diff --git a/qa/suites/fs/libcephfs/clusters/1-mds-1-client-coloc.yaml b/qa/suites/fs/libcephfs/clusters/1-mds-1-client-coloc.yaml
new file mode 120000
index 000000000..d15ecfda0
--- /dev/null
+++ b/qa/suites/fs/libcephfs/clusters/1-mds-1-client-coloc.yaml
@@ -0,0 +1 @@
+.qa/cephfs/clusters/1-mds-1-client-coloc.yaml \ No newline at end of file
diff --git a/qa/suites/fs/libcephfs/conf b/qa/suites/fs/libcephfs/conf
new file mode 120000
index 000000000..16e8cc44b
--- /dev/null
+++ b/qa/suites/fs/libcephfs/conf
@@ -0,0 +1 @@
+.qa/cephfs/conf \ No newline at end of file
diff --git a/qa/suites/fs/libcephfs/distro b/qa/suites/fs/libcephfs/distro
new file mode 120000
index 000000000..0862b4457
--- /dev/null
+++ b/qa/suites/fs/libcephfs/distro
@@ -0,0 +1 @@
+.qa/distros/supported-random-distro$ \ No newline at end of file
diff --git a/qa/suites/fs/libcephfs/objectstore/.qa b/qa/suites/fs/libcephfs/objectstore/.qa
new file mode 120000
index 000000000..a602a0353
--- /dev/null
+++ b/qa/suites/fs/libcephfs/objectstore/.qa
@@ -0,0 +1 @@
+../.qa/ \ No newline at end of file
diff --git a/qa/suites/fs/libcephfs/objectstore/bluestore-bitmap.yaml b/qa/suites/fs/libcephfs/objectstore/bluestore-bitmap.yaml
new file mode 120000
index 000000000..a59cf5175
--- /dev/null
+++ b/qa/suites/fs/libcephfs/objectstore/bluestore-bitmap.yaml
@@ -0,0 +1 @@
+.qa/objectstore/bluestore-bitmap.yaml \ No newline at end of file
diff --git a/qa/suites/fs/libcephfs/overrides/+ b/qa/suites/fs/libcephfs/overrides/+
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/qa/suites/fs/libcephfs/overrides/+
diff --git a/qa/suites/fs/libcephfs/overrides/.qa b/qa/suites/fs/libcephfs/overrides/.qa
new file mode 120000
index 000000000..a602a0353
--- /dev/null
+++ b/qa/suites/fs/libcephfs/overrides/.qa
@@ -0,0 +1 @@
+../.qa/ \ No newline at end of file
diff --git a/qa/suites/fs/libcephfs/overrides/ignorelist_health.yaml b/qa/suites/fs/libcephfs/overrides/ignorelist_health.yaml
new file mode 120000
index 000000000..5cb891a95
--- /dev/null
+++ b/qa/suites/fs/libcephfs/overrides/ignorelist_health.yaml
@@ -0,0 +1 @@
+.qa/cephfs/overrides/ignorelist_health.yaml \ No newline at end of file
diff --git a/qa/suites/fs/libcephfs/overrides/ignorelist_wrongly_marked_down.yaml b/qa/suites/fs/libcephfs/overrides/ignorelist_wrongly_marked_down.yaml
new file mode 120000
index 000000000..f317cb714
--- /dev/null
+++ b/qa/suites/fs/libcephfs/overrides/ignorelist_wrongly_marked_down.yaml
@@ -0,0 +1 @@
+.qa/cephfs/overrides/ignorelist_wrongly_marked_down.yaml \ No newline at end of file
diff --git a/qa/suites/fs/libcephfs/overrides/no_client_pidfile.yaml b/qa/suites/fs/libcephfs/overrides/no_client_pidfile.yaml
new file mode 120000
index 000000000..8888f3327
--- /dev/null
+++ b/qa/suites/fs/libcephfs/overrides/no_client_pidfile.yaml
@@ -0,0 +1 @@
+.qa/overrides/no_client_pidfile.yaml \ No newline at end of file
diff --git a/qa/suites/fs/libcephfs/tasks/.qa b/qa/suites/fs/libcephfs/tasks/.qa
new file mode 120000
index 000000000..a602a0353
--- /dev/null
+++ b/qa/suites/fs/libcephfs/tasks/.qa
@@ -0,0 +1 @@
+../.qa/ \ No newline at end of file
diff --git a/qa/suites/fs/libcephfs/tasks/client.yaml b/qa/suites/fs/libcephfs/tasks/client.yaml
new file mode 100644
index 000000000..bfdfee4a8
--- /dev/null
+++ b/qa/suites/fs/libcephfs/tasks/client.yaml
@@ -0,0 +1,14 @@
+overrides:
+ ceph:
+ conf:
+ client:
+ debug ms: 1
+ debug client: 20
+ mds:
+ debug ms: 1
+ debug mds: 20
+tasks:
+- workunit:
+ clients:
+ client.0:
+ - client/test.sh
diff --git a/qa/suites/fs/libcephfs/tasks/ino_release_cb.yaml b/qa/suites/fs/libcephfs/tasks/ino_release_cb.yaml
new file mode 100644
index 000000000..5b5247489
--- /dev/null
+++ b/qa/suites/fs/libcephfs/tasks/ino_release_cb.yaml
@@ -0,0 +1,19 @@
+overrides:
+ ceph:
+ conf:
+ client:
+ debug ms: 1
+ debug client: 20
+ mds:
+ debug ms: 1
+ debug mds: 20
+tasks:
+- exec:
+ mon.a:
+ - ceph config set mds mds_min_caps_per_client 1
+- background_exec:
+ mon.a:
+ - "sleep 30 && ceph config set mds mds_max_caps_per_client 1"
+- exec:
+ client.0:
+ - ceph_test_ino_release_cb
diff --git a/qa/suites/fs/libcephfs/tasks/libcephfs/+ b/qa/suites/fs/libcephfs/tasks/libcephfs/+
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/qa/suites/fs/libcephfs/tasks/libcephfs/+
diff --git a/qa/suites/fs/libcephfs/tasks/libcephfs/.qa b/qa/suites/fs/libcephfs/tasks/libcephfs/.qa
new file mode 120000
index 000000000..a602a0353
--- /dev/null
+++ b/qa/suites/fs/libcephfs/tasks/libcephfs/.qa
@@ -0,0 +1 @@
+../.qa/ \ No newline at end of file
diff --git a/qa/suites/fs/libcephfs/tasks/libcephfs/frag.yaml b/qa/suites/fs/libcephfs/tasks/libcephfs/frag.yaml
new file mode 120000
index 000000000..5e5cdaed8
--- /dev/null
+++ b/qa/suites/fs/libcephfs/tasks/libcephfs/frag.yaml
@@ -0,0 +1 @@
+.qa/cephfs/overrides/frag.yaml \ No newline at end of file
diff --git a/qa/suites/fs/libcephfs/tasks/libcephfs/test.yaml b/qa/suites/fs/libcephfs/tasks/libcephfs/test.yaml
new file mode 100644
index 000000000..70afa2da3
--- /dev/null
+++ b/qa/suites/fs/libcephfs/tasks/libcephfs/test.yaml
@@ -0,0 +1,18 @@
+overrides:
+ ceph:
+ conf:
+ client:
+ debug ms: 1
+ debug client: 20
+ mds:
+ debug ms: 1
+ debug mds: 20
+tasks:
+- check-counter:
+ counters:
+ mds:
+ - "mds.dir_split"
+- workunit:
+ clients:
+ client.0:
+ - libcephfs/test.sh
diff --git a/qa/suites/fs/libcephfs/tasks/libcephfs_python.yaml b/qa/suites/fs/libcephfs/tasks/libcephfs_python.yaml
new file mode 100644
index 000000000..68ccd579c
--- /dev/null
+++ b/qa/suites/fs/libcephfs/tasks/libcephfs_python.yaml
@@ -0,0 +1,17 @@
+overrides:
+ ceph-fuse:
+ disabled: true
+ kclient:
+ disabled: true
+ install:
+ ceph:
+ extra_system_packages:
+ deb:
+ - python3-pytest
+ rpm:
+ - python3-pytest
+tasks:
+- workunit:
+ clients:
+ client.0:
+ - fs/test_python.sh
diff --git a/qa/suites/fs/mirror-ha/% b/qa/suites/fs/mirror-ha/%
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/qa/suites/fs/mirror-ha/%
diff --git a/qa/suites/fs/mirror-ha/.qa b/qa/suites/fs/mirror-ha/.qa
new file mode 120000
index 000000000..a602a0353
--- /dev/null
+++ b/qa/suites/fs/mirror-ha/.qa
@@ -0,0 +1 @@
+../.qa/ \ No newline at end of file
diff --git a/qa/suites/fs/mirror-ha/begin b/qa/suites/fs/mirror-ha/begin
new file mode 120000
index 000000000..77af91f7d
--- /dev/null
+++ b/qa/suites/fs/mirror-ha/begin
@@ -0,0 +1 @@
+.qa/cephfs/begin/ \ No newline at end of file
diff --git a/qa/suites/fs/mirror-ha/cephfs-mirror/+ b/qa/suites/fs/mirror-ha/cephfs-mirror/+
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/qa/suites/fs/mirror-ha/cephfs-mirror/+
diff --git a/qa/suites/fs/mirror-ha/cephfs-mirror/.qa b/qa/suites/fs/mirror-ha/cephfs-mirror/.qa
new file mode 120000
index 000000000..a602a0353
--- /dev/null
+++ b/qa/suites/fs/mirror-ha/cephfs-mirror/.qa
@@ -0,0 +1 @@
+../.qa/ \ No newline at end of file
diff --git a/qa/suites/fs/mirror-ha/cephfs-mirror/1-volume-create-rm.yaml b/qa/suites/fs/mirror-ha/cephfs-mirror/1-volume-create-rm.yaml
new file mode 100644
index 000000000..4ee16e1c9
--- /dev/null
+++ b/qa/suites/fs/mirror-ha/cephfs-mirror/1-volume-create-rm.yaml
@@ -0,0 +1,14 @@
+meta:
+- desc: create/rm volumes and set configs
+
+tasks:
+ - exec:
+ mon.a:
+ - "ceph fs volume create dc"
+ - "ceph fs volume create dc-backup"
+ - full_sequential_finally:
+ - exec:
+ mon.a:
+ - ceph config set mon mon_allow_pool_delete true
+ - ceph fs volume rm dc --yes-i-really-mean-it
+ - ceph fs volume rm dc-backup --yes-i-really-mean-it
diff --git a/qa/suites/fs/mirror-ha/cephfs-mirror/2-three-per-cluster.yaml b/qa/suites/fs/mirror-ha/cephfs-mirror/2-three-per-cluster.yaml
new file mode 100644
index 000000000..095f0893a
--- /dev/null
+++ b/qa/suites/fs/mirror-ha/cephfs-mirror/2-three-per-cluster.yaml
@@ -0,0 +1,12 @@
+meta:
+- desc: run one cephfs-mirror daemon on primary cluster
+tasks:
+- cephfs-mirror:
+ client: client.mirror1
+ run_in_foreground: True
+- cephfs-mirror:
+ client: client.mirror2
+ run_in_foreground: True
+- cephfs-mirror:
+ client: client.mirror3
+ run_in_foreground: True
diff --git a/qa/suites/fs/mirror-ha/clients/+ b/qa/suites/fs/mirror-ha/clients/+
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/qa/suites/fs/mirror-ha/clients/+
diff --git a/qa/suites/fs/mirror-ha/clients/.qa b/qa/suites/fs/mirror-ha/clients/.qa
new file mode 120000
index 000000000..a602a0353
--- /dev/null
+++ b/qa/suites/fs/mirror-ha/clients/.qa
@@ -0,0 +1 @@
+../.qa/ \ No newline at end of file
diff --git a/qa/suites/fs/mirror-ha/clients/mirror.yaml b/qa/suites/fs/mirror-ha/clients/mirror.yaml
new file mode 100644
index 000000000..620c821e1
--- /dev/null
+++ b/qa/suites/fs/mirror-ha/clients/mirror.yaml
@@ -0,0 +1,32 @@
+meta:
+- desc: configure the permissions for client.mirror
+overrides:
+ ceph:
+ conf:
+ client:
+ debug cephfs_mirror: 20
+ log to stderr: false
+ # make these predictable
+ client.mirror1:
+ admin socket: /var/run/ceph/cephfs-mirror1.asok
+ pid file: /var/run/ceph/cephfs-mirror1.pid
+ client.mirror2:
+ admin socket: /var/run/ceph/cephfs-mirror2.asok
+ pid file: /var/run/ceph/cephfs-mirror2.pid
+ client.mirror3:
+ admin socket: /var/run/ceph/cephfs-mirror3.asok
+ pid file: /var/run/ceph/cephfs-mirror3.pid
+tasks:
+- exec:
+ client.mirror1:
+ - "sudo ceph auth caps client.mirror1 mon 'profile cephfs-mirror' mds 'allow r' osd 'allow rw tag cephfs metadata=*, allow r tag cephfs data=*' mgr 'allow r'"
+ client.mirror2:
+ - "sudo ceph auth caps client.mirror2 mon 'profile cephfs-mirror' mds 'allow r' osd 'allow rw tag cephfs metadata=*, allow r tag cephfs data=*' mgr 'allow r'"
+ client.mirror3:
+ - "sudo ceph auth caps client.mirror3 mon 'profile cephfs-mirror' mds 'allow r' osd 'allow rw tag cephfs metadata=*, allow r tag cephfs data=*' mgr 'allow r'"
+ client.mirror_remote:
+ - "sudo ceph auth caps client.mirror_remote mon 'allow r' mds 'allow rwps' osd 'allow rw tag cephfs *=*' mgr 'allow r'"
+ client.1:
+ - "sudo ceph auth caps client.0 mon 'allow r' mds 'allow rwps' osd 'allow rw tag cephfs *=*' mgr 'allow r'"
+ client.2:
+ - "sudo ceph auth caps client.1 mon 'allow r' mds 'allow rwps' osd 'allow rw tag cephfs *=*' mgr 'allow r'"
diff --git a/qa/suites/fs/mirror-ha/cluster/+ b/qa/suites/fs/mirror-ha/cluster/+
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/qa/suites/fs/mirror-ha/cluster/+
diff --git a/qa/suites/fs/mirror-ha/cluster/.qa b/qa/suites/fs/mirror-ha/cluster/.qa
new file mode 120000
index 000000000..a602a0353
--- /dev/null
+++ b/qa/suites/fs/mirror-ha/cluster/.qa
@@ -0,0 +1 @@
+../.qa/ \ No newline at end of file
diff --git a/qa/suites/fs/mirror-ha/cluster/1-node.yaml b/qa/suites/fs/mirror-ha/cluster/1-node.yaml
new file mode 100644
index 000000000..cc70c106d
--- /dev/null
+++ b/qa/suites/fs/mirror-ha/cluster/1-node.yaml
@@ -0,0 +1,20 @@
+meta:
+- desc: 1 ceph cluster with 1 mon, 1 mgr, 3 osds, 5 mdss
+roles:
+- - mon.a
+ - mgr.x
+ - mds.a
+ - mds.b
+ - mds.c
+ - mds.d
+ - mds.e
+ - osd.0
+ - osd.1
+ - osd.2
+ - client.0
+ - client.1
+ - client.2
+ - client.mirror1
+ - client.mirror2
+ - client.mirror3
+ - client.mirror_remote \ No newline at end of file
diff --git a/qa/suites/fs/mirror-ha/objectstore/.qa b/qa/suites/fs/mirror-ha/objectstore/.qa
new file mode 120000
index 000000000..a602a0353
--- /dev/null
+++ b/qa/suites/fs/mirror-ha/objectstore/.qa
@@ -0,0 +1 @@
+../.qa/ \ No newline at end of file
diff --git a/qa/suites/fs/mirror-ha/objectstore/bluestore-bitmap.yaml b/qa/suites/fs/mirror-ha/objectstore/bluestore-bitmap.yaml
new file mode 120000
index 000000000..a59cf5175
--- /dev/null
+++ b/qa/suites/fs/mirror-ha/objectstore/bluestore-bitmap.yaml
@@ -0,0 +1 @@
+.qa/objectstore/bluestore-bitmap.yaml \ No newline at end of file
diff --git a/qa/suites/fs/mirror-ha/overrides/+ b/qa/suites/fs/mirror-ha/overrides/+
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/qa/suites/fs/mirror-ha/overrides/+
diff --git a/qa/suites/fs/mirror-ha/overrides/.qa b/qa/suites/fs/mirror-ha/overrides/.qa
new file mode 120000
index 000000000..a602a0353
--- /dev/null
+++ b/qa/suites/fs/mirror-ha/overrides/.qa
@@ -0,0 +1 @@
+../.qa/ \ No newline at end of file
diff --git a/qa/suites/fs/mirror-ha/overrides/whitelist_health.yaml b/qa/suites/fs/mirror-ha/overrides/whitelist_health.yaml
new file mode 100644
index 000000000..d40fa4cb8
--- /dev/null
+++ b/qa/suites/fs/mirror-ha/overrides/whitelist_health.yaml
@@ -0,0 +1,14 @@
+overrides:
+ ceph:
+ log-ignorelist:
+ - overall HEALTH_
+ - \(FS_DEGRADED\)
+ - \(MDS_FAILED\)
+ - \(MDS_DEGRADED\)
+ - \(FS_WITH_FAILED_MDS\)
+ - \(MDS_DAMAGE\)
+ - \(MDS_ALL_DOWN\)
+ - \(MDS_UP_LESS_THAN_MAX\)
+ - \(FS_INLINE_DATA_DEPRECATED\)
+ - Reduced data availability
+ - Degraded data redundancy
diff --git a/qa/suites/fs/mirror-ha/supported-random-distro$ b/qa/suites/fs/mirror-ha/supported-random-distro$
new file mode 120000
index 000000000..0862b4457
--- /dev/null
+++ b/qa/suites/fs/mirror-ha/supported-random-distro$
@@ -0,0 +1 @@
+.qa/distros/supported-random-distro$ \ No newline at end of file
diff --git a/qa/suites/fs/mirror-ha/workloads/.qa b/qa/suites/fs/mirror-ha/workloads/.qa
new file mode 120000
index 000000000..a602a0353
--- /dev/null
+++ b/qa/suites/fs/mirror-ha/workloads/.qa
@@ -0,0 +1 @@
+../.qa/ \ No newline at end of file
diff --git a/qa/suites/fs/mirror-ha/workloads/cephfs-mirror-ha-workunit.yaml b/qa/suites/fs/mirror-ha/workloads/cephfs-mirror-ha-workunit.yaml
new file mode 100644
index 000000000..ce4dddf78
--- /dev/null
+++ b/qa/suites/fs/mirror-ha/workloads/cephfs-mirror-ha-workunit.yaml
@@ -0,0 +1,33 @@
+meta:
+- desc: run the cephfs_mirror_ha.sh workunit to test cephfs-mirror daemon in HA active/active mode
+
+overrides:
+ ceph:
+ conf:
+ mgr:
+ debug client: 10
+
+tasks:
+ - ceph-fuse:
+ client.1:
+ cephfs_name: dc
+ client.2:
+ cephfs_name: dc-backup
+ - cephfs_mirror_thrash:
+ randomize: False
+ max_thrash_delay: 10
+ - workunit:
+ subdir: mirror
+ cleanup: False
+ clients:
+ client.1: [fs/cephfs_mirror_ha_gen.sh]
+ timeout: 1h
+ - exec:
+ client.2:
+ - "echo verifying synchronized snapshots..."
+ - workunit:
+ subdir: mirror
+ cleanup: False
+ clients:
+ client.2: [fs/cephfs_mirror_ha_verify.sh]
+ timeout: 3h \ No newline at end of file
diff --git a/qa/suites/fs/mirror/% b/qa/suites/fs/mirror/%
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/qa/suites/fs/mirror/%
diff --git a/qa/suites/fs/mirror/.qa b/qa/suites/fs/mirror/.qa
new file mode 120000
index 000000000..a602a0353
--- /dev/null
+++ b/qa/suites/fs/mirror/.qa
@@ -0,0 +1 @@
+../.qa/ \ No newline at end of file
diff --git a/qa/suites/fs/mirror/begin b/qa/suites/fs/mirror/begin
new file mode 120000
index 000000000..77af91f7d
--- /dev/null
+++ b/qa/suites/fs/mirror/begin
@@ -0,0 +1 @@
+.qa/cephfs/begin/ \ No newline at end of file
diff --git a/qa/suites/fs/mirror/cephfs-mirror/.qa b/qa/suites/fs/mirror/cephfs-mirror/.qa
new file mode 120000
index 000000000..a602a0353
--- /dev/null
+++ b/qa/suites/fs/mirror/cephfs-mirror/.qa
@@ -0,0 +1 @@
+../.qa/ \ No newline at end of file
diff --git a/qa/suites/fs/mirror/cephfs-mirror/one-per-cluster.yaml b/qa/suites/fs/mirror/cephfs-mirror/one-per-cluster.yaml
new file mode 100644
index 000000000..c355a9db5
--- /dev/null
+++ b/qa/suites/fs/mirror/cephfs-mirror/one-per-cluster.yaml
@@ -0,0 +1,5 @@
+meta:
+- desc: run one cephfs-mirror daemon on primary cluster
+tasks:
+- cephfs-mirror:
+ client: client.mirror
diff --git a/qa/suites/fs/mirror/clients/+ b/qa/suites/fs/mirror/clients/+
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/qa/suites/fs/mirror/clients/+
diff --git a/qa/suites/fs/mirror/clients/.qa b/qa/suites/fs/mirror/clients/.qa
new file mode 120000
index 000000000..a602a0353
--- /dev/null
+++ b/qa/suites/fs/mirror/clients/.qa
@@ -0,0 +1 @@
+../.qa/ \ No newline at end of file
diff --git a/qa/suites/fs/mirror/clients/mirror.yaml b/qa/suites/fs/mirror/clients/mirror.yaml
new file mode 100644
index 000000000..1a68fea8b
--- /dev/null
+++ b/qa/suites/fs/mirror/clients/mirror.yaml
@@ -0,0 +1,18 @@
+meta:
+- desc: configure the permissions for client.mirror
+overrides:
+ ceph:
+ conf:
+ client:
+ debug cephfs_mirror: 20
+ log to stderr: false
+ # make these predictable
+ client.mirror:
+ admin socket: /var/run/ceph/cephfs-mirror.asok
+ pid file: /var/run/ceph/cephfs-mirror.pid
+tasks:
+- exec:
+ client.mirror:
+ - "sudo ceph auth caps client.mirror mon 'profile cephfs-mirror' mds 'allow r' osd 'allow rw tag cephfs metadata=*, allow r tag cephfs data=*' mgr 'allow r'"
+ client.mirror_remote:
+ - "sudo ceph auth caps client.mirror_remote mon 'allow r' mds 'allow rwps' osd 'allow rw tag cephfs *=*' mgr 'allow r'"
diff --git a/qa/suites/fs/mirror/cluster/+ b/qa/suites/fs/mirror/cluster/+
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/qa/suites/fs/mirror/cluster/+
diff --git a/qa/suites/fs/mirror/cluster/.qa b/qa/suites/fs/mirror/cluster/.qa
new file mode 120000
index 000000000..a602a0353
--- /dev/null
+++ b/qa/suites/fs/mirror/cluster/.qa
@@ -0,0 +1 @@
+../.qa/ \ No newline at end of file
diff --git a/qa/suites/fs/mirror/cluster/1-node.yaml b/qa/suites/fs/mirror/cluster/1-node.yaml
new file mode 100644
index 000000000..a9748e071
--- /dev/null
+++ b/qa/suites/fs/mirror/cluster/1-node.yaml
@@ -0,0 +1,17 @@
+meta:
+- desc: 1 ceph cluster with 1 mon, 1 mgr, 3 osds, 5 mdss
+roles:
+- - mon.a
+ - mgr.x
+ - mds.a
+ - mds.b
+ - mds.c
+ - mds.d
+ - mds.e
+ - osd.0
+ - osd.1
+ - osd.2
+ - client.0
+ - client.1
+ - client.mirror
+ - client.mirror_remote \ No newline at end of file
diff --git a/qa/suites/fs/mirror/mount/.qa b/qa/suites/fs/mirror/mount/.qa
new file mode 120000
index 000000000..a602a0353
--- /dev/null
+++ b/qa/suites/fs/mirror/mount/.qa
@@ -0,0 +1 @@
+../.qa/ \ No newline at end of file
diff --git a/qa/suites/fs/mirror/mount/fuse.yaml b/qa/suites/fs/mirror/mount/fuse.yaml
new file mode 100644
index 000000000..1fdf55ab4
--- /dev/null
+++ b/qa/suites/fs/mirror/mount/fuse.yaml
@@ -0,0 +1,2 @@
+tasks:
+ - ceph-fuse: [client.0, client.1]
diff --git a/qa/suites/fs/mirror/objectstore/.qa b/qa/suites/fs/mirror/objectstore/.qa
new file mode 120000
index 000000000..a602a0353
--- /dev/null
+++ b/qa/suites/fs/mirror/objectstore/.qa
@@ -0,0 +1 @@
+../.qa/ \ No newline at end of file
diff --git a/qa/suites/fs/mirror/objectstore/bluestore-bitmap.yaml b/qa/suites/fs/mirror/objectstore/bluestore-bitmap.yaml
new file mode 120000
index 000000000..a59cf5175
--- /dev/null
+++ b/qa/suites/fs/mirror/objectstore/bluestore-bitmap.yaml
@@ -0,0 +1 @@
+.qa/objectstore/bluestore-bitmap.yaml \ No newline at end of file
diff --git a/qa/suites/fs/mirror/overrides/+ b/qa/suites/fs/mirror/overrides/+
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/qa/suites/fs/mirror/overrides/+
diff --git a/qa/suites/fs/mirror/overrides/.qa b/qa/suites/fs/mirror/overrides/.qa
new file mode 120000
index 000000000..a602a0353
--- /dev/null
+++ b/qa/suites/fs/mirror/overrides/.qa
@@ -0,0 +1 @@
+../.qa/ \ No newline at end of file
diff --git a/qa/suites/fs/mirror/overrides/whitelist_health.yaml b/qa/suites/fs/mirror/overrides/whitelist_health.yaml
new file mode 100644
index 000000000..d40fa4cb8
--- /dev/null
+++ b/qa/suites/fs/mirror/overrides/whitelist_health.yaml
@@ -0,0 +1,14 @@
+overrides:
+ ceph:
+ log-ignorelist:
+ - overall HEALTH_
+ - \(FS_DEGRADED\)
+ - \(MDS_FAILED\)
+ - \(MDS_DEGRADED\)
+ - \(FS_WITH_FAILED_MDS\)
+ - \(MDS_DAMAGE\)
+ - \(MDS_ALL_DOWN\)
+ - \(MDS_UP_LESS_THAN_MAX\)
+ - \(FS_INLINE_DATA_DEPRECATED\)
+ - Reduced data availability
+ - Degraded data redundancy
diff --git a/qa/suites/fs/mirror/supported-random-distros$ b/qa/suites/fs/mirror/supported-random-distros$
new file mode 120000
index 000000000..0862b4457
--- /dev/null
+++ b/qa/suites/fs/mirror/supported-random-distros$
@@ -0,0 +1 @@
+.qa/distros/supported-random-distro$ \ No newline at end of file
diff --git a/qa/suites/fs/mirror/tasks/.qa b/qa/suites/fs/mirror/tasks/.qa
new file mode 120000
index 000000000..a602a0353
--- /dev/null
+++ b/qa/suites/fs/mirror/tasks/.qa
@@ -0,0 +1 @@
+../.qa/ \ No newline at end of file
diff --git a/qa/suites/fs/mirror/tasks/mirror.yaml b/qa/suites/fs/mirror/tasks/mirror.yaml
new file mode 100644
index 000000000..07c1e24ef
--- /dev/null
+++ b/qa/suites/fs/mirror/tasks/mirror.yaml
@@ -0,0 +1,10 @@
+overrides:
+ ceph:
+ conf:
+ mgr:
+ debug client: 10
+
+tasks:
+ - cephfs_test_runner:
+ modules:
+ - tasks.cephfs.test_mirroring.TestMirroring
diff --git a/qa/suites/fs/mixed-clients/% b/qa/suites/fs/mixed-clients/%
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/qa/suites/fs/mixed-clients/%
diff --git a/qa/suites/fs/mixed-clients/.qa b/qa/suites/fs/mixed-clients/.qa
new file mode 120000
index 000000000..a602a0353
--- /dev/null
+++ b/qa/suites/fs/mixed-clients/.qa
@@ -0,0 +1 @@
+../.qa/ \ No newline at end of file
diff --git a/qa/suites/fs/mixed-clients/begin b/qa/suites/fs/mixed-clients/begin
new file mode 120000
index 000000000..77af91f7d
--- /dev/null
+++ b/qa/suites/fs/mixed-clients/begin
@@ -0,0 +1 @@
+.qa/cephfs/begin/ \ No newline at end of file
diff --git a/qa/suites/fs/mixed-clients/clusters/.qa b/qa/suites/fs/mixed-clients/clusters/.qa
new file mode 120000
index 000000000..a602a0353
--- /dev/null
+++ b/qa/suites/fs/mixed-clients/clusters/.qa
@@ -0,0 +1 @@
+../.qa/ \ No newline at end of file
diff --git a/qa/suites/fs/mixed-clients/clusters/1a3s-mds-2c-client.yaml b/qa/suites/fs/mixed-clients/clusters/1a3s-mds-2c-client.yaml
new file mode 120000
index 000000000..c190ea92f
--- /dev/null
+++ b/qa/suites/fs/mixed-clients/clusters/1a3s-mds-2c-client.yaml
@@ -0,0 +1 @@
+.qa/cephfs/clusters/1a3s-mds-2c-client.yaml \ No newline at end of file
diff --git a/qa/suites/fs/mixed-clients/conf b/qa/suites/fs/mixed-clients/conf
new file mode 120000
index 000000000..16e8cc44b
--- /dev/null
+++ b/qa/suites/fs/mixed-clients/conf
@@ -0,0 +1 @@
+.qa/cephfs/conf \ No newline at end of file
diff --git a/qa/suites/fs/mixed-clients/distro/$ b/qa/suites/fs/mixed-clients/distro/$
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/qa/suites/fs/mixed-clients/distro/$
diff --git a/qa/suites/fs/mixed-clients/distro/.qa b/qa/suites/fs/mixed-clients/distro/.qa
new file mode 120000
index 000000000..a602a0353
--- /dev/null
+++ b/qa/suites/fs/mixed-clients/distro/.qa
@@ -0,0 +1 @@
+../.qa/ \ No newline at end of file
diff --git a/qa/suites/fs/mixed-clients/distro/centos_8.yaml b/qa/suites/fs/mixed-clients/distro/centos_8.yaml
new file mode 120000
index 000000000..380a1443b
--- /dev/null
+++ b/qa/suites/fs/mixed-clients/distro/centos_8.yaml
@@ -0,0 +1 @@
+.qa/distros/all/centos_8.yaml \ No newline at end of file
diff --git a/qa/suites/fs/mixed-clients/distro/rhel_8.yaml b/qa/suites/fs/mixed-clients/distro/rhel_8.yaml
new file mode 120000
index 000000000..133acf27b
--- /dev/null
+++ b/qa/suites/fs/mixed-clients/distro/rhel_8.yaml
@@ -0,0 +1 @@
+.qa/distros/all/rhel_8.yaml \ No newline at end of file
diff --git a/qa/suites/fs/mixed-clients/distro/ubuntu/+ b/qa/suites/fs/mixed-clients/distro/ubuntu/+
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/qa/suites/fs/mixed-clients/distro/ubuntu/+
diff --git a/qa/suites/fs/mixed-clients/distro/ubuntu/.qa b/qa/suites/fs/mixed-clients/distro/ubuntu/.qa
new file mode 120000
index 000000000..a602a0353
--- /dev/null
+++ b/qa/suites/fs/mixed-clients/distro/ubuntu/.qa
@@ -0,0 +1 @@
+../.qa/ \ No newline at end of file
diff --git a/qa/suites/fs/mixed-clients/distro/ubuntu/latest.yaml b/qa/suites/fs/mixed-clients/distro/ubuntu/latest.yaml
new file mode 120000
index 000000000..0a708b4db
--- /dev/null
+++ b/qa/suites/fs/mixed-clients/distro/ubuntu/latest.yaml
@@ -0,0 +1 @@
+.qa/distros/all/ubuntu_22.04.yaml \ No newline at end of file
diff --git a/qa/suites/fs/mixed-clients/distro/ubuntu/overrides.yaml b/qa/suites/fs/mixed-clients/distro/ubuntu/overrides.yaml
new file mode 100644
index 000000000..fdd7f5e5a
--- /dev/null
+++ b/qa/suites/fs/mixed-clients/distro/ubuntu/overrides.yaml
@@ -0,0 +1,4 @@
+overrides:
+ ceph:
+ valgrind:
+ exit_on_first_error: false
diff --git a/qa/suites/fs/mixed-clients/kclient-overrides b/qa/suites/fs/mixed-clients/kclient-overrides
new file mode 120000
index 000000000..58b04fb24
--- /dev/null
+++ b/qa/suites/fs/mixed-clients/kclient-overrides
@@ -0,0 +1 @@
+.qa/cephfs/mount/kclient/overrides/ \ No newline at end of file
diff --git a/qa/suites/fs/mixed-clients/objectstore-ec b/qa/suites/fs/mixed-clients/objectstore-ec
new file mode 120000
index 000000000..affe29493
--- /dev/null
+++ b/qa/suites/fs/mixed-clients/objectstore-ec
@@ -0,0 +1 @@
+.qa/cephfs/objectstore-ec \ No newline at end of file
diff --git a/qa/suites/fs/mixed-clients/overrides/+ b/qa/suites/fs/mixed-clients/overrides/+
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/qa/suites/fs/mixed-clients/overrides/+
diff --git a/qa/suites/fs/mixed-clients/overrides/.qa b/qa/suites/fs/mixed-clients/overrides/.qa
new file mode 120000
index 000000000..a602a0353
--- /dev/null
+++ b/qa/suites/fs/mixed-clients/overrides/.qa
@@ -0,0 +1 @@
+../.qa/ \ No newline at end of file
diff --git a/qa/suites/fs/mixed-clients/overrides/ignorelist_health.yaml b/qa/suites/fs/mixed-clients/overrides/ignorelist_health.yaml
new file mode 120000
index 000000000..5cb891a95
--- /dev/null
+++ b/qa/suites/fs/mixed-clients/overrides/ignorelist_health.yaml
@@ -0,0 +1 @@
+.qa/cephfs/overrides/ignorelist_health.yaml \ No newline at end of file
diff --git a/qa/suites/fs/mixed-clients/overrides/ignorelist_wrongly_marked_down.yaml b/qa/suites/fs/mixed-clients/overrides/ignorelist_wrongly_marked_down.yaml
new file mode 120000
index 000000000..f317cb714
--- /dev/null
+++ b/qa/suites/fs/mixed-clients/overrides/ignorelist_wrongly_marked_down.yaml
@@ -0,0 +1 @@
+.qa/cephfs/overrides/ignorelist_wrongly_marked_down.yaml \ No newline at end of file
diff --git a/qa/suites/fs/mixed-clients/overrides/osd-asserts.yaml b/qa/suites/fs/mixed-clients/overrides/osd-asserts.yaml
new file mode 120000
index 000000000..f290c749b
--- /dev/null
+++ b/qa/suites/fs/mixed-clients/overrides/osd-asserts.yaml
@@ -0,0 +1 @@
+.qa/cephfs/overrides/osd-asserts.yaml \ No newline at end of file
diff --git a/qa/suites/fs/mixed-clients/tasks/.qa b/qa/suites/fs/mixed-clients/tasks/.qa
new file mode 120000
index 000000000..a602a0353
--- /dev/null
+++ b/qa/suites/fs/mixed-clients/tasks/.qa
@@ -0,0 +1 @@
+../.qa/ \ No newline at end of file
diff --git a/qa/suites/fs/mixed-clients/tasks/kernel_cfuse_workunits_dbench_iozone.yaml b/qa/suites/fs/mixed-clients/tasks/kernel_cfuse_workunits_dbench_iozone.yaml
new file mode 100644
index 000000000..78b2d7611
--- /dev/null
+++ b/qa/suites/fs/mixed-clients/tasks/kernel_cfuse_workunits_dbench_iozone.yaml
@@ -0,0 +1,18 @@
+tasks:
+- parallel:
+ - user-workload
+ - kclient-workload
+user-workload:
+ sequential:
+ - ceph-fuse: [client.0]
+ - workunit:
+ clients:
+ client.0:
+ - suites/iozone.sh
+kclient-workload:
+ sequential:
+ - kclient: [client.1]
+ - workunit:
+ clients:
+ client.1:
+ - suites/dbench.sh
diff --git a/qa/suites/fs/mixed-clients/tasks/kernel_cfuse_workunits_untarbuild_blogbench.yaml b/qa/suites/fs/mixed-clients/tasks/kernel_cfuse_workunits_untarbuild_blogbench.yaml
new file mode 100644
index 000000000..d637ff989
--- /dev/null
+++ b/qa/suites/fs/mixed-clients/tasks/kernel_cfuse_workunits_untarbuild_blogbench.yaml
@@ -0,0 +1,18 @@
+tasks:
+- parallel:
+ - user-workload
+ - kclient-workload
+user-workload:
+ sequential:
+ - ceph-fuse: [client.0]
+ - workunit:
+ clients:
+ client.0:
+ - suites/blogbench.sh
+kclient-workload:
+ sequential:
+ - kclient: [client.1]
+ - workunit:
+ clients:
+ client.1:
+ - kernel_untar_build.sh
diff --git a/qa/suites/fs/multiclient/% b/qa/suites/fs/multiclient/%
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/qa/suites/fs/multiclient/%
diff --git a/qa/suites/fs/multiclient/.qa b/qa/suites/fs/multiclient/.qa
new file mode 120000
index 000000000..a602a0353
--- /dev/null
+++ b/qa/suites/fs/multiclient/.qa
@@ -0,0 +1 @@
+../.qa/ \ No newline at end of file
diff --git a/qa/suites/fs/multiclient/begin b/qa/suites/fs/multiclient/begin
new file mode 120000
index 000000000..77af91f7d
--- /dev/null
+++ b/qa/suites/fs/multiclient/begin
@@ -0,0 +1 @@
+.qa/cephfs/begin/ \ No newline at end of file
diff --git a/qa/suites/fs/multiclient/clusters/.qa b/qa/suites/fs/multiclient/clusters/.qa
new file mode 120000
index 000000000..a602a0353
--- /dev/null
+++ b/qa/suites/fs/multiclient/clusters/.qa
@@ -0,0 +1 @@
+../.qa/ \ No newline at end of file
diff --git a/qa/suites/fs/multiclient/clusters/1-mds-2-client.yaml b/qa/suites/fs/multiclient/clusters/1-mds-2-client.yaml
new file mode 120000
index 000000000..9f4f161a3
--- /dev/null
+++ b/qa/suites/fs/multiclient/clusters/1-mds-2-client.yaml
@@ -0,0 +1 @@
+.qa/cephfs/clusters/1-mds-2-client.yaml \ No newline at end of file
diff --git a/qa/suites/fs/multiclient/clusters/1-mds-3-client.yaml b/qa/suites/fs/multiclient/clusters/1-mds-3-client.yaml
new file mode 120000
index 000000000..6b25e07c4
--- /dev/null
+++ b/qa/suites/fs/multiclient/clusters/1-mds-3-client.yaml
@@ -0,0 +1 @@
+.qa/cephfs/clusters/1-mds-3-client.yaml \ No newline at end of file
diff --git a/qa/suites/fs/multiclient/conf b/qa/suites/fs/multiclient/conf
new file mode 120000
index 000000000..16e8cc44b
--- /dev/null
+++ b/qa/suites/fs/multiclient/conf
@@ -0,0 +1 @@
+.qa/cephfs/conf \ No newline at end of file
diff --git a/qa/suites/fs/multiclient/distros/.qa b/qa/suites/fs/multiclient/distros/.qa
new file mode 120000
index 000000000..a602a0353
--- /dev/null
+++ b/qa/suites/fs/multiclient/distros/.qa
@@ -0,0 +1 @@
+../.qa/ \ No newline at end of file
diff --git a/qa/suites/fs/multiclient/distros/ubuntu_latest.yaml b/qa/suites/fs/multiclient/distros/ubuntu_latest.yaml
new file mode 120000
index 000000000..3a09f9abb
--- /dev/null
+++ b/qa/suites/fs/multiclient/distros/ubuntu_latest.yaml
@@ -0,0 +1 @@
+.qa/distros/supported/ubuntu_latest.yaml \ No newline at end of file
diff --git a/qa/suites/fs/multiclient/mount/.qa b/qa/suites/fs/multiclient/mount/.qa
new file mode 120000
index 000000000..a602a0353
--- /dev/null
+++ b/qa/suites/fs/multiclient/mount/.qa
@@ -0,0 +1 @@
+../.qa/ \ No newline at end of file
diff --git a/qa/suites/fs/multiclient/mount/fuse.yaml b/qa/suites/fs/multiclient/mount/fuse.yaml
new file mode 120000
index 000000000..0e55da9fb
--- /dev/null
+++ b/qa/suites/fs/multiclient/mount/fuse.yaml
@@ -0,0 +1 @@
+.qa/cephfs/mount/fuse.yaml \ No newline at end of file
diff --git a/qa/suites/fs/multiclient/mount/kclient.yaml.disabled b/qa/suites/fs/multiclient/mount/kclient.yaml.disabled
new file mode 100644
index 000000000..f00f16aea
--- /dev/null
+++ b/qa/suites/fs/multiclient/mount/kclient.yaml.disabled
@@ -0,0 +1,7 @@
+overrides:
+ ceph:
+ conf:
+ global:
+ ms die on skipped message: false
+tasks:
+- kclient:
diff --git a/qa/suites/fs/multiclient/objectstore-ec b/qa/suites/fs/multiclient/objectstore-ec
new file mode 120000
index 000000000..affe29493
--- /dev/null
+++ b/qa/suites/fs/multiclient/objectstore-ec
@@ -0,0 +1 @@
+.qa/cephfs/objectstore-ec \ No newline at end of file
diff --git a/qa/suites/fs/multiclient/overrides/+ b/qa/suites/fs/multiclient/overrides/+
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/qa/suites/fs/multiclient/overrides/+
diff --git a/qa/suites/fs/multiclient/overrides/.qa b/qa/suites/fs/multiclient/overrides/.qa
new file mode 120000
index 000000000..a602a0353
--- /dev/null
+++ b/qa/suites/fs/multiclient/overrides/.qa
@@ -0,0 +1 @@
+../.qa/ \ No newline at end of file
diff --git a/qa/suites/fs/multiclient/overrides/ignorelist_health.yaml b/qa/suites/fs/multiclient/overrides/ignorelist_health.yaml
new file mode 120000
index 000000000..5cb891a95
--- /dev/null
+++ b/qa/suites/fs/multiclient/overrides/ignorelist_health.yaml
@@ -0,0 +1 @@
+.qa/cephfs/overrides/ignorelist_health.yaml \ No newline at end of file
diff --git a/qa/suites/fs/multiclient/overrides/ignorelist_wrongly_marked_down.yaml b/qa/suites/fs/multiclient/overrides/ignorelist_wrongly_marked_down.yaml
new file mode 120000
index 000000000..f317cb714
--- /dev/null
+++ b/qa/suites/fs/multiclient/overrides/ignorelist_wrongly_marked_down.yaml
@@ -0,0 +1 @@
+.qa/cephfs/overrides/ignorelist_wrongly_marked_down.yaml \ No newline at end of file
diff --git a/qa/suites/fs/multiclient/tasks/.qa b/qa/suites/fs/multiclient/tasks/.qa
new file mode 120000
index 000000000..a602a0353
--- /dev/null
+++ b/qa/suites/fs/multiclient/tasks/.qa
@@ -0,0 +1 @@
+../.qa/ \ No newline at end of file
diff --git a/qa/suites/fs/multiclient/tasks/cephfs_misc_tests.yaml b/qa/suites/fs/multiclient/tasks/cephfs_misc_tests.yaml
new file mode 100644
index 000000000..e6d6ef99b
--- /dev/null
+++ b/qa/suites/fs/multiclient/tasks/cephfs_misc_tests.yaml
@@ -0,0 +1,14 @@
+tasks:
+- cephfs_test_runner:
+ modules:
+ - tasks.cephfs.test_misc
+
+overrides:
+ ceph:
+ log-ignorelist:
+ - evicting unresponsive client
+ - POOL_APP_NOT_ENABLED
+ - has not responded to cap revoke by MDS for over
+ - MDS_CLIENT_LATE_RELEASE
+ - responding to mclientcaps
+ - RECENT_CRASH
diff --git a/qa/suites/fs/multiclient/tasks/fsx-mpi.yaml.disabled b/qa/suites/fs/multiclient/tasks/fsx-mpi.yaml.disabled
new file mode 100644
index 000000000..888de867f
--- /dev/null
+++ b/qa/suites/fs/multiclient/tasks/fsx-mpi.yaml.disabled
@@ -0,0 +1,17 @@
+# make sure we get the same MPI version on all hosts
+tasks:
+- pexec:
+ clients:
+ - cd $TESTDIR
+ - wget http://download.ceph.com/qa/fsx-mpi.c
+ - mpicc fsx-mpi.c -o fsx-mpi
+ - rm fsx-mpi.c
+ - ln -s $TESTDIR/mnt.* $TESTDIR/gmnt
+- ssh_keys:
+- mpi:
+ exec: sudo $TESTDIR/fsx-mpi -o 1MB -N 50000 -p 10000 -l 1048576 $TESTDIR/gmnt/test
+ workdir: $TESTDIR/gmnt
+- pexec:
+ clients:
+ - rm $TESTDIR/gmnt
+ - rm $TESTDIR/fsx-mpi
diff --git a/qa/suites/fs/multiclient/tasks/ior-shared-file.yaml b/qa/suites/fs/multiclient/tasks/ior-shared-file.yaml
new file mode 100644
index 000000000..8293595e2
--- /dev/null
+++ b/qa/suites/fs/multiclient/tasks/ior-shared-file.yaml
@@ -0,0 +1,31 @@
+# make sure we get the same MPI version on all hosts
+tasks:
+- pexec:
+ clients:
+ - set -x
+ - cd $TESTDIR
+ # partially or incorrectly installed mpich will create a mess and the
+ # configure script or the build process (which is initiated using "make"
+ # command) for the ior project will fail
+ - sudo apt purge -y mpich
+ - sudo apt install -y mpich
+ - wget http://download.ceph.com/qa/ior-3.3.0.tar.bz2
+ - tar xvfj ior-3.3.0.tar.bz2
+ - cd ior-3.3.0
+ - ./configure
+ - make
+ - make install DESTDIR=$TESTDIR/binary/
+ - cd $TESTDIR/
+ - sudo apt install -y tree
+ - tree binary/
+ - rm ior-3.3.0.tar.bz2
+ - rm -r ior-3.3.0
+ - ln -s $TESTDIR/mnt.* $TESTDIR/gmnt
+- ssh_keys:
+- mpi:
+ exec: $TESTDIR/binary/usr/local/bin/ior -e -w -r -W -b 10m -a POSIX -o $TESTDIR/gmnt/ior.testfile
+- pexec:
+ clients:
+ - rm -f $TESTDIR/gmnt/ior.testfile
+ - rm -f $TESTDIR/gmnt
+ - rm -rf $TESTDIR/binary
diff --git a/qa/suites/fs/multiclient/tasks/mdtest.yaml b/qa/suites/fs/multiclient/tasks/mdtest.yaml
new file mode 100644
index 000000000..32720e488
--- /dev/null
+++ b/qa/suites/fs/multiclient/tasks/mdtest.yaml
@@ -0,0 +1,34 @@
+# make sure we get the same MPI version on all hosts
+tasks:
+- pexec:
+ clients:
+ - set -x
+ - cd $TESTDIR
+ - sudo apt purge -y mpich
+ - sudo apt install -y mpich
+ # use ior project instead of mdtest project because latter has been
+ # merged into former. See:
+ # https://github.com/MDTEST-LANL/mdtest/blob/master/README.md
+ - wget http://download.ceph.com/qa/ior-3.3.0.tar.bz2
+ - tar xvfj ior-3.3.0.tar.bz2
+ - cd ior-3.3.0
+ # this option was set originall when mdtest binary was built using
+ # mdtest PR and not through ior project.
+ #- MPI_CC=mpicc make
+ - ./configure
+ - make
+ - make install DESTDIR=$TESTDIR/binary/
+ - cd $TESTDIR/
+ - sudo apt install -y tree
+ - tree binary/
+ - rm ior-3.3.0.tar.bz2
+ - rm -r ior-3.3.0
+ - ln -s $TESTDIR/mnt.* $TESTDIR/gmnt
+- ssh_keys:
+- mpi:
+ exec: $TESTDIR/binary/usr/local/bin/mdtest -d $TESTDIR/gmnt -I 20 -z 5 -b 2 -R
+- pexec:
+ clients:
+ - rm -f $TESTDIR/gmnt/ior.testfile
+ - rm -f $TESTDIR/gmnt
+ - rm -rf $TESTDIR/binary
diff --git a/qa/suites/fs/multifs/% b/qa/suites/fs/multifs/%
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/qa/suites/fs/multifs/%
diff --git a/qa/suites/fs/multifs/.qa b/qa/suites/fs/multifs/.qa
new file mode 120000
index 000000000..a602a0353
--- /dev/null
+++ b/qa/suites/fs/multifs/.qa
@@ -0,0 +1 @@
+../.qa/ \ No newline at end of file
diff --git a/qa/suites/fs/multifs/begin b/qa/suites/fs/multifs/begin
new file mode 120000
index 000000000..77af91f7d
--- /dev/null
+++ b/qa/suites/fs/multifs/begin
@@ -0,0 +1 @@
+.qa/cephfs/begin/ \ No newline at end of file
diff --git a/qa/suites/fs/multifs/clusters/.qa b/qa/suites/fs/multifs/clusters/.qa
new file mode 120000
index 000000000..a602a0353
--- /dev/null
+++ b/qa/suites/fs/multifs/clusters/.qa
@@ -0,0 +1 @@
+../.qa/ \ No newline at end of file
diff --git a/qa/suites/fs/multifs/clusters/1a3s-mds-2c-client.yaml b/qa/suites/fs/multifs/clusters/1a3s-mds-2c-client.yaml
new file mode 120000
index 000000000..c190ea92f
--- /dev/null
+++ b/qa/suites/fs/multifs/clusters/1a3s-mds-2c-client.yaml
@@ -0,0 +1 @@
+.qa/cephfs/clusters/1a3s-mds-2c-client.yaml \ No newline at end of file
diff --git a/qa/suites/fs/multifs/conf b/qa/suites/fs/multifs/conf
new file mode 120000
index 000000000..16e8cc44b
--- /dev/null
+++ b/qa/suites/fs/multifs/conf
@@ -0,0 +1 @@
+.qa/cephfs/conf \ No newline at end of file
diff --git a/qa/suites/fs/multifs/distro b/qa/suites/fs/multifs/distro
new file mode 120000
index 000000000..0862b4457
--- /dev/null
+++ b/qa/suites/fs/multifs/distro
@@ -0,0 +1 @@
+.qa/distros/supported-random-distro$ \ No newline at end of file
diff --git a/qa/suites/fs/multifs/mount b/qa/suites/fs/multifs/mount
new file mode 120000
index 000000000..e3600f453
--- /dev/null
+++ b/qa/suites/fs/multifs/mount
@@ -0,0 +1 @@
+.qa/cephfs/mount/ \ No newline at end of file
diff --git a/qa/suites/fs/multifs/objectstore-ec b/qa/suites/fs/multifs/objectstore-ec
new file mode 120000
index 000000000..affe29493
--- /dev/null
+++ b/qa/suites/fs/multifs/objectstore-ec
@@ -0,0 +1 @@
+.qa/cephfs/objectstore-ec \ No newline at end of file
diff --git a/qa/suites/fs/multifs/overrides/+ b/qa/suites/fs/multifs/overrides/+
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/qa/suites/fs/multifs/overrides/+
diff --git a/qa/suites/fs/multifs/overrides/.qa b/qa/suites/fs/multifs/overrides/.qa
new file mode 120000
index 000000000..a602a0353
--- /dev/null
+++ b/qa/suites/fs/multifs/overrides/.qa
@@ -0,0 +1 @@
+../.qa/ \ No newline at end of file
diff --git a/qa/suites/fs/multifs/overrides/ignorelist_health.yaml b/qa/suites/fs/multifs/overrides/ignorelist_health.yaml
new file mode 120000
index 000000000..5cb891a95
--- /dev/null
+++ b/qa/suites/fs/multifs/overrides/ignorelist_health.yaml
@@ -0,0 +1 @@
+.qa/cephfs/overrides/ignorelist_health.yaml \ No newline at end of file
diff --git a/qa/suites/fs/multifs/overrides/ignorelist_wrongly_marked_down.yaml b/qa/suites/fs/multifs/overrides/ignorelist_wrongly_marked_down.yaml
new file mode 120000
index 000000000..f317cb714
--- /dev/null
+++ b/qa/suites/fs/multifs/overrides/ignorelist_wrongly_marked_down.yaml
@@ -0,0 +1 @@
+.qa/cephfs/overrides/ignorelist_wrongly_marked_down.yaml \ No newline at end of file
diff --git a/qa/suites/fs/multifs/overrides/mon-debug.yaml b/qa/suites/fs/multifs/overrides/mon-debug.yaml
new file mode 100644
index 000000000..24b454c00
--- /dev/null
+++ b/qa/suites/fs/multifs/overrides/mon-debug.yaml
@@ -0,0 +1,5 @@
+overrides:
+ ceph:
+ conf:
+ mon:
+ debug mon: 20
diff --git a/qa/suites/fs/multifs/tasks/.qa b/qa/suites/fs/multifs/tasks/.qa
new file mode 120000
index 000000000..a602a0353
--- /dev/null
+++ b/qa/suites/fs/multifs/tasks/.qa
@@ -0,0 +1 @@
+../.qa/ \ No newline at end of file
diff --git a/qa/suites/fs/multifs/tasks/failover.yaml b/qa/suites/fs/multifs/tasks/failover.yaml
new file mode 100644
index 000000000..9c403c76d
--- /dev/null
+++ b/qa/suites/fs/multifs/tasks/failover.yaml
@@ -0,0 +1,20 @@
+overrides:
+ ceph:
+ log-ignorelist:
+ - Replacing daemon mds
+ - \(MDS_INSUFFICIENT_STANDBY\)
+ - \(MDS_ALL_DOWN\)
+ - \(MDS_UP_LESS_THAN_MAX\)
+ - \(MDS_DAMAGE\)
+ - \(FS_DEGRADED\)
+ ceph-fuse:
+ disabled: true
+tasks:
+ - exec:
+ mon.a:
+ - ceph config set mgr mgr/crash/warn_recent_interval 0
+ - cephfs_test_runner:
+ fail_on_skip: false
+ modules:
+ - tasks.cephfs.test_failover
+
diff --git a/qa/suites/fs/multifs/tasks/multifs-auth.yaml b/qa/suites/fs/multifs/tasks/multifs-auth.yaml
new file mode 100644
index 000000000..ed1bdb475
--- /dev/null
+++ b/qa/suites/fs/multifs/tasks/multifs-auth.yaml
@@ -0,0 +1,5 @@
+tasks:
+ - cephfs_test_runner:
+ fail_on_skip: false
+ modules:
+ - tasks.cephfs.test_multifs_auth
diff --git a/qa/suites/fs/nfs/% b/qa/suites/fs/nfs/%
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/qa/suites/fs/nfs/%
diff --git a/qa/suites/fs/nfs/.qa b/qa/suites/fs/nfs/.qa
new file mode 120000
index 000000000..a602a0353
--- /dev/null
+++ b/qa/suites/fs/nfs/.qa
@@ -0,0 +1 @@
+../.qa/ \ No newline at end of file
diff --git a/qa/suites/fs/nfs/cluster/+ b/qa/suites/fs/nfs/cluster/+
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/qa/suites/fs/nfs/cluster/+
diff --git a/qa/suites/fs/nfs/cluster/.qa b/qa/suites/fs/nfs/cluster/.qa
new file mode 120000
index 000000000..a602a0353
--- /dev/null
+++ b/qa/suites/fs/nfs/cluster/.qa
@@ -0,0 +1 @@
+../.qa/ \ No newline at end of file
diff --git a/qa/suites/fs/nfs/cluster/1-node.yaml b/qa/suites/fs/nfs/cluster/1-node.yaml
new file mode 100644
index 000000000..8eeec7d2d
--- /dev/null
+++ b/qa/suites/fs/nfs/cluster/1-node.yaml
@@ -0,0 +1,16 @@
+meta:
+- desc: 1 ceph cluster with 1 mon, 1 mgr, 3 osds, 2 mds, 1 client
+roles:
+- - host.a
+ - mon.a
+ - mgr.x
+ - osd.0
+ - osd.1
+ - osd.2
+ - client.0
+tasks:
+- install:
+- cephadm:
+- cephadm.shell:
+ host.a:
+ - ceph orch apply mds a
diff --git a/qa/suites/fs/nfs/overrides/.qa b/qa/suites/fs/nfs/overrides/.qa
new file mode 120000
index 000000000..a602a0353
--- /dev/null
+++ b/qa/suites/fs/nfs/overrides/.qa
@@ -0,0 +1 @@
+../.qa/ \ No newline at end of file
diff --git a/qa/suites/fs/nfs/overrides/ignorelist_health.yaml b/qa/suites/fs/nfs/overrides/ignorelist_health.yaml
new file mode 100644
index 000000000..8bfe4dc6f
--- /dev/null
+++ b/qa/suites/fs/nfs/overrides/ignorelist_health.yaml
@@ -0,0 +1,13 @@
+overrides:
+ ceph:
+ log-ignorelist:
+ - overall HEALTH_
+ - \(FS_DEGRADED\)
+ - \(MDS_FAILED\)
+ - \(MDS_DEGRADED\)
+ - \(FS_WITH_FAILED_MDS\)
+ - \(MDS_DAMAGE\)
+ - \(MDS_ALL_DOWN\)
+ - \(MDS_UP_LESS_THAN_MAX\)
+ - \(FS_INLINE_DATA_DEPRECATED\)
+ - \(OSD_DOWN\)
diff --git a/qa/suites/fs/nfs/supported-random-distros$ b/qa/suites/fs/nfs/supported-random-distros$
new file mode 120000
index 000000000..0862b4457
--- /dev/null
+++ b/qa/suites/fs/nfs/supported-random-distros$
@@ -0,0 +1 @@
+.qa/distros/supported-random-distro$ \ No newline at end of file
diff --git a/qa/suites/fs/nfs/tasks/.qa b/qa/suites/fs/nfs/tasks/.qa
new file mode 120000
index 000000000..a602a0353
--- /dev/null
+++ b/qa/suites/fs/nfs/tasks/.qa
@@ -0,0 +1 @@
+../.qa/ \ No newline at end of file
diff --git a/qa/suites/fs/nfs/tasks/nfs.yaml b/qa/suites/fs/nfs/tasks/nfs.yaml
new file mode 100644
index 000000000..aa966bff2
--- /dev/null
+++ b/qa/suites/fs/nfs/tasks/nfs.yaml
@@ -0,0 +1,4 @@
+tasks:
+ - cephfs_test_runner:
+ modules:
+ - tasks.cephfs.test_nfs
diff --git a/qa/suites/fs/permission/% b/qa/suites/fs/permission/%
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/qa/suites/fs/permission/%
diff --git a/qa/suites/fs/permission/.qa b/qa/suites/fs/permission/.qa
new file mode 120000
index 000000000..a602a0353
--- /dev/null
+++ b/qa/suites/fs/permission/.qa
@@ -0,0 +1 @@
+../.qa/ \ No newline at end of file
diff --git a/qa/suites/fs/permission/begin b/qa/suites/fs/permission/begin
new file mode 120000
index 000000000..77af91f7d
--- /dev/null
+++ b/qa/suites/fs/permission/begin
@@ -0,0 +1 @@
+.qa/cephfs/begin/ \ No newline at end of file
diff --git a/qa/suites/fs/permission/clusters/.qa b/qa/suites/fs/permission/clusters/.qa
new file mode 120000
index 000000000..a602a0353
--- /dev/null
+++ b/qa/suites/fs/permission/clusters/.qa
@@ -0,0 +1 @@
+../.qa/ \ No newline at end of file
diff --git a/qa/suites/fs/permission/clusters/fixed-2-ucephfs.yaml b/qa/suites/fs/permission/clusters/fixed-2-ucephfs.yaml
new file mode 120000
index 000000000..b0c41a89a
--- /dev/null
+++ b/qa/suites/fs/permission/clusters/fixed-2-ucephfs.yaml
@@ -0,0 +1 @@
+.qa/cephfs/clusters/fixed-2-ucephfs.yaml \ No newline at end of file
diff --git a/qa/suites/fs/permission/conf b/qa/suites/fs/permission/conf
new file mode 120000
index 000000000..16e8cc44b
--- /dev/null
+++ b/qa/suites/fs/permission/conf
@@ -0,0 +1 @@
+.qa/cephfs/conf \ No newline at end of file
diff --git a/qa/suites/fs/permission/distro b/qa/suites/fs/permission/distro
new file mode 120000
index 000000000..0862b4457
--- /dev/null
+++ b/qa/suites/fs/permission/distro
@@ -0,0 +1 @@
+.qa/distros/supported-random-distro$ \ No newline at end of file
diff --git a/qa/suites/fs/permission/mount/.qa b/qa/suites/fs/permission/mount/.qa
new file mode 120000
index 000000000..a602a0353
--- /dev/null
+++ b/qa/suites/fs/permission/mount/.qa
@@ -0,0 +1 @@
+../.qa/ \ No newline at end of file
diff --git a/qa/suites/fs/permission/mount/fuse.yaml b/qa/suites/fs/permission/mount/fuse.yaml
new file mode 120000
index 000000000..0e55da9fb
--- /dev/null
+++ b/qa/suites/fs/permission/mount/fuse.yaml
@@ -0,0 +1 @@
+.qa/cephfs/mount/fuse.yaml \ No newline at end of file
diff --git a/qa/suites/fs/permission/objectstore-ec b/qa/suites/fs/permission/objectstore-ec
new file mode 120000
index 000000000..affe29493
--- /dev/null
+++ b/qa/suites/fs/permission/objectstore-ec
@@ -0,0 +1 @@
+.qa/cephfs/objectstore-ec \ No newline at end of file
diff --git a/qa/suites/fs/permission/overrides/+ b/qa/suites/fs/permission/overrides/+
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/qa/suites/fs/permission/overrides/+
diff --git a/qa/suites/fs/permission/overrides/.qa b/qa/suites/fs/permission/overrides/.qa
new file mode 120000
index 000000000..a602a0353
--- /dev/null
+++ b/qa/suites/fs/permission/overrides/.qa
@@ -0,0 +1 @@
+../.qa/ \ No newline at end of file
diff --git a/qa/suites/fs/permission/overrides/ignorelist_health.yaml b/qa/suites/fs/permission/overrides/ignorelist_health.yaml
new file mode 120000
index 000000000..5cb891a95
--- /dev/null
+++ b/qa/suites/fs/permission/overrides/ignorelist_health.yaml
@@ -0,0 +1 @@
+.qa/cephfs/overrides/ignorelist_health.yaml \ No newline at end of file
diff --git a/qa/suites/fs/permission/overrides/ignorelist_wrongly_marked_down.yaml b/qa/suites/fs/permission/overrides/ignorelist_wrongly_marked_down.yaml
new file mode 120000
index 000000000..f317cb714
--- /dev/null
+++ b/qa/suites/fs/permission/overrides/ignorelist_wrongly_marked_down.yaml
@@ -0,0 +1 @@
+.qa/cephfs/overrides/ignorelist_wrongly_marked_down.yaml \ No newline at end of file
diff --git a/qa/suites/fs/permission/tasks/.qa b/qa/suites/fs/permission/tasks/.qa
new file mode 120000
index 000000000..a602a0353
--- /dev/null
+++ b/qa/suites/fs/permission/tasks/.qa
@@ -0,0 +1 @@
+../.qa/ \ No newline at end of file
diff --git a/qa/suites/fs/permission/tasks/cfuse_workunit_misc.yaml b/qa/suites/fs/permission/tasks/cfuse_workunit_misc.yaml
new file mode 100644
index 000000000..ca026c45f
--- /dev/null
+++ b/qa/suites/fs/permission/tasks/cfuse_workunit_misc.yaml
@@ -0,0 +1,12 @@
+overrides:
+ ceph:
+ conf:
+ client:
+ client acl type: posix_acl
+tasks:
+- workunit:
+ clients:
+ all:
+ - fs/misc/acl.sh
+ - fs/misc/chmod.sh
+ - fs/misc/dac_override.sh
diff --git a/qa/suites/fs/permission/tasks/cfuse_workunit_suites_pjd.yaml b/qa/suites/fs/permission/tasks/cfuse_workunit_suites_pjd.yaml
new file mode 100644
index 000000000..a81a3b46e
--- /dev/null
+++ b/qa/suites/fs/permission/tasks/cfuse_workunit_suites_pjd.yaml
@@ -0,0 +1,12 @@
+overrides:
+ ceph:
+ conf:
+ client:
+ fuse set user groups: true
+ client acl type: posix_acl
+tasks:
+- workunit:
+ timeout: 6h
+ clients:
+ all:
+ - suites/pjd.sh
diff --git a/qa/suites/fs/shell/% b/qa/suites/fs/shell/%
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/qa/suites/fs/shell/%
diff --git a/qa/suites/fs/shell/.qa b/qa/suites/fs/shell/.qa
new file mode 120000
index 000000000..a602a0353
--- /dev/null
+++ b/qa/suites/fs/shell/.qa
@@ -0,0 +1 @@
+../.qa/ \ No newline at end of file
diff --git a/qa/suites/fs/shell/begin b/qa/suites/fs/shell/begin
new file mode 120000
index 000000000..77af91f7d
--- /dev/null
+++ b/qa/suites/fs/shell/begin
@@ -0,0 +1 @@
+.qa/cephfs/begin/ \ No newline at end of file
diff --git a/qa/suites/fs/shell/clusters/.qa b/qa/suites/fs/shell/clusters/.qa
new file mode 120000
index 000000000..a602a0353
--- /dev/null
+++ b/qa/suites/fs/shell/clusters/.qa
@@ -0,0 +1 @@
+../.qa/ \ No newline at end of file
diff --git a/qa/suites/fs/shell/clusters/1-mds-1-client-coloc.yaml b/qa/suites/fs/shell/clusters/1-mds-1-client-coloc.yaml
new file mode 120000
index 000000000..d15ecfda0
--- /dev/null
+++ b/qa/suites/fs/shell/clusters/1-mds-1-client-coloc.yaml
@@ -0,0 +1 @@
+.qa/cephfs/clusters/1-mds-1-client-coloc.yaml \ No newline at end of file
diff --git a/qa/suites/fs/shell/conf b/qa/suites/fs/shell/conf
new file mode 120000
index 000000000..16e8cc44b
--- /dev/null
+++ b/qa/suites/fs/shell/conf
@@ -0,0 +1 @@
+.qa/cephfs/conf \ No newline at end of file
diff --git a/qa/suites/fs/shell/distro b/qa/suites/fs/shell/distro
new file mode 120000
index 000000000..0862b4457
--- /dev/null
+++ b/qa/suites/fs/shell/distro
@@ -0,0 +1 @@
+.qa/distros/supported-random-distro$ \ No newline at end of file
diff --git a/qa/suites/fs/shell/mount/.qa b/qa/suites/fs/shell/mount/.qa
new file mode 120000
index 000000000..a602a0353
--- /dev/null
+++ b/qa/suites/fs/shell/mount/.qa
@@ -0,0 +1 @@
+../.qa/ \ No newline at end of file
diff --git a/qa/suites/fs/shell/mount/fuse.yaml b/qa/suites/fs/shell/mount/fuse.yaml
new file mode 120000
index 000000000..0e55da9fb
--- /dev/null
+++ b/qa/suites/fs/shell/mount/fuse.yaml
@@ -0,0 +1 @@
+.qa/cephfs/mount/fuse.yaml \ No newline at end of file
diff --git a/qa/suites/fs/shell/objectstore/.qa b/qa/suites/fs/shell/objectstore/.qa
new file mode 120000
index 000000000..a602a0353
--- /dev/null
+++ b/qa/suites/fs/shell/objectstore/.qa
@@ -0,0 +1 @@
+../.qa/ \ No newline at end of file
diff --git a/qa/suites/fs/shell/objectstore/bluestore-bitmap.yaml b/qa/suites/fs/shell/objectstore/bluestore-bitmap.yaml
new file mode 120000
index 000000000..a59cf5175
--- /dev/null
+++ b/qa/suites/fs/shell/objectstore/bluestore-bitmap.yaml
@@ -0,0 +1 @@
+.qa/objectstore/bluestore-bitmap.yaml \ No newline at end of file
diff --git a/qa/suites/fs/shell/overrides/+ b/qa/suites/fs/shell/overrides/+
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/qa/suites/fs/shell/overrides/+
diff --git a/qa/suites/fs/shell/overrides/.qa b/qa/suites/fs/shell/overrides/.qa
new file mode 120000
index 000000000..a602a0353
--- /dev/null
+++ b/qa/suites/fs/shell/overrides/.qa
@@ -0,0 +1 @@
+../.qa/ \ No newline at end of file
diff --git a/qa/suites/fs/shell/overrides/ignorelist_health.yaml b/qa/suites/fs/shell/overrides/ignorelist_health.yaml
new file mode 120000
index 000000000..5cb891a95
--- /dev/null
+++ b/qa/suites/fs/shell/overrides/ignorelist_health.yaml
@@ -0,0 +1 @@
+.qa/cephfs/overrides/ignorelist_health.yaml \ No newline at end of file
diff --git a/qa/suites/fs/shell/overrides/ignorelist_wrongly_marked_down.yaml b/qa/suites/fs/shell/overrides/ignorelist_wrongly_marked_down.yaml
new file mode 120000
index 000000000..f317cb714
--- /dev/null
+++ b/qa/suites/fs/shell/overrides/ignorelist_wrongly_marked_down.yaml
@@ -0,0 +1 @@
+.qa/cephfs/overrides/ignorelist_wrongly_marked_down.yaml \ No newline at end of file
diff --git a/qa/suites/fs/shell/overrides/no_client_pidfile.yaml b/qa/suites/fs/shell/overrides/no_client_pidfile.yaml
new file mode 120000
index 000000000..8888f3327
--- /dev/null
+++ b/qa/suites/fs/shell/overrides/no_client_pidfile.yaml
@@ -0,0 +1 @@
+.qa/overrides/no_client_pidfile.yaml \ No newline at end of file
diff --git a/qa/suites/fs/shell/tasks/.qa b/qa/suites/fs/shell/tasks/.qa
new file mode 120000
index 000000000..a602a0353
--- /dev/null
+++ b/qa/suites/fs/shell/tasks/.qa
@@ -0,0 +1 @@
+../.qa/ \ No newline at end of file
diff --git a/qa/suites/fs/shell/tasks/cephfs-shell.yaml b/qa/suites/fs/shell/tasks/cephfs-shell.yaml
new file mode 100644
index 000000000..9708252e9
--- /dev/null
+++ b/qa/suites/fs/shell/tasks/cephfs-shell.yaml
@@ -0,0 +1,8 @@
+# Right now, cephfs-shell is only available as a package on Ubuntu
+# This overrides the random distribution that's chosen in the other yaml fragments.
+os_type: ubuntu
+os_version: "20.04"
+tasks:
+ - cephfs_test_runner:
+ modules:
+ - tasks.cephfs.test_cephfs_shell
diff --git a/qa/suites/fs/snaps/% b/qa/suites/fs/snaps/%
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/qa/suites/fs/snaps/%
diff --git a/qa/suites/fs/snaps/.qa b/qa/suites/fs/snaps/.qa
new file mode 120000
index 000000000..a602a0353
--- /dev/null
+++ b/qa/suites/fs/snaps/.qa
@@ -0,0 +1 @@
+../.qa/ \ No newline at end of file
diff --git a/qa/suites/fs/snaps/begin b/qa/suites/fs/snaps/begin
new file mode 120000
index 000000000..77af91f7d
--- /dev/null
+++ b/qa/suites/fs/snaps/begin
@@ -0,0 +1 @@
+.qa/cephfs/begin/ \ No newline at end of file
diff --git a/qa/suites/fs/snaps/clusters/.qa b/qa/suites/fs/snaps/clusters/.qa
new file mode 120000
index 000000000..a602a0353
--- /dev/null
+++ b/qa/suites/fs/snaps/clusters/.qa
@@ -0,0 +1 @@
+../.qa/ \ No newline at end of file
diff --git a/qa/suites/fs/snaps/clusters/1a3s-mds-1c-client.yaml b/qa/suites/fs/snaps/clusters/1a3s-mds-1c-client.yaml
new file mode 120000
index 000000000..4ab7357dc
--- /dev/null
+++ b/qa/suites/fs/snaps/clusters/1a3s-mds-1c-client.yaml
@@ -0,0 +1 @@
+.qa/cephfs/clusters/1a3s-mds-1c-client.yaml \ No newline at end of file
diff --git a/qa/suites/fs/snaps/conf b/qa/suites/fs/snaps/conf
new file mode 120000
index 000000000..16e8cc44b
--- /dev/null
+++ b/qa/suites/fs/snaps/conf
@@ -0,0 +1 @@
+.qa/cephfs/conf \ No newline at end of file
diff --git a/qa/suites/fs/snaps/distro b/qa/suites/fs/snaps/distro
new file mode 120000
index 000000000..0862b4457
--- /dev/null
+++ b/qa/suites/fs/snaps/distro
@@ -0,0 +1 @@
+.qa/distros/supported-random-distro$ \ No newline at end of file
diff --git a/qa/suites/fs/snaps/mount b/qa/suites/fs/snaps/mount
new file mode 120000
index 000000000..e3600f453
--- /dev/null
+++ b/qa/suites/fs/snaps/mount
@@ -0,0 +1 @@
+.qa/cephfs/mount/ \ No newline at end of file
diff --git a/qa/suites/fs/snaps/objectstore-ec b/qa/suites/fs/snaps/objectstore-ec
new file mode 120000
index 000000000..affe29493
--- /dev/null
+++ b/qa/suites/fs/snaps/objectstore-ec
@@ -0,0 +1 @@
+.qa/cephfs/objectstore-ec \ No newline at end of file
diff --git a/qa/suites/fs/snaps/overrides/+ b/qa/suites/fs/snaps/overrides/+
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/qa/suites/fs/snaps/overrides/+
diff --git a/qa/suites/fs/snaps/overrides/.qa b/qa/suites/fs/snaps/overrides/.qa
new file mode 120000
index 000000000..a602a0353
--- /dev/null
+++ b/qa/suites/fs/snaps/overrides/.qa
@@ -0,0 +1 @@
+../.qa/ \ No newline at end of file
diff --git a/qa/suites/fs/snaps/overrides/ignorelist_health.yaml b/qa/suites/fs/snaps/overrides/ignorelist_health.yaml
new file mode 120000
index 000000000..5cb891a95
--- /dev/null
+++ b/qa/suites/fs/snaps/overrides/ignorelist_health.yaml
@@ -0,0 +1 @@
+.qa/cephfs/overrides/ignorelist_health.yaml \ No newline at end of file
diff --git a/qa/suites/fs/snaps/overrides/ignorelist_wrongly_marked_down.yaml b/qa/suites/fs/snaps/overrides/ignorelist_wrongly_marked_down.yaml
new file mode 120000
index 000000000..f317cb714
--- /dev/null
+++ b/qa/suites/fs/snaps/overrides/ignorelist_wrongly_marked_down.yaml
@@ -0,0 +1 @@
+.qa/cephfs/overrides/ignorelist_wrongly_marked_down.yaml \ No newline at end of file
diff --git a/qa/suites/fs/snaps/tasks/.qa b/qa/suites/fs/snaps/tasks/.qa
new file mode 120000
index 000000000..a602a0353
--- /dev/null
+++ b/qa/suites/fs/snaps/tasks/.qa
@@ -0,0 +1 @@
+../.qa/ \ No newline at end of file
diff --git a/qa/suites/fs/snaps/tasks/workunit/.qa b/qa/suites/fs/snaps/tasks/workunit/.qa
new file mode 120000
index 000000000..a602a0353
--- /dev/null
+++ b/qa/suites/fs/snaps/tasks/workunit/.qa
@@ -0,0 +1 @@
+../.qa/ \ No newline at end of file
diff --git a/qa/suites/fs/snaps/tasks/workunit/snaps.yaml b/qa/suites/fs/snaps/tasks/workunit/snaps.yaml
new file mode 100644
index 000000000..dd5a0abd4
--- /dev/null
+++ b/qa/suites/fs/snaps/tasks/workunit/snaps.yaml
@@ -0,0 +1,6 @@
+tasks:
+- workunit:
+ timeout: 6h
+ clients:
+ all:
+ - fs/snaps
diff --git a/qa/suites/fs/thrash/.qa b/qa/suites/fs/thrash/.qa
new file mode 120000
index 000000000..a602a0353
--- /dev/null
+++ b/qa/suites/fs/thrash/.qa
@@ -0,0 +1 @@
+../.qa/ \ No newline at end of file
diff --git a/qa/suites/fs/thrash/multifs/% b/qa/suites/fs/thrash/multifs/%
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/qa/suites/fs/thrash/multifs/%
diff --git a/qa/suites/fs/thrash/multifs/.qa b/qa/suites/fs/thrash/multifs/.qa
new file mode 120000
index 000000000..a602a0353
--- /dev/null
+++ b/qa/suites/fs/thrash/multifs/.qa
@@ -0,0 +1 @@
+../.qa/ \ No newline at end of file
diff --git a/qa/suites/fs/thrash/multifs/begin b/qa/suites/fs/thrash/multifs/begin
new file mode 120000
index 000000000..77af91f7d
--- /dev/null
+++ b/qa/suites/fs/thrash/multifs/begin
@@ -0,0 +1 @@
+.qa/cephfs/begin/ \ No newline at end of file
diff --git a/qa/suites/fs/thrash/multifs/clusters/.qa b/qa/suites/fs/thrash/multifs/clusters/.qa
new file mode 120000
index 000000000..a602a0353
--- /dev/null
+++ b/qa/suites/fs/thrash/multifs/clusters/.qa
@@ -0,0 +1 @@
+../.qa/ \ No newline at end of file
diff --git a/qa/suites/fs/thrash/multifs/clusters/1a3s-mds-2c-client.yaml b/qa/suites/fs/thrash/multifs/clusters/1a3s-mds-2c-client.yaml
new file mode 120000
index 000000000..c190ea92f
--- /dev/null
+++ b/qa/suites/fs/thrash/multifs/clusters/1a3s-mds-2c-client.yaml
@@ -0,0 +1 @@
+.qa/cephfs/clusters/1a3s-mds-2c-client.yaml \ No newline at end of file
diff --git a/qa/suites/fs/thrash/multifs/conf b/qa/suites/fs/thrash/multifs/conf
new file mode 120000
index 000000000..16e8cc44b
--- /dev/null
+++ b/qa/suites/fs/thrash/multifs/conf
@@ -0,0 +1 @@
+.qa/cephfs/conf \ No newline at end of file
diff --git a/qa/suites/fs/thrash/multifs/distro b/qa/suites/fs/thrash/multifs/distro
new file mode 120000
index 000000000..0862b4457
--- /dev/null
+++ b/qa/suites/fs/thrash/multifs/distro
@@ -0,0 +1 @@
+.qa/distros/supported-random-distro$ \ No newline at end of file
diff --git a/qa/suites/fs/thrash/multifs/mount b/qa/suites/fs/thrash/multifs/mount
new file mode 120000
index 000000000..e3600f453
--- /dev/null
+++ b/qa/suites/fs/thrash/multifs/mount
@@ -0,0 +1 @@
+.qa/cephfs/mount/ \ No newline at end of file
diff --git a/qa/suites/fs/thrash/multifs/msgr-failures/.qa b/qa/suites/fs/thrash/multifs/msgr-failures/.qa
new file mode 120000
index 000000000..a602a0353
--- /dev/null
+++ b/qa/suites/fs/thrash/multifs/msgr-failures/.qa
@@ -0,0 +1 @@
+../.qa/ \ No newline at end of file
diff --git a/qa/suites/fs/thrash/multifs/msgr-failures/none.yaml b/qa/suites/fs/thrash/multifs/msgr-failures/none.yaml
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/qa/suites/fs/thrash/multifs/msgr-failures/none.yaml
diff --git a/qa/suites/fs/thrash/multifs/msgr-failures/osd-mds-delay.yaml b/qa/suites/fs/thrash/multifs/msgr-failures/osd-mds-delay.yaml
new file mode 100644
index 000000000..17cbc5b90
--- /dev/null
+++ b/qa/suites/fs/thrash/multifs/msgr-failures/osd-mds-delay.yaml
@@ -0,0 +1,17 @@
+overrides:
+ ceph:
+ conf:
+ osd:
+ ms inject socket failures: 2500
+ ms inject delay type: client mds
+ ms inject delay probability: .005
+ ms inject delay max: 1
+ mon client directed command retry: 5
+ mds:
+ ms inject socket failures: 2500
+ ms inject delay type: client mds osd
+ ms inject delay probability: .005
+ ms inject delay max: 1
+ mon client directed command retry: 5
+ log-ignorelist:
+ - \(OSD_SLOW_PING_TIME
diff --git a/qa/suites/fs/thrash/multifs/objectstore/.qa b/qa/suites/fs/thrash/multifs/objectstore/.qa
new file mode 120000
index 000000000..a602a0353
--- /dev/null
+++ b/qa/suites/fs/thrash/multifs/objectstore/.qa
@@ -0,0 +1 @@
+../.qa/ \ No newline at end of file
diff --git a/qa/suites/fs/thrash/multifs/objectstore/bluestore-bitmap.yaml b/qa/suites/fs/thrash/multifs/objectstore/bluestore-bitmap.yaml
new file mode 120000
index 000000000..a59cf5175
--- /dev/null
+++ b/qa/suites/fs/thrash/multifs/objectstore/bluestore-bitmap.yaml
@@ -0,0 +1 @@
+.qa/objectstore/bluestore-bitmap.yaml \ No newline at end of file
diff --git a/qa/suites/fs/thrash/multifs/overrides/+ b/qa/suites/fs/thrash/multifs/overrides/+
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/qa/suites/fs/thrash/multifs/overrides/+
diff --git a/qa/suites/fs/thrash/multifs/overrides/.qa b/qa/suites/fs/thrash/multifs/overrides/.qa
new file mode 120000
index 000000000..a602a0353
--- /dev/null
+++ b/qa/suites/fs/thrash/multifs/overrides/.qa
@@ -0,0 +1 @@
+../.qa/ \ No newline at end of file
diff --git a/qa/suites/fs/thrash/multifs/overrides/client-shutdown.yaml b/qa/suites/fs/thrash/multifs/overrides/client-shutdown.yaml
new file mode 100644
index 000000000..30b2ea981
--- /dev/null
+++ b/qa/suites/fs/thrash/multifs/overrides/client-shutdown.yaml
@@ -0,0 +1,6 @@
+# Lengthen the timeout for thrashed MDS
+overrides:
+ ceph:
+ conf:
+ client:
+ client_shutdown_timeout: 120
diff --git a/qa/suites/fs/thrash/multifs/overrides/frag.yaml b/qa/suites/fs/thrash/multifs/overrides/frag.yaml
new file mode 120000
index 000000000..5e5cdaed8
--- /dev/null
+++ b/qa/suites/fs/thrash/multifs/overrides/frag.yaml
@@ -0,0 +1 @@
+.qa/cephfs/overrides/frag.yaml \ No newline at end of file
diff --git a/qa/suites/fs/thrash/multifs/overrides/ignorelist_health.yaml b/qa/suites/fs/thrash/multifs/overrides/ignorelist_health.yaml
new file mode 120000
index 000000000..5cb891a95
--- /dev/null
+++ b/qa/suites/fs/thrash/multifs/overrides/ignorelist_health.yaml
@@ -0,0 +1 @@
+.qa/cephfs/overrides/ignorelist_health.yaml \ No newline at end of file
diff --git a/qa/suites/fs/thrash/multifs/overrides/ignorelist_wrongly_marked_down.yaml b/qa/suites/fs/thrash/multifs/overrides/ignorelist_wrongly_marked_down.yaml
new file mode 120000
index 000000000..f317cb714
--- /dev/null
+++ b/qa/suites/fs/thrash/multifs/overrides/ignorelist_wrongly_marked_down.yaml
@@ -0,0 +1 @@
+.qa/cephfs/overrides/ignorelist_wrongly_marked_down.yaml \ No newline at end of file
diff --git a/qa/suites/fs/thrash/multifs/overrides/multifs.yaml b/qa/suites/fs/thrash/multifs/overrides/multifs.yaml
new file mode 100644
index 000000000..faf7838c2
--- /dev/null
+++ b/qa/suites/fs/thrash/multifs/overrides/multifs.yaml
@@ -0,0 +1,16 @@
+overrides:
+ ceph:
+ cephfs:
+ fs:
+ - name: a
+ - name: b
+ ceph-fuse:
+ client.0:
+ cephfs_name: a
+ client.1:
+ cephfs_name: b
+ kclient:
+ client.0:
+ cephfs_name: a
+ client.1:
+ cephfs_name: b
diff --git a/qa/suites/fs/thrash/multifs/overrides/session_timeout.yaml b/qa/suites/fs/thrash/multifs/overrides/session_timeout.yaml
new file mode 120000
index 000000000..fce0318c5
--- /dev/null
+++ b/qa/suites/fs/thrash/multifs/overrides/session_timeout.yaml
@@ -0,0 +1 @@
+.qa/cephfs/overrides/session_timeout.yaml \ No newline at end of file
diff --git a/qa/suites/fs/thrash/multifs/overrides/thrashosds-health.yaml b/qa/suites/fs/thrash/multifs/overrides/thrashosds-health.yaml
new file mode 120000
index 000000000..9124eb1aa
--- /dev/null
+++ b/qa/suites/fs/thrash/multifs/overrides/thrashosds-health.yaml
@@ -0,0 +1 @@
+.qa/tasks/thrashosds-health.yaml \ No newline at end of file
diff --git a/qa/suites/fs/thrash/multifs/tasks/% b/qa/suites/fs/thrash/multifs/tasks/%
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/qa/suites/fs/thrash/multifs/tasks/%
diff --git a/qa/suites/fs/thrash/multifs/tasks/.qa b/qa/suites/fs/thrash/multifs/tasks/.qa
new file mode 120000
index 000000000..a602a0353
--- /dev/null
+++ b/qa/suites/fs/thrash/multifs/tasks/.qa
@@ -0,0 +1 @@
+../.qa/ \ No newline at end of file
diff --git a/qa/suites/fs/thrash/multifs/tasks/1-thrash/.qa b/qa/suites/fs/thrash/multifs/tasks/1-thrash/.qa
new file mode 120000
index 000000000..a602a0353
--- /dev/null
+++ b/qa/suites/fs/thrash/multifs/tasks/1-thrash/.qa
@@ -0,0 +1 @@
+../.qa/ \ No newline at end of file
diff --git a/qa/suites/fs/thrash/multifs/tasks/1-thrash/mds.yaml b/qa/suites/fs/thrash/multifs/tasks/1-thrash/mds.yaml
new file mode 100644
index 000000000..33748cea5
--- /dev/null
+++ b/qa/suites/fs/thrash/multifs/tasks/1-thrash/mds.yaml
@@ -0,0 +1,7 @@
+tasks:
+- mds_thrash:
+
+overrides:
+ ceph:
+ log-ignorelist:
+ - Replacing daemon mds
diff --git a/qa/suites/fs/thrash/multifs/tasks/1-thrash/mon.yaml b/qa/suites/fs/thrash/multifs/tasks/1-thrash/mon.yaml
new file mode 100644
index 000000000..fbbe16151
--- /dev/null
+++ b/qa/suites/fs/thrash/multifs/tasks/1-thrash/mon.yaml
@@ -0,0 +1,10 @@
+overrides:
+ ceph:
+ log-ignorelist:
+ - overall HEALTH_
+ - \(MON_DOWN\)
+tasks:
+- mon_thrash:
+ check_mds_failover: True
+ revive_delay: 20
+ thrash_delay: 10
diff --git a/qa/suites/fs/thrash/multifs/tasks/2-workunit/.qa b/qa/suites/fs/thrash/multifs/tasks/2-workunit/.qa
new file mode 120000
index 000000000..a602a0353
--- /dev/null
+++ b/qa/suites/fs/thrash/multifs/tasks/2-workunit/.qa
@@ -0,0 +1 @@
+../.qa/ \ No newline at end of file
diff --git a/qa/suites/fs/thrash/multifs/tasks/2-workunit/cfuse_workunit_snaptests.yaml b/qa/suites/fs/thrash/multifs/tasks/2-workunit/cfuse_workunit_snaptests.yaml
new file mode 100644
index 000000000..dd5a0abd4
--- /dev/null
+++ b/qa/suites/fs/thrash/multifs/tasks/2-workunit/cfuse_workunit_snaptests.yaml
@@ -0,0 +1,6 @@
+tasks:
+- workunit:
+ timeout: 6h
+ clients:
+ all:
+ - fs/snaps
diff --git a/qa/suites/fs/thrash/multifs/tasks/2-workunit/cfuse_workunit_suites_fsstress.yaml b/qa/suites/fs/thrash/multifs/tasks/2-workunit/cfuse_workunit_suites_fsstress.yaml
new file mode 120000
index 000000000..c2e859fff
--- /dev/null
+++ b/qa/suites/fs/thrash/multifs/tasks/2-workunit/cfuse_workunit_suites_fsstress.yaml
@@ -0,0 +1 @@
+.qa/cephfs/tasks/cfuse_workunit_suites_fsstress.yaml \ No newline at end of file
diff --git a/qa/suites/fs/thrash/multifs/tasks/2-workunit/cfuse_workunit_suites_pjd.yaml b/qa/suites/fs/thrash/multifs/tasks/2-workunit/cfuse_workunit_suites_pjd.yaml
new file mode 100644
index 000000000..f7784383b
--- /dev/null
+++ b/qa/suites/fs/thrash/multifs/tasks/2-workunit/cfuse_workunit_suites_pjd.yaml
@@ -0,0 +1,11 @@
+overrides:
+ ceph:
+ conf:
+ client:
+ fuse set user groups: true
+tasks:
+- workunit:
+ timeout: 6h
+ clients:
+ all:
+ - suites/pjd.sh
diff --git a/qa/suites/fs/thrash/multifs/tasks/2-workunit/cfuse_workunit_trivial_sync.yaml b/qa/suites/fs/thrash/multifs/tasks/2-workunit/cfuse_workunit_trivial_sync.yaml
new file mode 120000
index 000000000..a1df03277
--- /dev/null
+++ b/qa/suites/fs/thrash/multifs/tasks/2-workunit/cfuse_workunit_trivial_sync.yaml
@@ -0,0 +1 @@
+.qa/cephfs/tasks/cfuse_workunit_trivial_sync.yaml \ No newline at end of file
diff --git a/qa/suites/fs/thrash/multifs/tasks/2-workunit/ffsb.yaml b/qa/suites/fs/thrash/multifs/tasks/2-workunit/ffsb.yaml
new file mode 100644
index 000000000..7e4f711a2
--- /dev/null
+++ b/qa/suites/fs/thrash/multifs/tasks/2-workunit/ffsb.yaml
@@ -0,0 +1,13 @@
+overrides:
+ ceph:
+ log-ignorelist:
+ - SLOW_OPS
+ - slow request
+ conf:
+ osd:
+ filestore flush min: 0
+tasks:
+- workunit:
+ clients:
+ all:
+ - suites/ffsb.sh
diff --git a/qa/suites/fs/thrash/multifs/tasks/2-workunit/iozone.yaml b/qa/suites/fs/thrash/multifs/tasks/2-workunit/iozone.yaml
new file mode 100644
index 000000000..9270f3c51
--- /dev/null
+++ b/qa/suites/fs/thrash/multifs/tasks/2-workunit/iozone.yaml
@@ -0,0 +1,5 @@
+tasks:
+- workunit:
+ clients:
+ all:
+ - suites/iozone.sh
diff --git a/qa/suites/fs/thrash/workloads/% b/qa/suites/fs/thrash/workloads/%
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/qa/suites/fs/thrash/workloads/%
diff --git a/qa/suites/fs/thrash/workloads/.qa b/qa/suites/fs/thrash/workloads/.qa
new file mode 120000
index 000000000..a602a0353
--- /dev/null
+++ b/qa/suites/fs/thrash/workloads/.qa
@@ -0,0 +1 @@
+../.qa/ \ No newline at end of file
diff --git a/qa/suites/fs/thrash/workloads/begin b/qa/suites/fs/thrash/workloads/begin
new file mode 120000
index 000000000..77af91f7d
--- /dev/null
+++ b/qa/suites/fs/thrash/workloads/begin
@@ -0,0 +1 @@
+.qa/cephfs/begin/ \ No newline at end of file
diff --git a/qa/suites/fs/thrash/workloads/clusters/.qa b/qa/suites/fs/thrash/workloads/clusters/.qa
new file mode 120000
index 000000000..a602a0353
--- /dev/null
+++ b/qa/suites/fs/thrash/workloads/clusters/.qa
@@ -0,0 +1 @@
+../.qa/ \ No newline at end of file
diff --git a/qa/suites/fs/thrash/workloads/clusters/1a5s-mds-1c-client.yaml b/qa/suites/fs/thrash/workloads/clusters/1a5s-mds-1c-client.yaml
new file mode 120000
index 000000000..2ab33af1c
--- /dev/null
+++ b/qa/suites/fs/thrash/workloads/clusters/1a5s-mds-1c-client.yaml
@@ -0,0 +1 @@
+.qa/cephfs/clusters/1a5s-mds-1c-client.yaml \ No newline at end of file
diff --git a/qa/suites/fs/thrash/workloads/conf b/qa/suites/fs/thrash/workloads/conf
new file mode 120000
index 000000000..16e8cc44b
--- /dev/null
+++ b/qa/suites/fs/thrash/workloads/conf
@@ -0,0 +1 @@
+.qa/cephfs/conf \ No newline at end of file
diff --git a/qa/suites/fs/thrash/workloads/distro b/qa/suites/fs/thrash/workloads/distro
new file mode 120000
index 000000000..0862b4457
--- /dev/null
+++ b/qa/suites/fs/thrash/workloads/distro
@@ -0,0 +1 @@
+.qa/distros/supported-random-distro$ \ No newline at end of file
diff --git a/qa/suites/fs/thrash/workloads/mount b/qa/suites/fs/thrash/workloads/mount
new file mode 120000
index 000000000..e3600f453
--- /dev/null
+++ b/qa/suites/fs/thrash/workloads/mount
@@ -0,0 +1 @@
+.qa/cephfs/mount/ \ No newline at end of file
diff --git a/qa/suites/fs/thrash/workloads/msgr-failures/.qa b/qa/suites/fs/thrash/workloads/msgr-failures/.qa
new file mode 120000
index 000000000..a602a0353
--- /dev/null
+++ b/qa/suites/fs/thrash/workloads/msgr-failures/.qa
@@ -0,0 +1 @@
+../.qa/ \ No newline at end of file
diff --git a/qa/suites/fs/thrash/workloads/msgr-failures/none.yaml b/qa/suites/fs/thrash/workloads/msgr-failures/none.yaml
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/qa/suites/fs/thrash/workloads/msgr-failures/none.yaml
diff --git a/qa/suites/fs/thrash/workloads/msgr-failures/osd-mds-delay.yaml b/qa/suites/fs/thrash/workloads/msgr-failures/osd-mds-delay.yaml
new file mode 100644
index 000000000..17cbc5b90
--- /dev/null
+++ b/qa/suites/fs/thrash/workloads/msgr-failures/osd-mds-delay.yaml
@@ -0,0 +1,17 @@
+overrides:
+ ceph:
+ conf:
+ osd:
+ ms inject socket failures: 2500
+ ms inject delay type: client mds
+ ms inject delay probability: .005
+ ms inject delay max: 1
+ mon client directed command retry: 5
+ mds:
+ ms inject socket failures: 2500
+ ms inject delay type: client mds osd
+ ms inject delay probability: .005
+ ms inject delay max: 1
+ mon client directed command retry: 5
+ log-ignorelist:
+ - \(OSD_SLOW_PING_TIME
diff --git a/qa/suites/fs/thrash/workloads/objectstore-ec b/qa/suites/fs/thrash/workloads/objectstore-ec
new file mode 120000
index 000000000..affe29493
--- /dev/null
+++ b/qa/suites/fs/thrash/workloads/objectstore-ec
@@ -0,0 +1 @@
+.qa/cephfs/objectstore-ec \ No newline at end of file
diff --git a/qa/suites/fs/thrash/workloads/overrides/% b/qa/suites/fs/thrash/workloads/overrides/%
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/qa/suites/fs/thrash/workloads/overrides/%
diff --git a/qa/suites/fs/thrash/workloads/overrides/.qa b/qa/suites/fs/thrash/workloads/overrides/.qa
new file mode 120000
index 000000000..a602a0353
--- /dev/null
+++ b/qa/suites/fs/thrash/workloads/overrides/.qa
@@ -0,0 +1 @@
+../.qa/ \ No newline at end of file
diff --git a/qa/suites/fs/thrash/workloads/overrides/client-shutdown.yaml b/qa/suites/fs/thrash/workloads/overrides/client-shutdown.yaml
new file mode 100644
index 000000000..30b2ea981
--- /dev/null
+++ b/qa/suites/fs/thrash/workloads/overrides/client-shutdown.yaml
@@ -0,0 +1,6 @@
+# Lengthen the timeout for thrashed MDS
+overrides:
+ ceph:
+ conf:
+ client:
+ client_shutdown_timeout: 120
diff --git a/qa/suites/fs/thrash/workloads/overrides/frag.yaml b/qa/suites/fs/thrash/workloads/overrides/frag.yaml
new file mode 120000
index 000000000..5e5cdaed8
--- /dev/null
+++ b/qa/suites/fs/thrash/workloads/overrides/frag.yaml
@@ -0,0 +1 @@
+.qa/cephfs/overrides/frag.yaml \ No newline at end of file
diff --git a/qa/suites/fs/thrash/workloads/overrides/ignorelist_health.yaml b/qa/suites/fs/thrash/workloads/overrides/ignorelist_health.yaml
new file mode 120000
index 000000000..5cb891a95
--- /dev/null
+++ b/qa/suites/fs/thrash/workloads/overrides/ignorelist_health.yaml
@@ -0,0 +1 @@
+.qa/cephfs/overrides/ignorelist_health.yaml \ No newline at end of file
diff --git a/qa/suites/fs/thrash/workloads/overrides/ignorelist_wrongly_marked_down.yaml b/qa/suites/fs/thrash/workloads/overrides/ignorelist_wrongly_marked_down.yaml
new file mode 120000
index 000000000..f317cb714
--- /dev/null
+++ b/qa/suites/fs/thrash/workloads/overrides/ignorelist_wrongly_marked_down.yaml
@@ -0,0 +1 @@
+.qa/cephfs/overrides/ignorelist_wrongly_marked_down.yaml \ No newline at end of file
diff --git a/qa/suites/fs/thrash/workloads/overrides/prefetch_dirfrags/.qa b/qa/suites/fs/thrash/workloads/overrides/prefetch_dirfrags/.qa
new file mode 120000
index 000000000..a602a0353
--- /dev/null
+++ b/qa/suites/fs/thrash/workloads/overrides/prefetch_dirfrags/.qa
@@ -0,0 +1 @@
+../.qa/ \ No newline at end of file
diff --git a/qa/suites/fs/thrash/workloads/overrides/prefetch_dirfrags/no.yaml b/qa/suites/fs/thrash/workloads/overrides/prefetch_dirfrags/no.yaml
new file mode 100644
index 000000000..91b453679
--- /dev/null
+++ b/qa/suites/fs/thrash/workloads/overrides/prefetch_dirfrags/no.yaml
@@ -0,0 +1,5 @@
+overrides:
+ ceph:
+ conf:
+ mds:
+ mds oft prefetch dirfrags: false
diff --git a/qa/suites/fs/thrash/workloads/overrides/prefetch_dirfrags/yes.yaml b/qa/suites/fs/thrash/workloads/overrides/prefetch_dirfrags/yes.yaml
new file mode 100644
index 000000000..bd202f988
--- /dev/null
+++ b/qa/suites/fs/thrash/workloads/overrides/prefetch_dirfrags/yes.yaml
@@ -0,0 +1,5 @@
+overrides:
+ ceph:
+ conf:
+ mds:
+ mds oft prefetch dirfrags: true
diff --git a/qa/suites/fs/thrash/workloads/overrides/prefetch_entire_dirfrags b/qa/suites/fs/thrash/workloads/overrides/prefetch_entire_dirfrags
new file mode 120000
index 000000000..9b8024fba
--- /dev/null
+++ b/qa/suites/fs/thrash/workloads/overrides/prefetch_entire_dirfrags
@@ -0,0 +1 @@
+.qa/cephfs/overrides/prefetch_entire_dirfrags \ No newline at end of file
diff --git a/qa/suites/fs/thrash/workloads/overrides/races.yaml b/qa/suites/fs/thrash/workloads/overrides/races.yaml
new file mode 100644
index 000000000..e7d753896
--- /dev/null
+++ b/qa/suites/fs/thrash/workloads/overrides/races.yaml
@@ -0,0 +1,5 @@
+overrides:
+ ceph:
+ conf:
+ mds:
+ mds_sleep_rank_change: 5000000.0
diff --git a/qa/suites/fs/thrash/workloads/overrides/session_timeout.yaml b/qa/suites/fs/thrash/workloads/overrides/session_timeout.yaml
new file mode 120000
index 000000000..fce0318c5
--- /dev/null
+++ b/qa/suites/fs/thrash/workloads/overrides/session_timeout.yaml
@@ -0,0 +1 @@
+.qa/cephfs/overrides/session_timeout.yaml \ No newline at end of file
diff --git a/qa/suites/fs/thrash/workloads/overrides/thrashosds-health.yaml b/qa/suites/fs/thrash/workloads/overrides/thrashosds-health.yaml
new file mode 120000
index 000000000..9124eb1aa
--- /dev/null
+++ b/qa/suites/fs/thrash/workloads/overrides/thrashosds-health.yaml
@@ -0,0 +1 @@
+.qa/tasks/thrashosds-health.yaml \ No newline at end of file
diff --git a/qa/suites/fs/thrash/workloads/ranks/.qa b/qa/suites/fs/thrash/workloads/ranks/.qa
new file mode 120000
index 000000000..a602a0353
--- /dev/null
+++ b/qa/suites/fs/thrash/workloads/ranks/.qa
@@ -0,0 +1 @@
+../.qa/ \ No newline at end of file
diff --git a/qa/suites/fs/thrash/workloads/ranks/1.yaml b/qa/suites/fs/thrash/workloads/ranks/1.yaml
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/qa/suites/fs/thrash/workloads/ranks/1.yaml
diff --git a/qa/suites/fs/thrash/workloads/ranks/3.yaml b/qa/suites/fs/thrash/workloads/ranks/3.yaml
new file mode 100644
index 000000000..9ed043c14
--- /dev/null
+++ b/qa/suites/fs/thrash/workloads/ranks/3.yaml
@@ -0,0 +1,9 @@
+overrides:
+ ceph:
+ cephfs:
+ max_mds: 3
+ check-counter:
+ counters:
+ mds:
+ - mds.exported
+ - mds.imported
diff --git a/qa/suites/fs/thrash/workloads/ranks/5.yaml b/qa/suites/fs/thrash/workloads/ranks/5.yaml
new file mode 100644
index 000000000..ed89cef3a
--- /dev/null
+++ b/qa/suites/fs/thrash/workloads/ranks/5.yaml
@@ -0,0 +1,9 @@
+overrides:
+ ceph:
+ cephfs:
+ max_mds: 5
+ check-counter:
+ counters:
+ mds:
+ - mds.exported
+ - mds.imported
diff --git a/qa/suites/fs/thrash/workloads/tasks/% b/qa/suites/fs/thrash/workloads/tasks/%
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/qa/suites/fs/thrash/workloads/tasks/%
diff --git a/qa/suites/fs/thrash/workloads/tasks/.qa b/qa/suites/fs/thrash/workloads/tasks/.qa
new file mode 120000
index 000000000..a602a0353
--- /dev/null
+++ b/qa/suites/fs/thrash/workloads/tasks/.qa
@@ -0,0 +1 @@
+../.qa/ \ No newline at end of file
diff --git a/qa/suites/fs/thrash/workloads/tasks/1-thrash/.qa b/qa/suites/fs/thrash/workloads/tasks/1-thrash/.qa
new file mode 120000
index 000000000..a602a0353
--- /dev/null
+++ b/qa/suites/fs/thrash/workloads/tasks/1-thrash/.qa
@@ -0,0 +1 @@
+../.qa/ \ No newline at end of file
diff --git a/qa/suites/fs/thrash/workloads/tasks/1-thrash/mds.yaml b/qa/suites/fs/thrash/workloads/tasks/1-thrash/mds.yaml
new file mode 100644
index 000000000..33748cea5
--- /dev/null
+++ b/qa/suites/fs/thrash/workloads/tasks/1-thrash/mds.yaml
@@ -0,0 +1,7 @@
+tasks:
+- mds_thrash:
+
+overrides:
+ ceph:
+ log-ignorelist:
+ - Replacing daemon mds
diff --git a/qa/suites/fs/thrash/workloads/tasks/1-thrash/mon.yaml b/qa/suites/fs/thrash/workloads/tasks/1-thrash/mon.yaml
new file mode 100644
index 000000000..fbbe16151
--- /dev/null
+++ b/qa/suites/fs/thrash/workloads/tasks/1-thrash/mon.yaml
@@ -0,0 +1,10 @@
+overrides:
+ ceph:
+ log-ignorelist:
+ - overall HEALTH_
+ - \(MON_DOWN\)
+tasks:
+- mon_thrash:
+ check_mds_failover: True
+ revive_delay: 20
+ thrash_delay: 10
diff --git a/qa/suites/fs/thrash/workloads/tasks/1-thrash/osd.yaml b/qa/suites/fs/thrash/workloads/tasks/1-thrash/osd.yaml
new file mode 100644
index 000000000..037d399a7
--- /dev/null
+++ b/qa/suites/fs/thrash/workloads/tasks/1-thrash/osd.yaml
@@ -0,0 +1,9 @@
+overrides:
+ ceph:
+ log-ignorelist:
+ - but it is still running
+ - objects unfound and apparently lost
+ - MDS_SLOW_METADATA_IO
+ - MDS_TRIM
+tasks:
+- thrashosds:
diff --git a/qa/suites/fs/thrash/workloads/tasks/2-workunit/.qa b/qa/suites/fs/thrash/workloads/tasks/2-workunit/.qa
new file mode 120000
index 000000000..a602a0353
--- /dev/null
+++ b/qa/suites/fs/thrash/workloads/tasks/2-workunit/.qa
@@ -0,0 +1 @@
+../.qa/ \ No newline at end of file
diff --git a/qa/suites/fs/thrash/workloads/tasks/2-workunit/fs/.qa b/qa/suites/fs/thrash/workloads/tasks/2-workunit/fs/.qa
new file mode 120000
index 000000000..a602a0353
--- /dev/null
+++ b/qa/suites/fs/thrash/workloads/tasks/2-workunit/fs/.qa
@@ -0,0 +1 @@
+../.qa/ \ No newline at end of file
diff --git a/qa/suites/fs/thrash/workloads/tasks/2-workunit/fs/snaps.yaml b/qa/suites/fs/thrash/workloads/tasks/2-workunit/fs/snaps.yaml
new file mode 100644
index 000000000..dd5a0abd4
--- /dev/null
+++ b/qa/suites/fs/thrash/workloads/tasks/2-workunit/fs/snaps.yaml
@@ -0,0 +1,6 @@
+tasks:
+- workunit:
+ timeout: 6h
+ clients:
+ all:
+ - fs/snaps
diff --git a/qa/suites/fs/thrash/workloads/tasks/2-workunit/fs/trivial_sync.yaml b/qa/suites/fs/thrash/workloads/tasks/2-workunit/fs/trivial_sync.yaml
new file mode 120000
index 000000000..a1df03277
--- /dev/null
+++ b/qa/suites/fs/thrash/workloads/tasks/2-workunit/fs/trivial_sync.yaml
@@ -0,0 +1 @@
+.qa/cephfs/tasks/cfuse_workunit_trivial_sync.yaml \ No newline at end of file
diff --git a/qa/suites/fs/thrash/workloads/tasks/2-workunit/suites/.qa b/qa/suites/fs/thrash/workloads/tasks/2-workunit/suites/.qa
new file mode 120000
index 000000000..a602a0353
--- /dev/null
+++ b/qa/suites/fs/thrash/workloads/tasks/2-workunit/suites/.qa
@@ -0,0 +1 @@
+../.qa/ \ No newline at end of file
diff --git a/qa/suites/fs/thrash/workloads/tasks/2-workunit/suites/ffsb.yaml b/qa/suites/fs/thrash/workloads/tasks/2-workunit/suites/ffsb.yaml
new file mode 100644
index 000000000..7e4f711a2
--- /dev/null
+++ b/qa/suites/fs/thrash/workloads/tasks/2-workunit/suites/ffsb.yaml
@@ -0,0 +1,13 @@
+overrides:
+ ceph:
+ log-ignorelist:
+ - SLOW_OPS
+ - slow request
+ conf:
+ osd:
+ filestore flush min: 0
+tasks:
+- workunit:
+ clients:
+ all:
+ - suites/ffsb.sh
diff --git a/qa/suites/fs/thrash/workloads/tasks/2-workunit/suites/fsstress.yaml b/qa/suites/fs/thrash/workloads/tasks/2-workunit/suites/fsstress.yaml
new file mode 100644
index 000000000..bae220292
--- /dev/null
+++ b/qa/suites/fs/thrash/workloads/tasks/2-workunit/suites/fsstress.yaml
@@ -0,0 +1,6 @@
+tasks:
+- workunit:
+ timeout: 6h
+ clients:
+ all:
+ - suites/fsstress.sh
diff --git a/qa/suites/fs/thrash/workloads/tasks/2-workunit/suites/iozone.yaml b/qa/suites/fs/thrash/workloads/tasks/2-workunit/suites/iozone.yaml
new file mode 100644
index 000000000..9270f3c51
--- /dev/null
+++ b/qa/suites/fs/thrash/workloads/tasks/2-workunit/suites/iozone.yaml
@@ -0,0 +1,5 @@
+tasks:
+- workunit:
+ clients:
+ all:
+ - suites/iozone.sh
diff --git a/qa/suites/fs/thrash/workloads/tasks/2-workunit/suites/pjd.yaml b/qa/suites/fs/thrash/workloads/tasks/2-workunit/suites/pjd.yaml
new file mode 100644
index 000000000..f7784383b
--- /dev/null
+++ b/qa/suites/fs/thrash/workloads/tasks/2-workunit/suites/pjd.yaml
@@ -0,0 +1,11 @@
+overrides:
+ ceph:
+ conf:
+ client:
+ fuse set user groups: true
+tasks:
+- workunit:
+ timeout: 6h
+ clients:
+ all:
+ - suites/pjd.sh
diff --git a/qa/suites/fs/top/% b/qa/suites/fs/top/%
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/qa/suites/fs/top/%
diff --git a/qa/suites/fs/top/.qa b/qa/suites/fs/top/.qa
new file mode 120000
index 000000000..a602a0353
--- /dev/null
+++ b/qa/suites/fs/top/.qa
@@ -0,0 +1 @@
+../.qa/ \ No newline at end of file
diff --git a/qa/suites/fs/top/begin b/qa/suites/fs/top/begin
new file mode 120000
index 000000000..77af91f7d
--- /dev/null
+++ b/qa/suites/fs/top/begin
@@ -0,0 +1 @@
+.qa/cephfs/begin/ \ No newline at end of file
diff --git a/qa/suites/fs/top/cluster/+ b/qa/suites/fs/top/cluster/+
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/qa/suites/fs/top/cluster/+
diff --git a/qa/suites/fs/top/cluster/.qa b/qa/suites/fs/top/cluster/.qa
new file mode 120000
index 000000000..a602a0353
--- /dev/null
+++ b/qa/suites/fs/top/cluster/.qa
@@ -0,0 +1 @@
+../.qa/ \ No newline at end of file
diff --git a/qa/suites/fs/top/cluster/1-node.yaml b/qa/suites/fs/top/cluster/1-node.yaml
new file mode 100644
index 000000000..48c4996e7
--- /dev/null
+++ b/qa/suites/fs/top/cluster/1-node.yaml
@@ -0,0 +1,12 @@
+meta:
+- desc: 1 ceph cluster with 1 mon, 1 mgr, 3 osds, 2 mds, 2 clients
+roles:
+- - mon.a
+ - mgr.x
+ - mds.a
+ - mds.b
+ - osd.0
+ - osd.1
+ - osd.2
+ - client.0
+ - client.1
diff --git a/qa/suites/fs/top/mount/.qa b/qa/suites/fs/top/mount/.qa
new file mode 120000
index 000000000..a602a0353
--- /dev/null
+++ b/qa/suites/fs/top/mount/.qa
@@ -0,0 +1 @@
+../.qa/ \ No newline at end of file
diff --git a/qa/suites/fs/top/mount/fuse.yaml b/qa/suites/fs/top/mount/fuse.yaml
new file mode 120000
index 000000000..0e55da9fb
--- /dev/null
+++ b/qa/suites/fs/top/mount/fuse.yaml
@@ -0,0 +1 @@
+.qa/cephfs/mount/fuse.yaml \ No newline at end of file
diff --git a/qa/suites/fs/top/objectstore/.qa b/qa/suites/fs/top/objectstore/.qa
new file mode 120000
index 000000000..a602a0353
--- /dev/null
+++ b/qa/suites/fs/top/objectstore/.qa
@@ -0,0 +1 @@
+../.qa/ \ No newline at end of file
diff --git a/qa/suites/fs/top/objectstore/bluestore-bitmap.yaml b/qa/suites/fs/top/objectstore/bluestore-bitmap.yaml
new file mode 120000
index 000000000..a59cf5175
--- /dev/null
+++ b/qa/suites/fs/top/objectstore/bluestore-bitmap.yaml
@@ -0,0 +1 @@
+.qa/objectstore/bluestore-bitmap.yaml \ No newline at end of file
diff --git a/qa/suites/fs/top/overrides/.qa b/qa/suites/fs/top/overrides/.qa
new file mode 120000
index 000000000..a602a0353
--- /dev/null
+++ b/qa/suites/fs/top/overrides/.qa
@@ -0,0 +1 @@
+../.qa/ \ No newline at end of file
diff --git a/qa/suites/fs/top/overrides/ignorelist_health.yaml b/qa/suites/fs/top/overrides/ignorelist_health.yaml
new file mode 120000
index 000000000..5cb891a95
--- /dev/null
+++ b/qa/suites/fs/top/overrides/ignorelist_health.yaml
@@ -0,0 +1 @@
+.qa/cephfs/overrides/ignorelist_health.yaml \ No newline at end of file
diff --git a/qa/suites/fs/top/supported-random-distros$ b/qa/suites/fs/top/supported-random-distros$
new file mode 120000
index 000000000..0862b4457
--- /dev/null
+++ b/qa/suites/fs/top/supported-random-distros$
@@ -0,0 +1 @@
+.qa/distros/supported-random-distro$ \ No newline at end of file
diff --git a/qa/suites/fs/top/tasks/.qa b/qa/suites/fs/top/tasks/.qa
new file mode 120000
index 000000000..a602a0353
--- /dev/null
+++ b/qa/suites/fs/top/tasks/.qa
@@ -0,0 +1 @@
+../.qa/ \ No newline at end of file
diff --git a/qa/suites/fs/top/tasks/fstop.yaml b/qa/suites/fs/top/tasks/fstop.yaml
new file mode 100644
index 000000000..406f6804f
--- /dev/null
+++ b/qa/suites/fs/top/tasks/fstop.yaml
@@ -0,0 +1,4 @@
+tasks:
+ - cephfs_test_runner:
+ modules:
+ - tasks.cephfs.test_fstop
diff --git a/qa/suites/fs/traceless/% b/qa/suites/fs/traceless/%
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/qa/suites/fs/traceless/%
diff --git a/qa/suites/fs/traceless/.qa b/qa/suites/fs/traceless/.qa
new file mode 120000
index 000000000..a602a0353
--- /dev/null
+++ b/qa/suites/fs/traceless/.qa
@@ -0,0 +1 @@
+../.qa/ \ No newline at end of file
diff --git a/qa/suites/fs/traceless/begin b/qa/suites/fs/traceless/begin
new file mode 120000
index 000000000..77af91f7d
--- /dev/null
+++ b/qa/suites/fs/traceless/begin
@@ -0,0 +1 @@
+.qa/cephfs/begin/ \ No newline at end of file
diff --git a/qa/suites/fs/traceless/clusters/.qa b/qa/suites/fs/traceless/clusters/.qa
new file mode 120000
index 000000000..a602a0353
--- /dev/null
+++ b/qa/suites/fs/traceless/clusters/.qa
@@ -0,0 +1 @@
+../.qa/ \ No newline at end of file
diff --git a/qa/suites/fs/traceless/clusters/fixed-2-ucephfs.yaml b/qa/suites/fs/traceless/clusters/fixed-2-ucephfs.yaml
new file mode 120000
index 000000000..b0c41a89a
--- /dev/null
+++ b/qa/suites/fs/traceless/clusters/fixed-2-ucephfs.yaml
@@ -0,0 +1 @@
+.qa/cephfs/clusters/fixed-2-ucephfs.yaml \ No newline at end of file
diff --git a/qa/suites/fs/traceless/conf b/qa/suites/fs/traceless/conf
new file mode 120000
index 000000000..16e8cc44b
--- /dev/null
+++ b/qa/suites/fs/traceless/conf
@@ -0,0 +1 @@
+.qa/cephfs/conf \ No newline at end of file
diff --git a/qa/suites/fs/traceless/distro b/qa/suites/fs/traceless/distro
new file mode 120000
index 000000000..0862b4457
--- /dev/null
+++ b/qa/suites/fs/traceless/distro
@@ -0,0 +1 @@
+.qa/distros/supported-random-distro$ \ No newline at end of file
diff --git a/qa/suites/fs/traceless/mount/.qa b/qa/suites/fs/traceless/mount/.qa
new file mode 120000
index 000000000..a602a0353
--- /dev/null
+++ b/qa/suites/fs/traceless/mount/.qa
@@ -0,0 +1 @@
+../.qa/ \ No newline at end of file
diff --git a/qa/suites/fs/traceless/mount/fuse.yaml b/qa/suites/fs/traceless/mount/fuse.yaml
new file mode 120000
index 000000000..0e55da9fb
--- /dev/null
+++ b/qa/suites/fs/traceless/mount/fuse.yaml
@@ -0,0 +1 @@
+.qa/cephfs/mount/fuse.yaml \ No newline at end of file
diff --git a/qa/suites/fs/traceless/objectstore-ec b/qa/suites/fs/traceless/objectstore-ec
new file mode 120000
index 000000000..affe29493
--- /dev/null
+++ b/qa/suites/fs/traceless/objectstore-ec
@@ -0,0 +1 @@
+.qa/cephfs/objectstore-ec \ No newline at end of file
diff --git a/qa/suites/fs/traceless/overrides/+ b/qa/suites/fs/traceless/overrides/+
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/qa/suites/fs/traceless/overrides/+
diff --git a/qa/suites/fs/traceless/overrides/.qa b/qa/suites/fs/traceless/overrides/.qa
new file mode 120000
index 000000000..a602a0353
--- /dev/null
+++ b/qa/suites/fs/traceless/overrides/.qa
@@ -0,0 +1 @@
+../.qa/ \ No newline at end of file
diff --git a/qa/suites/fs/traceless/overrides/frag.yaml b/qa/suites/fs/traceless/overrides/frag.yaml
new file mode 120000
index 000000000..5e5cdaed8
--- /dev/null
+++ b/qa/suites/fs/traceless/overrides/frag.yaml
@@ -0,0 +1 @@
+.qa/cephfs/overrides/frag.yaml \ No newline at end of file
diff --git a/qa/suites/fs/traceless/overrides/ignorelist_health.yaml b/qa/suites/fs/traceless/overrides/ignorelist_health.yaml
new file mode 120000
index 000000000..5cb891a95
--- /dev/null
+++ b/qa/suites/fs/traceless/overrides/ignorelist_health.yaml
@@ -0,0 +1 @@
+.qa/cephfs/overrides/ignorelist_health.yaml \ No newline at end of file
diff --git a/qa/suites/fs/traceless/overrides/ignorelist_wrongly_marked_down.yaml b/qa/suites/fs/traceless/overrides/ignorelist_wrongly_marked_down.yaml
new file mode 120000
index 000000000..f317cb714
--- /dev/null
+++ b/qa/suites/fs/traceless/overrides/ignorelist_wrongly_marked_down.yaml
@@ -0,0 +1 @@
+.qa/cephfs/overrides/ignorelist_wrongly_marked_down.yaml \ No newline at end of file
diff --git a/qa/suites/fs/traceless/tasks/.qa b/qa/suites/fs/traceless/tasks/.qa
new file mode 120000
index 000000000..a602a0353
--- /dev/null
+++ b/qa/suites/fs/traceless/tasks/.qa
@@ -0,0 +1 @@
+../.qa/ \ No newline at end of file
diff --git a/qa/suites/fs/traceless/tasks/cfuse_workunit_suites_blogbench.yaml b/qa/suites/fs/traceless/tasks/cfuse_workunit_suites_blogbench.yaml
new file mode 120000
index 000000000..8702f4f3d
--- /dev/null
+++ b/qa/suites/fs/traceless/tasks/cfuse_workunit_suites_blogbench.yaml
@@ -0,0 +1 @@
+.qa/cephfs/tasks/cfuse_workunit_suites_blogbench.yaml \ No newline at end of file
diff --git a/qa/suites/fs/traceless/tasks/cfuse_workunit_suites_dbench.yaml b/qa/suites/fs/traceless/tasks/cfuse_workunit_suites_dbench.yaml
new file mode 120000
index 000000000..b0f876c3c
--- /dev/null
+++ b/qa/suites/fs/traceless/tasks/cfuse_workunit_suites_dbench.yaml
@@ -0,0 +1 @@
+.qa/cephfs/tasks/cfuse_workunit_suites_dbench.yaml \ No newline at end of file
diff --git a/qa/suites/fs/traceless/tasks/cfuse_workunit_suites_ffsb.yaml b/qa/suites/fs/traceless/tasks/cfuse_workunit_suites_ffsb.yaml
new file mode 120000
index 000000000..01e889b23
--- /dev/null
+++ b/qa/suites/fs/traceless/tasks/cfuse_workunit_suites_ffsb.yaml
@@ -0,0 +1 @@
+.qa/cephfs/tasks/cfuse_workunit_suites_ffsb.yaml \ No newline at end of file
diff --git a/qa/suites/fs/traceless/tasks/cfuse_workunit_suites_fsstress.yaml b/qa/suites/fs/traceless/tasks/cfuse_workunit_suites_fsstress.yaml
new file mode 120000
index 000000000..c2e859fff
--- /dev/null
+++ b/qa/suites/fs/traceless/tasks/cfuse_workunit_suites_fsstress.yaml
@@ -0,0 +1 @@
+.qa/cephfs/tasks/cfuse_workunit_suites_fsstress.yaml \ No newline at end of file
diff --git a/qa/suites/fs/traceless/traceless/.qa b/qa/suites/fs/traceless/traceless/.qa
new file mode 120000
index 000000000..a602a0353
--- /dev/null
+++ b/qa/suites/fs/traceless/traceless/.qa
@@ -0,0 +1 @@
+../.qa/ \ No newline at end of file
diff --git a/qa/suites/fs/traceless/traceless/50pc.yaml b/qa/suites/fs/traceless/traceless/50pc.yaml
new file mode 100644
index 000000000..e0418bcb2
--- /dev/null
+++ b/qa/suites/fs/traceless/traceless/50pc.yaml
@@ -0,0 +1,5 @@
+overrides:
+ ceph:
+ conf:
+ mds:
+ mds inject traceless reply probability: .5
diff --git a/qa/suites/fs/upgrade/.qa b/qa/suites/fs/upgrade/.qa
new file mode 120000
index 000000000..a602a0353
--- /dev/null
+++ b/qa/suites/fs/upgrade/.qa
@@ -0,0 +1 @@
+../.qa/ \ No newline at end of file
diff --git a/qa/suites/fs/upgrade/featureful_client/.qa b/qa/suites/fs/upgrade/featureful_client/.qa
new file mode 120000
index 000000000..a602a0353
--- /dev/null
+++ b/qa/suites/fs/upgrade/featureful_client/.qa
@@ -0,0 +1 @@
+../.qa/ \ No newline at end of file
diff --git a/qa/suites/fs/upgrade/featureful_client/old_client/% b/qa/suites/fs/upgrade/featureful_client/old_client/%
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/qa/suites/fs/upgrade/featureful_client/old_client/%
diff --git a/qa/suites/fs/upgrade/featureful_client/old_client/.qa b/qa/suites/fs/upgrade/featureful_client/old_client/.qa
new file mode 120000
index 000000000..a602a0353
--- /dev/null
+++ b/qa/suites/fs/upgrade/featureful_client/old_client/.qa
@@ -0,0 +1 @@
+../.qa/ \ No newline at end of file
diff --git a/qa/suites/fs/upgrade/featureful_client/old_client/bluestore-bitmap.yaml b/qa/suites/fs/upgrade/featureful_client/old_client/bluestore-bitmap.yaml
new file mode 120000
index 000000000..17ad98e79
--- /dev/null
+++ b/qa/suites/fs/upgrade/featureful_client/old_client/bluestore-bitmap.yaml
@@ -0,0 +1 @@
+../../../../../cephfs/objectstore-ec/bluestore-bitmap.yaml \ No newline at end of file
diff --git a/qa/suites/fs/upgrade/featureful_client/old_client/centos_8.yaml b/qa/suites/fs/upgrade/featureful_client/old_client/centos_8.yaml
new file mode 120000
index 000000000..5dceec7e2
--- /dev/null
+++ b/qa/suites/fs/upgrade/featureful_client/old_client/centos_8.yaml
@@ -0,0 +1 @@
+.qa/distros/supported/centos_8.stream.yaml \ No newline at end of file
diff --git a/qa/suites/fs/upgrade/featureful_client/old_client/clusters/.qa b/qa/suites/fs/upgrade/featureful_client/old_client/clusters/.qa
new file mode 120000
index 000000000..a602a0353
--- /dev/null
+++ b/qa/suites/fs/upgrade/featureful_client/old_client/clusters/.qa
@@ -0,0 +1 @@
+../.qa/ \ No newline at end of file
diff --git a/qa/suites/fs/upgrade/featureful_client/old_client/clusters/1-mds-2-client-micro.yaml b/qa/suites/fs/upgrade/featureful_client/old_client/clusters/1-mds-2-client-micro.yaml
new file mode 120000
index 000000000..feb68f343
--- /dev/null
+++ b/qa/suites/fs/upgrade/featureful_client/old_client/clusters/1-mds-2-client-micro.yaml
@@ -0,0 +1 @@
+.qa/cephfs/clusters/1-mds-2-client-micro.yaml \ No newline at end of file
diff --git a/qa/suites/fs/upgrade/featureful_client/old_client/conf b/qa/suites/fs/upgrade/featureful_client/old_client/conf
new file mode 120000
index 000000000..6d4712984
--- /dev/null
+++ b/qa/suites/fs/upgrade/featureful_client/old_client/conf
@@ -0,0 +1 @@
+.qa/cephfs/conf/ \ No newline at end of file
diff --git a/qa/suites/fs/upgrade/featureful_client/old_client/overrides/% b/qa/suites/fs/upgrade/featureful_client/old_client/overrides/%
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/qa/suites/fs/upgrade/featureful_client/old_client/overrides/%
diff --git a/qa/suites/fs/upgrade/featureful_client/old_client/overrides/.qa b/qa/suites/fs/upgrade/featureful_client/old_client/overrides/.qa
new file mode 120000
index 000000000..a602a0353
--- /dev/null
+++ b/qa/suites/fs/upgrade/featureful_client/old_client/overrides/.qa
@@ -0,0 +1 @@
+../.qa/ \ No newline at end of file
diff --git a/qa/suites/fs/upgrade/featureful_client/old_client/overrides/ignorelist_health.yaml b/qa/suites/fs/upgrade/featureful_client/old_client/overrides/ignorelist_health.yaml
new file mode 120000
index 000000000..5cb891a95
--- /dev/null
+++ b/qa/suites/fs/upgrade/featureful_client/old_client/overrides/ignorelist_health.yaml
@@ -0,0 +1 @@
+.qa/cephfs/overrides/ignorelist_health.yaml \ No newline at end of file
diff --git a/qa/suites/fs/upgrade/featureful_client/old_client/overrides/ignorelist_wrongly_marked_down.yaml b/qa/suites/fs/upgrade/featureful_client/old_client/overrides/ignorelist_wrongly_marked_down.yaml
new file mode 120000
index 000000000..f317cb714
--- /dev/null
+++ b/qa/suites/fs/upgrade/featureful_client/old_client/overrides/ignorelist_wrongly_marked_down.yaml
@@ -0,0 +1 @@
+.qa/cephfs/overrides/ignorelist_wrongly_marked_down.yaml \ No newline at end of file
diff --git a/qa/suites/fs/upgrade/featureful_client/old_client/overrides/multimds/.qa b/qa/suites/fs/upgrade/featureful_client/old_client/overrides/multimds/.qa
new file mode 120000
index 000000000..a602a0353
--- /dev/null
+++ b/qa/suites/fs/upgrade/featureful_client/old_client/overrides/multimds/.qa
@@ -0,0 +1 @@
+../.qa/ \ No newline at end of file
diff --git a/qa/suites/fs/upgrade/featureful_client/old_client/overrides/multimds/no.yaml b/qa/suites/fs/upgrade/featureful_client/old_client/overrides/multimds/no.yaml
new file mode 100644
index 000000000..f9e95daa9
--- /dev/null
+++ b/qa/suites/fs/upgrade/featureful_client/old_client/overrides/multimds/no.yaml
@@ -0,0 +1,4 @@
+overrides:
+ ceph:
+ cephfs:
+ max_mds: 1
diff --git a/qa/suites/fs/upgrade/featureful_client/old_client/overrides/multimds/yes.yaml b/qa/suites/fs/upgrade/featureful_client/old_client/overrides/multimds/yes.yaml
new file mode 100644
index 000000000..b3a9b5d67
--- /dev/null
+++ b/qa/suites/fs/upgrade/featureful_client/old_client/overrides/multimds/yes.yaml
@@ -0,0 +1,4 @@
+overrides:
+ ceph:
+ cephfs:
+ max_mds: 2
diff --git a/qa/suites/fs/upgrade/featureful_client/old_client/overrides/pg-warn.yaml b/qa/suites/fs/upgrade/featureful_client/old_client/overrides/pg-warn.yaml
new file mode 100644
index 000000000..4ae54a40d
--- /dev/null
+++ b/qa/suites/fs/upgrade/featureful_client/old_client/overrides/pg-warn.yaml
@@ -0,0 +1,5 @@
+overrides:
+ ceph:
+ conf:
+ global:
+ mon pg warn min per osd: 0
diff --git a/qa/suites/fs/upgrade/featureful_client/old_client/tasks/% b/qa/suites/fs/upgrade/featureful_client/old_client/tasks/%
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/qa/suites/fs/upgrade/featureful_client/old_client/tasks/%
diff --git a/qa/suites/fs/upgrade/featureful_client/old_client/tasks/.qa b/qa/suites/fs/upgrade/featureful_client/old_client/tasks/.qa
new file mode 120000
index 000000000..a602a0353
--- /dev/null
+++ b/qa/suites/fs/upgrade/featureful_client/old_client/tasks/.qa
@@ -0,0 +1 @@
+../.qa/ \ No newline at end of file
diff --git a/qa/suites/fs/upgrade/featureful_client/old_client/tasks/0-octopus.yaml b/qa/suites/fs/upgrade/featureful_client/old_client/tasks/0-octopus.yaml
new file mode 100644
index 000000000..e7774423f
--- /dev/null
+++ b/qa/suites/fs/upgrade/featureful_client/old_client/tasks/0-octopus.yaml
@@ -0,0 +1,39 @@
+meta:
+- desc: |
+ install ceph/octopus latest
+tasks:
+- install:
+ branch: octopus
+ exclude_packages:
+ - librados3
+ - ceph-mgr-dashboard
+ - ceph-mgr-diskprediction-local
+ - ceph-mgr-rook
+ - ceph-mgr-cephadm
+ - cephadm
+ - ceph-volume
+ extra_packages: ['librados2']
+- print: "**** done installing octopus"
+- ceph:
+ log-ignorelist:
+ - overall HEALTH_
+ - \(FS_
+ - \(MDS_
+ - \(OSD_
+ - \(MON_DOWN\)
+ - \(CACHE_POOL_
+ - \(POOL_
+ - \(MGR_DOWN\)
+ - \(PG_
+ - \(SMALLER_PGP_NUM\)
+ - Monitor daemon marked osd
+ - Behind on trimming
+ - Manager daemon
+ conf:
+ global:
+ mon warn on pool no app: false
+ ms bind msgr2: false
+- exec:
+ osd.0:
+ - ceph osd set-require-min-compat-client octopus
+- print: "**** done ceph"
diff --git a/qa/suites/fs/upgrade/featureful_client/old_client/tasks/1-client.yaml b/qa/suites/fs/upgrade/featureful_client/old_client/tasks/1-client.yaml
new file mode 100644
index 000000000..976d6e265
--- /dev/null
+++ b/qa/suites/fs/upgrade/featureful_client/old_client/tasks/1-client.yaml
@@ -0,0 +1,8 @@
+tasks:
+- ceph-fuse:
+- print: "**** done octopus client"
+- workunit:
+ clients:
+ all:
+ - suites/fsstress.sh
+- print: "**** done fsstress"
diff --git a/qa/suites/fs/upgrade/featureful_client/old_client/tasks/2-upgrade.yaml b/qa/suites/fs/upgrade/featureful_client/old_client/tasks/2-upgrade.yaml
new file mode 100644
index 000000000..26c185946
--- /dev/null
+++ b/qa/suites/fs/upgrade/featureful_client/old_client/tasks/2-upgrade.yaml
@@ -0,0 +1,48 @@
+overrides:
+ ceph:
+ log-ignorelist:
+ - scrub mismatch
+ - ScrubResult
+ - wrongly marked
+ - \(POOL_APP_NOT_ENABLED\)
+ - \(SLOW_OPS\)
+ - overall HEALTH_
+ - \(MON_MSGR2_NOT_ENABLED\)
+ - slow request
+ conf:
+ global:
+ bluestore warn on legacy statfs: false
+ bluestore warn on no per pool omap: false
+ mon:
+ mon warn on osd down out interval zero: false
+
+tasks:
+- mds_pre_upgrade:
+- print: "**** done mds pre-upgrade sequence"
+- install.upgrade:
+ # upgrade the single cluster node, which is running all the mon/mds/osd/mgr daemons
+ mon.a:
+ branch: quincy
+- print: "**** done install.upgrade the host"
+- ceph.restart:
+ daemons: [mon.*, mgr.*]
+ mon-health-to-clog: false
+ wait-for-healthy: false
+- ceph.healthy:
+- ceph.restart:
+ daemons: [osd.*]
+ wait-for-healthy: false
+ wait-for-osds-up: true
+- ceph.stop: [mds.*]
+- ceph.restart:
+ daemons: [mds.*]
+ wait-for-healthy: false
+ wait-for-osds-up: true
+- exec:
+ mon.a:
+ - ceph osd dump -f json-pretty
+ - ceph versions
+ - ceph osd require-osd-release quincy
+ - for f in `ceph osd pool ls` ; do ceph osd pool set $f pg_autoscale_mode off ; done
+- ceph.healthy:
+- print: "**** done ceph.restart"
diff --git a/qa/suites/fs/upgrade/featureful_client/old_client/tasks/3-compat_client/.qa b/qa/suites/fs/upgrade/featureful_client/old_client/tasks/3-compat_client/.qa
new file mode 120000
index 000000000..a602a0353
--- /dev/null
+++ b/qa/suites/fs/upgrade/featureful_client/old_client/tasks/3-compat_client/.qa
@@ -0,0 +1 @@
+../.qa/ \ No newline at end of file
diff --git a/qa/suites/fs/upgrade/featureful_client/old_client/tasks/3-compat_client/no.yaml b/qa/suites/fs/upgrade/featureful_client/old_client/tasks/3-compat_client/no.yaml
new file mode 100644
index 000000000..b495eb41b
--- /dev/null
+++ b/qa/suites/fs/upgrade/featureful_client/old_client/tasks/3-compat_client/no.yaml
@@ -0,0 +1,6 @@
+tasks:
+- workunit:
+ clients:
+ all:
+ - suites/fsstress.sh
+- print: "**** done fsstress"
diff --git a/qa/suites/fs/upgrade/featureful_client/old_client/tasks/3-compat_client/quincy.yaml b/qa/suites/fs/upgrade/featureful_client/old_client/tasks/3-compat_client/quincy.yaml
new file mode 100644
index 000000000..138d8f4e2
--- /dev/null
+++ b/qa/suites/fs/upgrade/featureful_client/old_client/tasks/3-compat_client/quincy.yaml
@@ -0,0 +1,12 @@
+overrides:
+ ceph:
+ log-ignorelist:
+ - missing required features
+tasks:
+- exec:
+ mon.a:
+ - ceph fs dump --format=json-pretty
+ - ceph fs required_client_features cephfs add metric_collect
+- sleep:
+ duration: 5
+- fs.clients_evicted:
diff --git a/qa/suites/fs/upgrade/featureful_client/upgraded_client/% b/qa/suites/fs/upgrade/featureful_client/upgraded_client/%
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/qa/suites/fs/upgrade/featureful_client/upgraded_client/%
diff --git a/qa/suites/fs/upgrade/featureful_client/upgraded_client/.qa b/qa/suites/fs/upgrade/featureful_client/upgraded_client/.qa
new file mode 120000
index 000000000..a602a0353
--- /dev/null
+++ b/qa/suites/fs/upgrade/featureful_client/upgraded_client/.qa
@@ -0,0 +1 @@
+../.qa/ \ No newline at end of file
diff --git a/qa/suites/fs/upgrade/featureful_client/upgraded_client/bluestore-bitmap.yaml b/qa/suites/fs/upgrade/featureful_client/upgraded_client/bluestore-bitmap.yaml
new file mode 120000
index 000000000..17ad98e79
--- /dev/null
+++ b/qa/suites/fs/upgrade/featureful_client/upgraded_client/bluestore-bitmap.yaml
@@ -0,0 +1 @@
+../../../../../cephfs/objectstore-ec/bluestore-bitmap.yaml \ No newline at end of file
diff --git a/qa/suites/fs/upgrade/featureful_client/upgraded_client/centos_8.yaml b/qa/suites/fs/upgrade/featureful_client/upgraded_client/centos_8.yaml
new file mode 120000
index 000000000..5dceec7e2
--- /dev/null
+++ b/qa/suites/fs/upgrade/featureful_client/upgraded_client/centos_8.yaml
@@ -0,0 +1 @@
+.qa/distros/supported/centos_8.stream.yaml \ No newline at end of file
diff --git a/qa/suites/fs/upgrade/featureful_client/upgraded_client/clusters/.qa b/qa/suites/fs/upgrade/featureful_client/upgraded_client/clusters/.qa
new file mode 120000
index 000000000..a602a0353
--- /dev/null
+++ b/qa/suites/fs/upgrade/featureful_client/upgraded_client/clusters/.qa
@@ -0,0 +1 @@
+../.qa/ \ No newline at end of file
diff --git a/qa/suites/fs/upgrade/featureful_client/upgraded_client/clusters/1-mds-2-client-micro.yaml b/qa/suites/fs/upgrade/featureful_client/upgraded_client/clusters/1-mds-2-client-micro.yaml
new file mode 120000
index 000000000..feb68f343
--- /dev/null
+++ b/qa/suites/fs/upgrade/featureful_client/upgraded_client/clusters/1-mds-2-client-micro.yaml
@@ -0,0 +1 @@
+.qa/cephfs/clusters/1-mds-2-client-micro.yaml \ No newline at end of file
diff --git a/qa/suites/fs/upgrade/featureful_client/upgraded_client/conf b/qa/suites/fs/upgrade/featureful_client/upgraded_client/conf
new file mode 120000
index 000000000..6d4712984
--- /dev/null
+++ b/qa/suites/fs/upgrade/featureful_client/upgraded_client/conf
@@ -0,0 +1 @@
+.qa/cephfs/conf/ \ No newline at end of file
diff --git a/qa/suites/fs/upgrade/featureful_client/upgraded_client/overrides/% b/qa/suites/fs/upgrade/featureful_client/upgraded_client/overrides/%
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/qa/suites/fs/upgrade/featureful_client/upgraded_client/overrides/%
diff --git a/qa/suites/fs/upgrade/featureful_client/upgraded_client/overrides/.qa b/qa/suites/fs/upgrade/featureful_client/upgraded_client/overrides/.qa
new file mode 120000
index 000000000..a602a0353
--- /dev/null
+++ b/qa/suites/fs/upgrade/featureful_client/upgraded_client/overrides/.qa
@@ -0,0 +1 @@
+../.qa/ \ No newline at end of file
diff --git a/qa/suites/fs/upgrade/featureful_client/upgraded_client/overrides/ignorelist_health.yaml b/qa/suites/fs/upgrade/featureful_client/upgraded_client/overrides/ignorelist_health.yaml
new file mode 120000
index 000000000..5cb891a95
--- /dev/null
+++ b/qa/suites/fs/upgrade/featureful_client/upgraded_client/overrides/ignorelist_health.yaml
@@ -0,0 +1 @@
+.qa/cephfs/overrides/ignorelist_health.yaml \ No newline at end of file
diff --git a/qa/suites/fs/upgrade/featureful_client/upgraded_client/overrides/ignorelist_wrongly_marked_down.yaml b/qa/suites/fs/upgrade/featureful_client/upgraded_client/overrides/ignorelist_wrongly_marked_down.yaml
new file mode 120000
index 000000000..f317cb714
--- /dev/null
+++ b/qa/suites/fs/upgrade/featureful_client/upgraded_client/overrides/ignorelist_wrongly_marked_down.yaml
@@ -0,0 +1 @@
+.qa/cephfs/overrides/ignorelist_wrongly_marked_down.yaml \ No newline at end of file
diff --git a/qa/suites/fs/upgrade/featureful_client/upgraded_client/overrides/multimds/.qa b/qa/suites/fs/upgrade/featureful_client/upgraded_client/overrides/multimds/.qa
new file mode 120000
index 000000000..a602a0353
--- /dev/null
+++ b/qa/suites/fs/upgrade/featureful_client/upgraded_client/overrides/multimds/.qa
@@ -0,0 +1 @@
+../.qa/ \ No newline at end of file
diff --git a/qa/suites/fs/upgrade/featureful_client/upgraded_client/overrides/multimds/no.yaml b/qa/suites/fs/upgrade/featureful_client/upgraded_client/overrides/multimds/no.yaml
new file mode 100644
index 000000000..f9e95daa9
--- /dev/null
+++ b/qa/suites/fs/upgrade/featureful_client/upgraded_client/overrides/multimds/no.yaml
@@ -0,0 +1,4 @@
+overrides:
+ ceph:
+ cephfs:
+ max_mds: 1
diff --git a/qa/suites/fs/upgrade/featureful_client/upgraded_client/overrides/multimds/yes.yaml b/qa/suites/fs/upgrade/featureful_client/upgraded_client/overrides/multimds/yes.yaml
new file mode 100644
index 000000000..b3a9b5d67
--- /dev/null
+++ b/qa/suites/fs/upgrade/featureful_client/upgraded_client/overrides/multimds/yes.yaml
@@ -0,0 +1,4 @@
+overrides:
+ ceph:
+ cephfs:
+ max_mds: 2
diff --git a/qa/suites/fs/upgrade/featureful_client/upgraded_client/overrides/pg-warn.yaml b/qa/suites/fs/upgrade/featureful_client/upgraded_client/overrides/pg-warn.yaml
new file mode 100644
index 000000000..4ae54a40d
--- /dev/null
+++ b/qa/suites/fs/upgrade/featureful_client/upgraded_client/overrides/pg-warn.yaml
@@ -0,0 +1,5 @@
+overrides:
+ ceph:
+ conf:
+ global:
+ mon pg warn min per osd: 0
diff --git a/qa/suites/fs/upgrade/featureful_client/upgraded_client/tasks/% b/qa/suites/fs/upgrade/featureful_client/upgraded_client/tasks/%
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/qa/suites/fs/upgrade/featureful_client/upgraded_client/tasks/%
diff --git a/qa/suites/fs/upgrade/featureful_client/upgraded_client/tasks/.qa b/qa/suites/fs/upgrade/featureful_client/upgraded_client/tasks/.qa
new file mode 120000
index 000000000..a602a0353
--- /dev/null
+++ b/qa/suites/fs/upgrade/featureful_client/upgraded_client/tasks/.qa
@@ -0,0 +1 @@
+../.qa/ \ No newline at end of file
diff --git a/qa/suites/fs/upgrade/featureful_client/upgraded_client/tasks/0-octopus.yaml b/qa/suites/fs/upgrade/featureful_client/upgraded_client/tasks/0-octopus.yaml
new file mode 100644
index 000000000..e7774423f
--- /dev/null
+++ b/qa/suites/fs/upgrade/featureful_client/upgraded_client/tasks/0-octopus.yaml
@@ -0,0 +1,39 @@
+meta:
+- desc: |
+ install ceph/octopus latest
+tasks:
+- install:
+ branch: octopus
+ exclude_packages:
+ - librados3
+ - ceph-mgr-dashboard
+ - ceph-mgr-diskprediction-local
+ - ceph-mgr-rook
+ - ceph-mgr-cephadm
+ - cephadm
+ - ceph-volume
+ extra_packages: ['librados2']
+- print: "**** done installing octopus"
+- ceph:
+ log-ignorelist:
+ - overall HEALTH_
+ - \(FS_
+ - \(MDS_
+ - \(OSD_
+ - \(MON_DOWN\)
+ - \(CACHE_POOL_
+ - \(POOL_
+ - \(MGR_DOWN\)
+ - \(PG_
+ - \(SMALLER_PGP_NUM\)
+ - Monitor daemon marked osd
+ - Behind on trimming
+ - Manager daemon
+ conf:
+ global:
+ mon warn on pool no app: false
+ ms bind msgr2: false
+- exec:
+ osd.0:
+ - ceph osd set-require-min-compat-client octopus
+- print: "**** done ceph"
diff --git a/qa/suites/fs/upgrade/featureful_client/upgraded_client/tasks/1-client.yaml b/qa/suites/fs/upgrade/featureful_client/upgraded_client/tasks/1-client.yaml
new file mode 100644
index 000000000..c9b4c046f
--- /dev/null
+++ b/qa/suites/fs/upgrade/featureful_client/upgraded_client/tasks/1-client.yaml
@@ -0,0 +1,11 @@
+nuke-on-error: false
+overrides:
+ nuke-on-error: false
+tasks:
+- ceph-fuse:
+- print: "**** done octopus client"
+#- workunit:
+# clients:
+# all:
+# - suites/fsstress.sh
+- print: "**** done fsstress"
diff --git a/qa/suites/fs/upgrade/featureful_client/upgraded_client/tasks/2-upgrade.yaml b/qa/suites/fs/upgrade/featureful_client/upgraded_client/tasks/2-upgrade.yaml
new file mode 100644
index 000000000..e5ea8b19c
--- /dev/null
+++ b/qa/suites/fs/upgrade/featureful_client/upgraded_client/tasks/2-upgrade.yaml
@@ -0,0 +1,48 @@
+overrides:
+ ceph:
+ log-ignorelist:
+ - scrub mismatch
+ - ScrubResult
+ - wrongly marked
+ - \(POOL_APP_NOT_ENABLED\)
+ - \(SLOW_OPS\)
+ - overall HEALTH_
+ - \(MON_MSGR2_NOT_ENABLED\)
+ - slow request
+ conf:
+ global:
+ bluestore warn on legacy statfs: false
+ bluestore warn on no per pool omap: false
+ mon:
+ mon warn on osd down out interval zero: false
+
+tasks:
+- mds_pre_upgrade:
+- print: "**** done mds pre-upgrade sequence"
+- install.upgrade:
+ # upgrade the single cluster node, which is running all the mon/mds/osd/mgr daemons
+ mon.a:
+ branch: quincy
+- print: "**** done install.upgrade the host"
+- ceph.restart:
+ daemons: [mon.*, mgr.*]
+ mon-health-to-clog: false
+ wait-for-healthy: false
+- ceph.healthy:
+- ceph.restart:
+ daemons: [osd.*]
+ wait-for-healthy: false
+ wait-for-osds-up: true
+- ceph.stop: [mds.*]
+- ceph.restart:
+ daemons: [mds.*]
+ wait-for-healthy: false
+ wait-for-osds-up: true
+- exec:
+ mon.a:
+ - ceph versions
+ - ceph osd dump -f json-pretty
+ - ceph osd require-osd-release quincy
+ - for f in `ceph osd pool ls` ; do ceph osd pool set $f pg_autoscale_mode off ; done
+- ceph.healthy:
+- print: "**** done ceph.restart"
diff --git a/qa/suites/fs/upgrade/featureful_client/upgraded_client/tasks/3-client-upgrade.yaml b/qa/suites/fs/upgrade/featureful_client/upgraded_client/tasks/3-client-upgrade.yaml
new file mode 100644
index 000000000..251c349ac
--- /dev/null
+++ b/qa/suites/fs/upgrade/featureful_client/upgraded_client/tasks/3-client-upgrade.yaml
@@ -0,0 +1,15 @@
+tasks:
+- install.upgrade:
+ client.0:
+ branch: quincy
+- print: "**** done install.upgrade on client.0"
+- ceph-fuse:
+ client.0:
+ mounted: false
+ client.1:
+ skip: true
+- ceph-fuse:
+ client.0:
+ client.1:
+ skip: true
+- print: "**** done remount client"
diff --git a/qa/suites/fs/upgrade/featureful_client/upgraded_client/tasks/4-compat_client.yaml b/qa/suites/fs/upgrade/featureful_client/upgraded_client/tasks/4-compat_client.yaml
new file mode 100644
index 000000000..d8f260007
--- /dev/null
+++ b/qa/suites/fs/upgrade/featureful_client/upgraded_client/tasks/4-compat_client.yaml
@@ -0,0 +1,17 @@
+overrides:
+ ceph:
+ log-ignorelist:
+ - missing required features
+tasks:
+- exec:
+ mon.a:
+ - ceph fs dump --format=json-pretty
+ - ceph fs required_client_features cephfs add metric_collect
+- sleep:
+ duration: 5
+# client.0 is upgraded and client.1 is evicted by the MDS due to missing
+# feature compat set
+- fs.clients_evicted:
+ clients:
+ client.0: False
+ client.1: True
diff --git a/qa/suites/fs/upgrade/featureful_client/upgraded_client/tasks/5-client-sanity.yaml b/qa/suites/fs/upgrade/featureful_client/upgraded_client/tasks/5-client-sanity.yaml
new file mode 100644
index 000000000..e206457e6
--- /dev/null
+++ b/qa/suites/fs/upgrade/featureful_client/upgraded_client/tasks/5-client-sanity.yaml
@@ -0,0 +1,6 @@
+tasks:
+- workunit:
+ clients:
+ client.0:
+ - suites/fsstress.sh
+- print: "**** done fsstress"
diff --git a/qa/suites/fs/upgrade/mds_upgrade_sequence/% b/qa/suites/fs/upgrade/mds_upgrade_sequence/%
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/qa/suites/fs/upgrade/mds_upgrade_sequence/%
diff --git a/qa/suites/fs/upgrade/mds_upgrade_sequence/.qa b/qa/suites/fs/upgrade/mds_upgrade_sequence/.qa
new file mode 120000
index 000000000..a602a0353
--- /dev/null
+++ b/qa/suites/fs/upgrade/mds_upgrade_sequence/.qa
@@ -0,0 +1 @@
+../.qa/ \ No newline at end of file
diff --git a/qa/suites/fs/upgrade/mds_upgrade_sequence/bluestore-bitmap.yaml b/qa/suites/fs/upgrade/mds_upgrade_sequence/bluestore-bitmap.yaml
new file mode 120000
index 000000000..fb603bc9a
--- /dev/null
+++ b/qa/suites/fs/upgrade/mds_upgrade_sequence/bluestore-bitmap.yaml
@@ -0,0 +1 @@
+.qa/cephfs/objectstore-ec/bluestore-bitmap.yaml \ No newline at end of file
diff --git a/qa/suites/fs/upgrade/mds_upgrade_sequence/centos_8.stream_container_tools.yaml b/qa/suites/fs/upgrade/mds_upgrade_sequence/centos_8.stream_container_tools.yaml
new file mode 120000
index 000000000..7a86f967f
--- /dev/null
+++ b/qa/suites/fs/upgrade/mds_upgrade_sequence/centos_8.stream_container_tools.yaml
@@ -0,0 +1 @@
+.qa/distros/podman/centos_8.stream_container_tools.yaml \ No newline at end of file
diff --git a/qa/suites/fs/upgrade/mds_upgrade_sequence/conf b/qa/suites/fs/upgrade/mds_upgrade_sequence/conf
new file mode 120000
index 000000000..6d4712984
--- /dev/null
+++ b/qa/suites/fs/upgrade/mds_upgrade_sequence/conf
@@ -0,0 +1 @@
+.qa/cephfs/conf/ \ No newline at end of file
diff --git a/qa/suites/fs/upgrade/mds_upgrade_sequence/fail_fs/no.yaml b/qa/suites/fs/upgrade/mds_upgrade_sequence/fail_fs/no.yaml
new file mode 100644
index 000000000..868415bcb
--- /dev/null
+++ b/qa/suites/fs/upgrade/mds_upgrade_sequence/fail_fs/no.yaml
@@ -0,0 +1,3 @@
+teuthology:
+ variables:
+ fail_fs: false
diff --git a/qa/suites/fs/upgrade/mds_upgrade_sequence/fail_fs/yes.yaml b/qa/suites/fs/upgrade/mds_upgrade_sequence/fail_fs/yes.yaml
new file mode 100644
index 000000000..411ff3814
--- /dev/null
+++ b/qa/suites/fs/upgrade/mds_upgrade_sequence/fail_fs/yes.yaml
@@ -0,0 +1,3 @@
+teuthology:
+ variables:
+ fail_fs: true
diff --git a/qa/suites/fs/upgrade/mds_upgrade_sequence/overrides/% b/qa/suites/fs/upgrade/mds_upgrade_sequence/overrides/%
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/qa/suites/fs/upgrade/mds_upgrade_sequence/overrides/%
diff --git a/qa/suites/fs/upgrade/mds_upgrade_sequence/overrides/.qa b/qa/suites/fs/upgrade/mds_upgrade_sequence/overrides/.qa
new file mode 120000
index 000000000..a602a0353
--- /dev/null
+++ b/qa/suites/fs/upgrade/mds_upgrade_sequence/overrides/.qa
@@ -0,0 +1 @@
+../.qa/ \ No newline at end of file
diff --git a/qa/suites/fs/upgrade/mds_upgrade_sequence/overrides/ignorelist_health.yaml b/qa/suites/fs/upgrade/mds_upgrade_sequence/overrides/ignorelist_health.yaml
new file mode 120000
index 000000000..5cb891a95
--- /dev/null
+++ b/qa/suites/fs/upgrade/mds_upgrade_sequence/overrides/ignorelist_health.yaml
@@ -0,0 +1 @@
+.qa/cephfs/overrides/ignorelist_health.yaml \ No newline at end of file
diff --git a/qa/suites/fs/upgrade/mds_upgrade_sequence/overrides/ignorelist_wrongly_marked_down.yaml b/qa/suites/fs/upgrade/mds_upgrade_sequence/overrides/ignorelist_wrongly_marked_down.yaml
new file mode 120000
index 000000000..f317cb714
--- /dev/null
+++ b/qa/suites/fs/upgrade/mds_upgrade_sequence/overrides/ignorelist_wrongly_marked_down.yaml
@@ -0,0 +1 @@
+.qa/cephfs/overrides/ignorelist_wrongly_marked_down.yaml \ No newline at end of file
diff --git a/qa/suites/fs/upgrade/mds_upgrade_sequence/overrides/pg-warn.yaml b/qa/suites/fs/upgrade/mds_upgrade_sequence/overrides/pg-warn.yaml
new file mode 100644
index 000000000..4ae54a40d
--- /dev/null
+++ b/qa/suites/fs/upgrade/mds_upgrade_sequence/overrides/pg-warn.yaml
@@ -0,0 +1,5 @@
+overrides:
+ ceph:
+ conf:
+ global:
+ mon pg warn min per osd: 0
diff --git a/qa/suites/fs/upgrade/mds_upgrade_sequence/overrides/syntax.yaml b/qa/suites/fs/upgrade/mds_upgrade_sequence/overrides/syntax.yaml
new file mode 100644
index 000000000..84d5d43b2
--- /dev/null
+++ b/qa/suites/fs/upgrade/mds_upgrade_sequence/overrides/syntax.yaml
@@ -0,0 +1,3 @@
+overrides:
+ kclient:
+ syntax: 'v1'
diff --git a/qa/suites/fs/upgrade/mds_upgrade_sequence/roles.yaml b/qa/suites/fs/upgrade/mds_upgrade_sequence/roles.yaml
new file mode 100644
index 000000000..bce4ecd34
--- /dev/null
+++ b/qa/suites/fs/upgrade/mds_upgrade_sequence/roles.yaml
@@ -0,0 +1,11 @@
+roles:
+- - host.a
+ - client.0
+ - osd.0
+ - osd.1
+ - osd.2
+- - host.b
+ - client.1
+ - osd.3
+ - osd.4
+ - osd.5
diff --git a/qa/suites/fs/upgrade/mds_upgrade_sequence/tasks/% b/qa/suites/fs/upgrade/mds_upgrade_sequence/tasks/%
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/qa/suites/fs/upgrade/mds_upgrade_sequence/tasks/%
diff --git a/qa/suites/fs/upgrade/mds_upgrade_sequence/tasks/.qa b/qa/suites/fs/upgrade/mds_upgrade_sequence/tasks/.qa
new file mode 120000
index 000000000..a602a0353
--- /dev/null
+++ b/qa/suites/fs/upgrade/mds_upgrade_sequence/tasks/.qa
@@ -0,0 +1 @@
+../.qa/ \ No newline at end of file
diff --git a/qa/suites/fs/upgrade/mds_upgrade_sequence/tasks/0-from/.qa b/qa/suites/fs/upgrade/mds_upgrade_sequence/tasks/0-from/.qa
new file mode 120000
index 000000000..a602a0353
--- /dev/null
+++ b/qa/suites/fs/upgrade/mds_upgrade_sequence/tasks/0-from/.qa
@@ -0,0 +1 @@
+../.qa/ \ No newline at end of file
diff --git a/qa/suites/fs/upgrade/mds_upgrade_sequence/tasks/0-from/pacific.yaml b/qa/suites/fs/upgrade/mds_upgrade_sequence/tasks/0-from/pacific.yaml
new file mode 100644
index 000000000..6432d7080
--- /dev/null
+++ b/qa/suites/fs/upgrade/mds_upgrade_sequence/tasks/0-from/pacific.yaml
@@ -0,0 +1,32 @@
+meta:
+- desc: |
+ setup ceph/pacific
+
+tasks:
+- install:
+ branch: pacific
+ exclude_packages:
+ - ceph-volume
+- print: "**** done install task..."
+- cephadm:
+ image: quay.ceph.io/ceph-ci/ceph:pacific
+ roleless: true
+ cephadm_branch: pacific
+ cephadm_git_url: https://github.com/ceph/ceph
+ conf:
+ osd:
+ #set config option for which cls modules are allowed to be loaded / used
+ osd_class_load_list: "*"
+ osd_class_default_list: "*"
+- print: "**** done end installing pacific cephadm ..."
+- cephadm.shell:
+ host.a:
+ - ceph config set mgr mgr/cephadm/use_repo_digest true --force
+- print: "**** done cephadm.shell ceph config set mgr..."
+- cephadm.shell:
+ host.a:
+ - ceph orch status
+ - ceph orch ps
+ - ceph orch ls
+ - ceph orch host ls
+ - ceph orch device ls
diff --git a/qa/suites/fs/upgrade/mds_upgrade_sequence/tasks/0-from/v16.2.4.yaml b/qa/suites/fs/upgrade/mds_upgrade_sequence/tasks/0-from/v16.2.4.yaml
new file mode 100644
index 000000000..36bfb1b91
--- /dev/null
+++ b/qa/suites/fs/upgrade/mds_upgrade_sequence/tasks/0-from/v16.2.4.yaml
@@ -0,0 +1,34 @@
+teuthology:
+ postmerge:
+ - if yaml.teuthology.variables.fail_fs then reject() end
+
+meta:
+- desc: |
+ setup ceph/pacific v16.2.4
+
+tasks:
+# Disable metrics sending by kclient as it may crash (assert) a v16.2.4 MDS
+- pexec:
+ clients:
+ - sudo modprobe -r ceph
+ - sudo modprobe ceph disable_send_metrics=on
+- install:
+ tag: v16.2.4
+ exclude_packages:
+ - ceph-volume
+- print: "**** done install task..."
+- cephadm:
+ roleless: true
+ image: quay.io/ceph/ceph:v16.2.4
+ cephadm_branch: v16.2.4
+ cephadm_git_url: https://github.com/ceph/ceph
+ # needed for v16.2.4 due to --skip-admin-label
+ avoid_pacific_features: true
+- print: "**** done starting v16.2.4"
+- cephadm.shell:
+ host.a:
+ - ceph orch status
+ - ceph orch ps
+ - ceph orch ls
+ - ceph orch host ls
+ - ceph orch device ls
diff --git a/qa/suites/fs/upgrade/mds_upgrade_sequence/tasks/1-volume/% b/qa/suites/fs/upgrade/mds_upgrade_sequence/tasks/1-volume/%
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/qa/suites/fs/upgrade/mds_upgrade_sequence/tasks/1-volume/%
diff --git a/qa/suites/fs/upgrade/mds_upgrade_sequence/tasks/1-volume/.qa b/qa/suites/fs/upgrade/mds_upgrade_sequence/tasks/1-volume/.qa
new file mode 120000
index 000000000..a602a0353
--- /dev/null
+++ b/qa/suites/fs/upgrade/mds_upgrade_sequence/tasks/1-volume/.qa
@@ -0,0 +1 @@
+../.qa/ \ No newline at end of file
diff --git a/qa/suites/fs/upgrade/mds_upgrade_sequence/tasks/1-volume/0-create.yaml b/qa/suites/fs/upgrade/mds_upgrade_sequence/tasks/1-volume/0-create.yaml
new file mode 100644
index 000000000..5ee0022c6
--- /dev/null
+++ b/qa/suites/fs/upgrade/mds_upgrade_sequence/tasks/1-volume/0-create.yaml
@@ -0,0 +1,5 @@
+tasks:
+- cephadm.shell:
+ host.a:
+ - ceph fs volume create cephfs --placement=4
+ - ceph fs dump
diff --git a/qa/suites/fs/upgrade/mds_upgrade_sequence/tasks/1-volume/1-ranks/.qa b/qa/suites/fs/upgrade/mds_upgrade_sequence/tasks/1-volume/1-ranks/.qa
new file mode 120000
index 000000000..a602a0353
--- /dev/null
+++ b/qa/suites/fs/upgrade/mds_upgrade_sequence/tasks/1-volume/1-ranks/.qa
@@ -0,0 +1 @@
+../.qa/ \ No newline at end of file
diff --git a/qa/suites/fs/upgrade/mds_upgrade_sequence/tasks/1-volume/1-ranks/1.yaml b/qa/suites/fs/upgrade/mds_upgrade_sequence/tasks/1-volume/1-ranks/1.yaml
new file mode 100644
index 000000000..8c1cd2fe0
--- /dev/null
+++ b/qa/suites/fs/upgrade/mds_upgrade_sequence/tasks/1-volume/1-ranks/1.yaml
@@ -0,0 +1,4 @@
+tasks:
+- cephadm.shell:
+ host.a:
+ - ceph fs set cephfs max_mds 1
diff --git a/qa/suites/fs/upgrade/mds_upgrade_sequence/tasks/1-volume/1-ranks/2.yaml b/qa/suites/fs/upgrade/mds_upgrade_sequence/tasks/1-volume/1-ranks/2.yaml
new file mode 100644
index 000000000..fcd3b1ea4
--- /dev/null
+++ b/qa/suites/fs/upgrade/mds_upgrade_sequence/tasks/1-volume/1-ranks/2.yaml
@@ -0,0 +1,4 @@
+tasks:
+- cephadm.shell:
+ host.a:
+ - ceph fs set cephfs max_mds 2
diff --git a/qa/suites/fs/upgrade/mds_upgrade_sequence/tasks/1-volume/2-allow_standby_replay/.qa b/qa/suites/fs/upgrade/mds_upgrade_sequence/tasks/1-volume/2-allow_standby_replay/.qa
new file mode 120000
index 000000000..a602a0353
--- /dev/null
+++ b/qa/suites/fs/upgrade/mds_upgrade_sequence/tasks/1-volume/2-allow_standby_replay/.qa
@@ -0,0 +1 @@
+../.qa/ \ No newline at end of file
diff --git a/qa/suites/fs/upgrade/mds_upgrade_sequence/tasks/1-volume/2-allow_standby_replay/no.yaml b/qa/suites/fs/upgrade/mds_upgrade_sequence/tasks/1-volume/2-allow_standby_replay/no.yaml
new file mode 100644
index 000000000..3dbc81089
--- /dev/null
+++ b/qa/suites/fs/upgrade/mds_upgrade_sequence/tasks/1-volume/2-allow_standby_replay/no.yaml
@@ -0,0 +1,4 @@
+tasks:
+- cephadm.shell:
+ host.a:
+ - ceph fs set cephfs allow_standby_replay false
diff --git a/qa/suites/fs/upgrade/mds_upgrade_sequence/tasks/1-volume/2-allow_standby_replay/yes.yaml b/qa/suites/fs/upgrade/mds_upgrade_sequence/tasks/1-volume/2-allow_standby_replay/yes.yaml
new file mode 100644
index 000000000..fb894425e
--- /dev/null
+++ b/qa/suites/fs/upgrade/mds_upgrade_sequence/tasks/1-volume/2-allow_standby_replay/yes.yaml
@@ -0,0 +1,4 @@
+tasks:
+- cephadm.shell:
+ host.a:
+ - ceph fs set cephfs allow_standby_replay true
diff --git a/qa/suites/fs/upgrade/mds_upgrade_sequence/tasks/1-volume/3-inline/.qa b/qa/suites/fs/upgrade/mds_upgrade_sequence/tasks/1-volume/3-inline/.qa
new file mode 120000
index 000000000..a602a0353
--- /dev/null
+++ b/qa/suites/fs/upgrade/mds_upgrade_sequence/tasks/1-volume/3-inline/.qa
@@ -0,0 +1 @@
+../.qa/ \ No newline at end of file
diff --git a/qa/suites/fs/upgrade/mds_upgrade_sequence/tasks/1-volume/3-inline/no.yaml b/qa/suites/fs/upgrade/mds_upgrade_sequence/tasks/1-volume/3-inline/no.yaml
new file mode 100644
index 000000000..107f30ecd
--- /dev/null
+++ b/qa/suites/fs/upgrade/mds_upgrade_sequence/tasks/1-volume/3-inline/no.yaml
@@ -0,0 +1,4 @@
+tasks:
+- cephadm.shell:
+ host.a:
+ - ceph fs set cephfs inline_data false
diff --git a/qa/suites/fs/upgrade/mds_upgrade_sequence/tasks/1-volume/3-inline/yes.yaml b/qa/suites/fs/upgrade/mds_upgrade_sequence/tasks/1-volume/3-inline/yes.yaml
new file mode 100644
index 000000000..246ed71b4
--- /dev/null
+++ b/qa/suites/fs/upgrade/mds_upgrade_sequence/tasks/1-volume/3-inline/yes.yaml
@@ -0,0 +1,4 @@
+tasks:
+- cephadm.shell:
+ host.a:
+ - ceph fs set cephfs inline_data true --yes-i-really-really-mean-it
diff --git a/qa/suites/fs/upgrade/mds_upgrade_sequence/tasks/1-volume/4-verify.yaml b/qa/suites/fs/upgrade/mds_upgrade_sequence/tasks/1-volume/4-verify.yaml
new file mode 100644
index 000000000..e71365ad1
--- /dev/null
+++ b/qa/suites/fs/upgrade/mds_upgrade_sequence/tasks/1-volume/4-verify.yaml
@@ -0,0 +1,7 @@
+tasks:
+- cephadm.shell:
+ host.a:
+ - ceph fs dump
+ - ceph --format=json fs dump | jq -e ".filesystems | length == 1"
+ - while ! ceph --format=json mds versions | jq -e ". | add == 4"; do sleep 1; done
+- fs.pre_upgrade_save:
diff --git a/qa/suites/fs/upgrade/mds_upgrade_sequence/tasks/2-client.yaml b/qa/suites/fs/upgrade/mds_upgrade_sequence/tasks/2-client.yaml
new file mode 100644
index 000000000..92b9dda84
--- /dev/null
+++ b/qa/suites/fs/upgrade/mds_upgrade_sequence/tasks/2-client.yaml
@@ -0,0 +1,3 @@
+tasks:
+- kclient:
+- print: "**** done client"
diff --git a/qa/suites/fs/upgrade/mds_upgrade_sequence/tasks/3-upgrade-mgr-staggered.yaml b/qa/suites/fs/upgrade/mds_upgrade_sequence/tasks/3-upgrade-mgr-staggered.yaml
new file mode 100644
index 000000000..fac9e29db
--- /dev/null
+++ b/qa/suites/fs/upgrade/mds_upgrade_sequence/tasks/3-upgrade-mgr-staggered.yaml
@@ -0,0 +1,18 @@
+teuthology:
+ premerge: |
+ if not yaml.teuthology.variables.fail_fs then reject() end
+upgrade-tasks:
+ sequential:
+ - cephadm.shell:
+ env: [sha1]
+ host.a:
+ - ceph config set mon mon_warn_on_insecure_global_id_reclaim false --force
+ - ceph config set mon mon_warn_on_insecure_global_id_reclaim_allowed false --force
+ - ceph config set global log_to_journald false --force
+ - ceph orch upgrade start --image quay.ceph.io/ceph-ci/ceph:$sha1 --daemon-types mgr
+ - while ceph orch upgrade status | jq '.in_progress' | grep true && ! ceph orch upgrade status | jq '.message' | grep Error ; do ceph orch ps ; ceph versions ; ceph orch upgrade status ; sleep 30 ; done
+ - ceph versions | jq -e '.mgr | length == 1'
+ - ceph versions | jq -e '.mgr | keys' | grep $sha1
+ - ceph versions | jq -e '.overall | length == 2'
+ - ceph orch upgrade check quay.ceph.io/ceph-ci/ceph:$sha1 | jq -e '.up_to_date | length == 2'
+ - ceph orch ps
diff --git a/qa/suites/fs/upgrade/mds_upgrade_sequence/tasks/4-config-upgrade/+ b/qa/suites/fs/upgrade/mds_upgrade_sequence/tasks/4-config-upgrade/+
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/qa/suites/fs/upgrade/mds_upgrade_sequence/tasks/4-config-upgrade/+
diff --git a/qa/suites/fs/upgrade/mds_upgrade_sequence/tasks/4-config-upgrade/fail_fs.yaml b/qa/suites/fs/upgrade/mds_upgrade_sequence/tasks/4-config-upgrade/fail_fs.yaml
new file mode 100644
index 000000000..fbde19a22
--- /dev/null
+++ b/qa/suites/fs/upgrade/mds_upgrade_sequence/tasks/4-config-upgrade/fail_fs.yaml
@@ -0,0 +1,15 @@
+teuthology:
+ premerge: |
+ local set = yaml.teuthology.variables.fail_fs
+ local cmd = "ceph config set mgr mgr/orchestrator/fail_fs "..tostring(set)
+ local cmds = yaml_fragment['upgrade-tasks'].sequential[0]['cephadm.shell']['host.a']
+ if set then
+ py_attrgetter(cmds).append "ceph config set mgr mgr/orchestrator/fail_fs true"
+ else
+ py_attrgetter(cmds).append "ceph config set mgr mgr/orchestrator/fail_fs false || true"
+ end
+upgrade-tasks:
+ sequential:
+ - cephadm.shell:
+ env: [sha1]
+ host.a: []
diff --git a/qa/suites/fs/upgrade/mds_upgrade_sequence/tasks/5-upgrade-with-workload.yaml b/qa/suites/fs/upgrade/mds_upgrade_sequence/tasks/5-upgrade-with-workload.yaml
new file mode 100644
index 000000000..392b1e66d
--- /dev/null
+++ b/qa/suites/fs/upgrade/mds_upgrade_sequence/tasks/5-upgrade-with-workload.yaml
@@ -0,0 +1,35 @@
+tasks:
+- parallel:
+ - upgrade-tasks
+ - workload-tasks
+
+upgrade-tasks:
+ sequential:
+ - cephadm.shell:
+ env: [sha1]
+ host.a:
+ - ceph config set mon mon_warn_on_insecure_global_id_reclaim false --force
+ - ceph config set mon mon_warn_on_insecure_global_id_reclaim_allowed false --force
+ - ceph config set global log_to_journald false --force
+ - ceph orch upgrade start --image quay.ceph.io/ceph-ci/ceph:$sha1
+ - cephadm.shell:
+ env: [sha1]
+ host.a:
+ - while ceph orch upgrade status | jq '.in_progress' | grep true && ! ceph orch upgrade status | jq '.message' | grep Error ; do ceph orch ps ; ceph versions ; ceph fs dump; ceph orch upgrade status ; ceph health detail ; sleep 30 ; done
+ - ceph orch ps
+ - ceph orch upgrade status
+ - ceph health detail
+ - ceph versions
+ - echo "wait for servicemap items w/ changing names to refresh"
+ - sleep 60
+ - ceph orch ps
+ - ceph versions
+ - ceph versions | jq -e '.overall | length == 1'
+ - ceph versions | jq -e '.overall | keys' | grep $sha1
+
+workload-tasks:
+ sequential:
+ - workunit:
+ clients:
+ all:
+ - suites/fsstress.sh
diff --git a/qa/suites/fs/upgrade/mds_upgrade_sequence/tasks/6-verify.yaml b/qa/suites/fs/upgrade/mds_upgrade_sequence/tasks/6-verify.yaml
new file mode 100644
index 000000000..c2b657e5a
--- /dev/null
+++ b/qa/suites/fs/upgrade/mds_upgrade_sequence/tasks/6-verify.yaml
@@ -0,0 +1,5 @@
+tasks:
+- cephadm.shell:
+ host.a:
+ - ceph fs dump
+- fs.post_upgrade_checks:
diff --git a/qa/suites/fs/upgrade/nofs/% b/qa/suites/fs/upgrade/nofs/%
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/qa/suites/fs/upgrade/nofs/%
diff --git a/qa/suites/fs/upgrade/nofs/.qa b/qa/suites/fs/upgrade/nofs/.qa
new file mode 120000
index 000000000..a602a0353
--- /dev/null
+++ b/qa/suites/fs/upgrade/nofs/.qa
@@ -0,0 +1 @@
+../.qa/ \ No newline at end of file
diff --git a/qa/suites/fs/upgrade/nofs/README b/qa/suites/fs/upgrade/nofs/README
new file mode 100644
index 000000000..e7f6960ef
--- /dev/null
+++ b/qa/suites/fs/upgrade/nofs/README
@@ -0,0 +1,3 @@
+This test just verifies that upgrades work with no file system present. In
+particular, catch that MDSMonitor doesn't blow up somehow with version
+mismatches.
diff --git a/qa/suites/fs/upgrade/nofs/bluestore-bitmap.yaml b/qa/suites/fs/upgrade/nofs/bluestore-bitmap.yaml
new file mode 120000
index 000000000..fb603bc9a
--- /dev/null
+++ b/qa/suites/fs/upgrade/nofs/bluestore-bitmap.yaml
@@ -0,0 +1 @@
+.qa/cephfs/objectstore-ec/bluestore-bitmap.yaml \ No newline at end of file
diff --git a/qa/suites/fs/upgrade/nofs/centos_8.yaml b/qa/suites/fs/upgrade/nofs/centos_8.yaml
new file mode 120000
index 000000000..5dceec7e2
--- /dev/null
+++ b/qa/suites/fs/upgrade/nofs/centos_8.yaml
@@ -0,0 +1 @@
+.qa/distros/supported/centos_8.stream.yaml \ No newline at end of file
diff --git a/qa/suites/fs/upgrade/nofs/conf b/qa/suites/fs/upgrade/nofs/conf
new file mode 120000
index 000000000..6d4712984
--- /dev/null
+++ b/qa/suites/fs/upgrade/nofs/conf
@@ -0,0 +1 @@
+.qa/cephfs/conf/ \ No newline at end of file
diff --git a/qa/suites/fs/upgrade/nofs/no-mds-cluster.yaml b/qa/suites/fs/upgrade/nofs/no-mds-cluster.yaml
new file mode 100644
index 000000000..33c6fb16b
--- /dev/null
+++ b/qa/suites/fs/upgrade/nofs/no-mds-cluster.yaml
@@ -0,0 +1,6 @@
+roles:
+- [mon.a, mon.b, mon.c, mgr.x, mgr.y, osd.0, osd.1, osd.2, osd.3]
+openstack:
+- volumes: # attached to each instance
+ count: 4
+ size: 10 # GB
diff --git a/qa/suites/fs/upgrade/nofs/overrides/% b/qa/suites/fs/upgrade/nofs/overrides/%
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/qa/suites/fs/upgrade/nofs/overrides/%
diff --git a/qa/suites/fs/upgrade/nofs/overrides/.qa b/qa/suites/fs/upgrade/nofs/overrides/.qa
new file mode 120000
index 000000000..a602a0353
--- /dev/null
+++ b/qa/suites/fs/upgrade/nofs/overrides/.qa
@@ -0,0 +1 @@
+../.qa/ \ No newline at end of file
diff --git a/qa/suites/fs/upgrade/nofs/overrides/ignorelist_health.yaml b/qa/suites/fs/upgrade/nofs/overrides/ignorelist_health.yaml
new file mode 120000
index 000000000..5cb891a95
--- /dev/null
+++ b/qa/suites/fs/upgrade/nofs/overrides/ignorelist_health.yaml
@@ -0,0 +1 @@
+.qa/cephfs/overrides/ignorelist_health.yaml \ No newline at end of file
diff --git a/qa/suites/fs/upgrade/nofs/overrides/ignorelist_wrongly_marked_down.yaml b/qa/suites/fs/upgrade/nofs/overrides/ignorelist_wrongly_marked_down.yaml
new file mode 120000
index 000000000..f317cb714
--- /dev/null
+++ b/qa/suites/fs/upgrade/nofs/overrides/ignorelist_wrongly_marked_down.yaml
@@ -0,0 +1 @@
+.qa/cephfs/overrides/ignorelist_wrongly_marked_down.yaml \ No newline at end of file
diff --git a/qa/suites/fs/upgrade/nofs/overrides/pg-warn.yaml b/qa/suites/fs/upgrade/nofs/overrides/pg-warn.yaml
new file mode 100644
index 000000000..4ae54a40d
--- /dev/null
+++ b/qa/suites/fs/upgrade/nofs/overrides/pg-warn.yaml
@@ -0,0 +1,5 @@
+overrides:
+ ceph:
+ conf:
+ global:
+ mon pg warn min per osd: 0
diff --git a/qa/suites/fs/upgrade/nofs/tasks/% b/qa/suites/fs/upgrade/nofs/tasks/%
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/qa/suites/fs/upgrade/nofs/tasks/%
diff --git a/qa/suites/fs/upgrade/nofs/tasks/.qa b/qa/suites/fs/upgrade/nofs/tasks/.qa
new file mode 120000
index 000000000..a602a0353
--- /dev/null
+++ b/qa/suites/fs/upgrade/nofs/tasks/.qa
@@ -0,0 +1 @@
+../.qa/ \ No newline at end of file
diff --git a/qa/suites/fs/upgrade/nofs/tasks/0-pacific.yaml b/qa/suites/fs/upgrade/nofs/tasks/0-pacific.yaml
new file mode 100644
index 000000000..b74accc69
--- /dev/null
+++ b/qa/suites/fs/upgrade/nofs/tasks/0-pacific.yaml
@@ -0,0 +1,39 @@
+meta:
+- desc: |
+ install ceph/pacific latest
+tasks:
+- install:
+ branch: pacific
+ exclude_packages:
+ - librados3
+ - ceph-mgr-dashboard
+ - ceph-mgr-diskprediction-local
+ - ceph-mgr-rook
+ - ceph-mgr-cephadm
+ - cephadm
+ - ceph-volume
+ extra_packages: ['librados2']
+- print: "**** done installing pacific"
+- ceph:
+ log-ignorelist:
+ - overall HEALTH_
+ - \(FS_
+ - \(MDS_
+ - \(OSD_
+ - \(MON_DOWN\)
+ - \(CACHE_POOL_
+ - \(POOL_
+ - \(MGR_DOWN\)
+ - \(PG_
+ - \(SMALLER_PGP_NUM\)
+ - Monitor daemon marked osd
+ - Behind on trimming
+ - Manager daemon
+ conf:
+ global:
+ mon warn on pool no app: false
+ ms bind msgr2: false
+- exec:
+ osd.0:
+ - ceph osd set-require-min-compat-client pacific
+- print: "**** done ceph"
diff --git a/qa/suites/fs/upgrade/nofs/tasks/1-upgrade.yaml b/qa/suites/fs/upgrade/nofs/tasks/1-upgrade.yaml
new file mode 100644
index 000000000..858142871
--- /dev/null
+++ b/qa/suites/fs/upgrade/nofs/tasks/1-upgrade.yaml
@@ -0,0 +1,44 @@
+overrides:
+ ceph:
+ log-ignorelist:
+ - scrub mismatch
+ - ScrubResult
+ - wrongly marked
+ - \(POOL_APP_NOT_ENABLED\)
+ - \(SLOW_OPS\)
+ - overall HEALTH_
+ - \(MON_MSGR2_NOT_ENABLED\)
+ - slow request
+ conf:
+ global:
+ bluestore warn on legacy statfs: false
+ bluestore warn on no per pool omap: false
+ mon:
+ mon warn on osd down out interval zero: false
+
+tasks:
+- print: "*** upgrading, no cephfs present"
+- exec:
+ mon.a:
+ - ceph fs dump
+- install.upgrade:
+ mon.a:
+- print: "**** done install.upgrade"
+- ceph.restart:
+ daemons: [mon.*, mgr.*]
+ mon-health-to-clog: false
+ wait-for-healthy: false
+- ceph.healthy:
+- ceph.restart:
+ daemons: [osd.*]
+ wait-for-healthy: false
+ wait-for-osds-up: true
+- exec:
+ mon.a:
+ - ceph versions
+ - ceph osd dump -f json-pretty
+ - ceph fs dump
+ - ceph osd require-osd-release quincy
+ - for f in `ceph osd pool ls` ; do ceph osd pool set $f pg_autoscale_mode off ; done
+- ceph.healthy:
+- print: "**** done ceph.restart"
diff --git a/qa/suites/fs/upgrade/upgraded_client/% b/qa/suites/fs/upgrade/upgraded_client/%
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/qa/suites/fs/upgrade/upgraded_client/%
diff --git a/qa/suites/fs/upgrade/upgraded_client/.qa b/qa/suites/fs/upgrade/upgraded_client/.qa
new file mode 120000
index 000000000..a602a0353
--- /dev/null
+++ b/qa/suites/fs/upgrade/upgraded_client/.qa
@@ -0,0 +1 @@
+../.qa/ \ No newline at end of file
diff --git a/qa/suites/fs/upgrade/upgraded_client/bluestore-bitmap.yaml b/qa/suites/fs/upgrade/upgraded_client/bluestore-bitmap.yaml
new file mode 120000
index 000000000..675dce056
--- /dev/null
+++ b/qa/suites/fs/upgrade/upgraded_client/bluestore-bitmap.yaml
@@ -0,0 +1 @@
+../../../../cephfs/objectstore-ec/bluestore-bitmap.yaml \ No newline at end of file
diff --git a/qa/suites/fs/upgrade/upgraded_client/centos_8.yaml b/qa/suites/fs/upgrade/upgraded_client/centos_8.yaml
new file mode 120000
index 000000000..5dceec7e2
--- /dev/null
+++ b/qa/suites/fs/upgrade/upgraded_client/centos_8.yaml
@@ -0,0 +1 @@
+.qa/distros/supported/centos_8.stream.yaml \ No newline at end of file
diff --git a/qa/suites/fs/upgrade/upgraded_client/clusters/% b/qa/suites/fs/upgrade/upgraded_client/clusters/%
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/qa/suites/fs/upgrade/upgraded_client/clusters/%
diff --git a/qa/suites/fs/upgrade/upgraded_client/clusters/.qa b/qa/suites/fs/upgrade/upgraded_client/clusters/.qa
new file mode 120000
index 000000000..fea2489fd
--- /dev/null
+++ b/qa/suites/fs/upgrade/upgraded_client/clusters/.qa
@@ -0,0 +1 @@
+../.qa \ No newline at end of file
diff --git a/qa/suites/fs/upgrade/upgraded_client/clusters/1-mds-1-client-micro.yaml b/qa/suites/fs/upgrade/upgraded_client/clusters/1-mds-1-client-micro.yaml
new file mode 120000
index 000000000..50ffb6d53
--- /dev/null
+++ b/qa/suites/fs/upgrade/upgraded_client/clusters/1-mds-1-client-micro.yaml
@@ -0,0 +1 @@
+.qa/cephfs/clusters/1-mds-1-client-micro.yaml \ No newline at end of file
diff --git a/qa/suites/fs/upgrade/upgraded_client/conf b/qa/suites/fs/upgrade/upgraded_client/conf
new file mode 120000
index 000000000..6d4712984
--- /dev/null
+++ b/qa/suites/fs/upgrade/upgraded_client/conf
@@ -0,0 +1 @@
+.qa/cephfs/conf/ \ No newline at end of file
diff --git a/qa/suites/fs/upgrade/upgraded_client/overrides/% b/qa/suites/fs/upgrade/upgraded_client/overrides/%
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/qa/suites/fs/upgrade/upgraded_client/overrides/%
diff --git a/qa/suites/fs/upgrade/upgraded_client/overrides/.qa b/qa/suites/fs/upgrade/upgraded_client/overrides/.qa
new file mode 120000
index 000000000..a602a0353
--- /dev/null
+++ b/qa/suites/fs/upgrade/upgraded_client/overrides/.qa
@@ -0,0 +1 @@
+../.qa/ \ No newline at end of file
diff --git a/qa/suites/fs/upgrade/upgraded_client/overrides/ignorelist_health.yaml b/qa/suites/fs/upgrade/upgraded_client/overrides/ignorelist_health.yaml
new file mode 120000
index 000000000..5cb891a95
--- /dev/null
+++ b/qa/suites/fs/upgrade/upgraded_client/overrides/ignorelist_health.yaml
@@ -0,0 +1 @@
+.qa/cephfs/overrides/ignorelist_health.yaml \ No newline at end of file
diff --git a/qa/suites/fs/upgrade/upgraded_client/overrides/ignorelist_wrongly_marked_down.yaml b/qa/suites/fs/upgrade/upgraded_client/overrides/ignorelist_wrongly_marked_down.yaml
new file mode 120000
index 000000000..f317cb714
--- /dev/null
+++ b/qa/suites/fs/upgrade/upgraded_client/overrides/ignorelist_wrongly_marked_down.yaml
@@ -0,0 +1 @@
+.qa/cephfs/overrides/ignorelist_wrongly_marked_down.yaml \ No newline at end of file
diff --git a/qa/suites/fs/upgrade/upgraded_client/overrides/pg-warn.yaml b/qa/suites/fs/upgrade/upgraded_client/overrides/pg-warn.yaml
new file mode 100644
index 000000000..4ae54a40d
--- /dev/null
+++ b/qa/suites/fs/upgrade/upgraded_client/overrides/pg-warn.yaml
@@ -0,0 +1,5 @@
+overrides:
+ ceph:
+ conf:
+ global:
+ mon pg warn min per osd: 0
diff --git a/qa/suites/fs/upgrade/upgraded_client/tasks/% b/qa/suites/fs/upgrade/upgraded_client/tasks/%
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/qa/suites/fs/upgrade/upgraded_client/tasks/%
diff --git a/qa/suites/fs/upgrade/upgraded_client/tasks/.qa b/qa/suites/fs/upgrade/upgraded_client/tasks/.qa
new file mode 120000
index 000000000..a602a0353
--- /dev/null
+++ b/qa/suites/fs/upgrade/upgraded_client/tasks/.qa
@@ -0,0 +1 @@
+../.qa/ \ No newline at end of file
diff --git a/qa/suites/fs/upgrade/upgraded_client/tasks/0-from/nautilus.yaml b/qa/suites/fs/upgrade/upgraded_client/tasks/0-from/nautilus.yaml
new file mode 100644
index 000000000..02f541eaf
--- /dev/null
+++ b/qa/suites/fs/upgrade/upgraded_client/tasks/0-from/nautilus.yaml
@@ -0,0 +1,53 @@
+meta:
+- desc: |
+ install ceph/nautilus latest
+tasks:
+- install:
+ branch: nautilus
+ exclude_packages:
+ - cephadm
+ - ceph-mgr-cephadm
+ - ceph-immutable-object-cache
+ - python3-rados
+ - python3-rgw
+ - python3-rbd
+ - python3-cephfs
+ - ceph-volume
+ extra_packages:
+ - python-rados
+ - python-rgw
+ - python-rbd
+ - python-cephfs
+ # For kernel_untar_build workunit
+ extra_system_packages:
+ - bison
+ - flex
+ - elfutils-libelf-devel
+ - openssl-devel
+ - NetworkManager
+ - iproute
+ - util-linux
+- print: "**** done installing nautilus"
+- ceph:
+ log-ignorelist:
+ - overall HEALTH_
+ - \(FS_
+ - \(MDS_
+ - \(OSD_
+ - \(MON_DOWN\)
+ - \(CACHE_POOL_
+ - \(POOL_
+ - \(MGR_DOWN\)
+ - \(PG_
+ - \(SMALLER_PGP_NUM\)
+ - Monitor daemon marked osd
+ - Behind on trimming
+ - Manager daemon
+ conf:
+ global:
+ mon warn on pool no app: false
+ ms bind msgr2: false
+- exec:
+ osd.0:
+ - ceph osd set-require-min-compat-client nautilus
+- print: "**** done ceph"
diff --git a/qa/suites/fs/upgrade/upgraded_client/tasks/0-from/pacific.yaml b/qa/suites/fs/upgrade/upgraded_client/tasks/0-from/pacific.yaml
new file mode 100644
index 000000000..defb03922
--- /dev/null
+++ b/qa/suites/fs/upgrade/upgraded_client/tasks/0-from/pacific.yaml
@@ -0,0 +1,53 @@
+meta:
+- desc: |
+ install ceph/pacific latest
+tasks:
+- install:
+ branch: pacific
+ exclude_packages:
+ - cephadm
+ - ceph-mgr-cephadm
+ - ceph-immutable-object-cache
+ - python3-rados
+ - python3-rgw
+ - python3-rbd
+ - python3-cephfs
+ - ceph-volume
+ extra_packages:
+ - python-rados
+ - python-rgw
+ - python-rbd
+ - python-cephfs
+ # For kernel_untar_build workunit
+ extra_system_packages:
+ - bison
+ - flex
+ - elfutils-libelf-devel
+ - openssl-devel
+ - NetworkManager
+ - iproute
+ - util-linux
+- print: "**** done installing pacific"
+- ceph:
+ log-ignorelist:
+ - overall HEALTH_
+ - \(FS_
+ - \(MDS_
+ - \(OSD_
+ - \(MON_DOWN\)
+ - \(CACHE_POOL_
+ - \(POOL_
+ - \(MGR_DOWN\)
+ - \(PG_
+ - \(SMALLER_PGP_NUM\)
+ - Monitor daemon marked osd
+ - Behind on trimming
+ - Manager daemon
+ conf:
+ global:
+ mon warn on pool no app: false
+ ms bind msgr2: false
+- exec:
+ osd.0:
+ - ceph osd set-require-min-compat-client pacific
+- print: "**** done ceph"
diff --git a/qa/suites/fs/upgrade/upgraded_client/tasks/1-mount/.qa b/qa/suites/fs/upgrade/upgraded_client/tasks/1-mount/.qa
new file mode 120000
index 000000000..a602a0353
--- /dev/null
+++ b/qa/suites/fs/upgrade/upgraded_client/tasks/1-mount/.qa
@@ -0,0 +1 @@
+../.qa/ \ No newline at end of file
diff --git a/qa/suites/fs/upgrade/upgraded_client/tasks/1-mount/mount b/qa/suites/fs/upgrade/upgraded_client/tasks/1-mount/mount
new file mode 120000
index 000000000..e3600f453
--- /dev/null
+++ b/qa/suites/fs/upgrade/upgraded_client/tasks/1-mount/mount
@@ -0,0 +1 @@
+.qa/cephfs/mount/ \ No newline at end of file
diff --git a/qa/suites/fs/upgrade/upgraded_client/tasks/2-workload/.qa b/qa/suites/fs/upgrade/upgraded_client/tasks/2-workload/.qa
new file mode 120000
index 000000000..a602a0353
--- /dev/null
+++ b/qa/suites/fs/upgrade/upgraded_client/tasks/2-workload/.qa
@@ -0,0 +1 @@
+../.qa/ \ No newline at end of file
diff --git a/qa/suites/fs/upgrade/upgraded_client/tasks/2-workload/new_ops/% b/qa/suites/fs/upgrade/upgraded_client/tasks/2-workload/new_ops/%
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/qa/suites/fs/upgrade/upgraded_client/tasks/2-workload/new_ops/%
diff --git a/qa/suites/fs/upgrade/upgraded_client/tasks/2-workload/new_ops/0-clients/fuse-upgrade.yaml b/qa/suites/fs/upgrade/upgraded_client/tasks/2-workload/new_ops/0-clients/fuse-upgrade.yaml
new file mode 100644
index 000000000..34c85a00e
--- /dev/null
+++ b/qa/suites/fs/upgrade/upgraded_client/tasks/2-workload/new_ops/0-clients/fuse-upgrade.yaml
@@ -0,0 +1,14 @@
+teuthology:
+ postmerge:
+ - if not is_fuse() then reject() end
+tasks:
+- ceph-fuse:
+ client.0:
+ mounted: false
+- print: "**** done unmount client.0"
+- install.upgrade:
+ client.0:
+- print: "**** done install.upgrade on client.0"
+- ceph-fuse:
+ client.0:
+- print: "**** done remount client"
diff --git a/qa/suites/fs/upgrade/upgraded_client/tasks/2-workload/new_ops/0-clients/kclient.yaml b/qa/suites/fs/upgrade/upgraded_client/tasks/2-workload/new_ops/0-clients/kclient.yaml
new file mode 100644
index 000000000..ecc705600
--- /dev/null
+++ b/qa/suites/fs/upgrade/upgraded_client/tasks/2-workload/new_ops/0-clients/kclient.yaml
@@ -0,0 +1,8 @@
+teuthology:
+ postmerge:
+ # Once can we make sure the distro kernels have included the newops fixes
+ # we can remove the is_kupstream() restriction. While since the Nautilus
+ # will only support the 'v1' mount syntax, so don't touch the mount syntax
+ # restriction.
+ - if not is_kupstream() or syntax_version() == 'v2' then reject() end
+tasks:
diff --git a/qa/suites/fs/upgrade/upgraded_client/tasks/2-workload/new_ops/1-client-sanity.yaml b/qa/suites/fs/upgrade/upgraded_client/tasks/2-workload/new_ops/1-client-sanity.yaml
new file mode 100644
index 000000000..9508cce65
--- /dev/null
+++ b/qa/suites/fs/upgrade/upgraded_client/tasks/2-workload/new_ops/1-client-sanity.yaml
@@ -0,0 +1,4 @@
+tasks:
+ - cephfs_test_runner:
+ modules:
+ - tasks.cephfs.test_newops
diff --git a/qa/suites/fs/upgrade/upgraded_client/tasks/2-workload/stress_tests/% b/qa/suites/fs/upgrade/upgraded_client/tasks/2-workload/stress_tests/%
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/qa/suites/fs/upgrade/upgraded_client/tasks/2-workload/stress_tests/%
diff --git a/qa/suites/fs/upgrade/upgraded_client/tasks/2-workload/stress_tests/.qa b/qa/suites/fs/upgrade/upgraded_client/tasks/2-workload/stress_tests/.qa
new file mode 120000
index 000000000..a602a0353
--- /dev/null
+++ b/qa/suites/fs/upgrade/upgraded_client/tasks/2-workload/stress_tests/.qa
@@ -0,0 +1 @@
+../.qa/ \ No newline at end of file
diff --git a/qa/suites/fs/upgrade/upgraded_client/tasks/2-workload/stress_tests/0-client-upgrade.yaml b/qa/suites/fs/upgrade/upgraded_client/tasks/2-workload/stress_tests/0-client-upgrade.yaml
new file mode 100644
index 000000000..2d948af19
--- /dev/null
+++ b/qa/suites/fs/upgrade/upgraded_client/tasks/2-workload/stress_tests/0-client-upgrade.yaml
@@ -0,0 +1,14 @@
+teuthology:
+ postmerge:
+ - if not is_fuse() then reject() end
+tasks:
+- ceph-fuse:
+ client.0:
+ mounted: false
+- print: "**** done unmount client.0"
+- install.upgrade:
+ client.0:
+- print: "**** done install.upgrade on client.0"
+- ceph-fuse:
+ client.0:
+- print: "**** done remount client.0"
diff --git a/qa/suites/fs/upgrade/upgraded_client/tasks/2-workload/stress_tests/1-tests/.qa b/qa/suites/fs/upgrade/upgraded_client/tasks/2-workload/stress_tests/1-tests/.qa
new file mode 120000
index 000000000..a602a0353
--- /dev/null
+++ b/qa/suites/fs/upgrade/upgraded_client/tasks/2-workload/stress_tests/1-tests/.qa
@@ -0,0 +1 @@
+../.qa/ \ No newline at end of file
diff --git a/qa/suites/fs/upgrade/upgraded_client/tasks/2-workload/stress_tests/1-tests/blogbench.yaml b/qa/suites/fs/upgrade/upgraded_client/tasks/2-workload/stress_tests/1-tests/blogbench.yaml
new file mode 120000
index 000000000..a2f8b3052
--- /dev/null
+++ b/qa/suites/fs/upgrade/upgraded_client/tasks/2-workload/stress_tests/1-tests/blogbench.yaml
@@ -0,0 +1 @@
+.qa/suites/fs/workload/tasks/5-workunit/suites/blogbench.yaml \ No newline at end of file
diff --git a/qa/suites/fs/upgrade/upgraded_client/tasks/2-workload/stress_tests/1-tests/dbench.yaml b/qa/suites/fs/upgrade/upgraded_client/tasks/2-workload/stress_tests/1-tests/dbench.yaml
new file mode 120000
index 000000000..9fb8adcea
--- /dev/null
+++ b/qa/suites/fs/upgrade/upgraded_client/tasks/2-workload/stress_tests/1-tests/dbench.yaml
@@ -0,0 +1 @@
+.qa/suites/fs/workload/tasks/5-workunit/suites/dbench.yaml \ No newline at end of file
diff --git a/qa/suites/fs/upgrade/upgraded_client/tasks/2-workload/stress_tests/1-tests/fsstress.yaml b/qa/suites/fs/upgrade/upgraded_client/tasks/2-workload/stress_tests/1-tests/fsstress.yaml
new file mode 120000
index 000000000..dc777f36d
--- /dev/null
+++ b/qa/suites/fs/upgrade/upgraded_client/tasks/2-workload/stress_tests/1-tests/fsstress.yaml
@@ -0,0 +1 @@
+.qa/suites/fs/workload/tasks/5-workunit/suites/fsstress.yaml \ No newline at end of file
diff --git a/qa/suites/fs/upgrade/upgraded_client/tasks/2-workload/stress_tests/1-tests/iozone.yaml b/qa/suites/fs/upgrade/upgraded_client/tasks/2-workload/stress_tests/1-tests/iozone.yaml
new file mode 120000
index 000000000..f4d0ead4f
--- /dev/null
+++ b/qa/suites/fs/upgrade/upgraded_client/tasks/2-workload/stress_tests/1-tests/iozone.yaml
@@ -0,0 +1 @@
+.qa/suites/fs/workload/tasks/5-workunit/suites/iozone.yaml \ No newline at end of file
diff --git a/qa/suites/fs/upgrade/upgraded_client/tasks/2-workload/stress_tests/1-tests/kernel_untar_build.yaml b/qa/suites/fs/upgrade/upgraded_client/tasks/2-workload/stress_tests/1-tests/kernel_untar_build.yaml
new file mode 120000
index 000000000..317ebf8c4
--- /dev/null
+++ b/qa/suites/fs/upgrade/upgraded_client/tasks/2-workload/stress_tests/1-tests/kernel_untar_build.yaml
@@ -0,0 +1 @@
+.qa/suites/fs/workload/tasks/5-workunit/kernel_untar_build.yaml \ No newline at end of file
diff --git a/qa/suites/fs/valgrind/% b/qa/suites/fs/valgrind/%
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/qa/suites/fs/valgrind/%
diff --git a/qa/suites/fs/valgrind/.qa b/qa/suites/fs/valgrind/.qa
new file mode 120000
index 000000000..a602a0353
--- /dev/null
+++ b/qa/suites/fs/valgrind/.qa
@@ -0,0 +1 @@
+../.qa/ \ No newline at end of file
diff --git a/qa/suites/fs/valgrind/begin b/qa/suites/fs/valgrind/begin
new file mode 120000
index 000000000..77af91f7d
--- /dev/null
+++ b/qa/suites/fs/valgrind/begin
@@ -0,0 +1 @@
+.qa/cephfs/begin/ \ No newline at end of file
diff --git a/qa/suites/fs/valgrind/centos_latest.yaml b/qa/suites/fs/valgrind/centos_latest.yaml
new file mode 120000
index 000000000..bd9854e70
--- /dev/null
+++ b/qa/suites/fs/valgrind/centos_latest.yaml
@@ -0,0 +1 @@
+.qa/distros/supported/centos_latest.yaml \ No newline at end of file
diff --git a/qa/suites/fs/valgrind/debug.yaml b/qa/suites/fs/valgrind/debug.yaml
new file mode 100644
index 000000000..5eed99cbb
--- /dev/null
+++ b/qa/suites/fs/valgrind/debug.yaml
@@ -0,0 +1,4 @@
+overrides:
+ install:
+ ceph:
+ debuginfo: true
diff --git a/qa/suites/fs/valgrind/mirror/% b/qa/suites/fs/valgrind/mirror/%
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/qa/suites/fs/valgrind/mirror/%
diff --git a/qa/suites/fs/valgrind/mirror/.qa b/qa/suites/fs/valgrind/mirror/.qa
new file mode 120000
index 000000000..a602a0353
--- /dev/null
+++ b/qa/suites/fs/valgrind/mirror/.qa
@@ -0,0 +1 @@
+../.qa/ \ No newline at end of file
diff --git a/qa/suites/fs/valgrind/mirror/cephfs-mirror/.qa b/qa/suites/fs/valgrind/mirror/cephfs-mirror/.qa
new file mode 120000
index 000000000..a602a0353
--- /dev/null
+++ b/qa/suites/fs/valgrind/mirror/cephfs-mirror/.qa
@@ -0,0 +1 @@
+../.qa/ \ No newline at end of file
diff --git a/qa/suites/fs/valgrind/mirror/cephfs-mirror/one-per-cluster.yaml b/qa/suites/fs/valgrind/mirror/cephfs-mirror/one-per-cluster.yaml
new file mode 100644
index 000000000..4112a0af0
--- /dev/null
+++ b/qa/suites/fs/valgrind/mirror/cephfs-mirror/one-per-cluster.yaml
@@ -0,0 +1,7 @@
+meta:
+- desc: run one cephfs-mirror daemon on primary cluster
+
+tasks:
+- cephfs-mirror:
+ client: client.mirror
+ valgrind: [--tool=memcheck, --leak-check=full, --show-reachable=yes]
diff --git a/qa/suites/fs/valgrind/mirror/clients/.qa b/qa/suites/fs/valgrind/mirror/clients/.qa
new file mode 120000
index 000000000..a602a0353
--- /dev/null
+++ b/qa/suites/fs/valgrind/mirror/clients/.qa
@@ -0,0 +1 @@
+../.qa/ \ No newline at end of file
diff --git a/qa/suites/fs/valgrind/mirror/clients/mirror.yaml b/qa/suites/fs/valgrind/mirror/clients/mirror.yaml
new file mode 100644
index 000000000..1a68fea8b
--- /dev/null
+++ b/qa/suites/fs/valgrind/mirror/clients/mirror.yaml
@@ -0,0 +1,18 @@
+meta:
+- desc: configure the permissions for client.mirror
+overrides:
+ ceph:
+ conf:
+ client:
+ debug cephfs_mirror: 20
+ log to stderr: false
+ # make these predictable
+ client.mirror:
+ admin socket: /var/run/ceph/cephfs-mirror.asok
+ pid file: /var/run/ceph/cephfs-mirror.pid
+tasks:
+- exec:
+ client.mirror:
+ - "sudo ceph auth caps client.mirror mon 'profile cephfs-mirror' mds 'allow r' osd 'allow rw tag cephfs metadata=*, allow r tag cephfs data=*' mgr 'allow r'"
+ client.mirror_remote:
+ - "sudo ceph auth caps client.mirror_remote mon 'allow r' mds 'allow rwps' osd 'allow rw tag cephfs *=*' mgr 'allow r'"
diff --git a/qa/suites/fs/valgrind/mirror/cluster/.qa b/qa/suites/fs/valgrind/mirror/cluster/.qa
new file mode 120000
index 000000000..a602a0353
--- /dev/null
+++ b/qa/suites/fs/valgrind/mirror/cluster/.qa
@@ -0,0 +1 @@
+../.qa/ \ No newline at end of file
diff --git a/qa/suites/fs/valgrind/mirror/cluster/1-node.yaml b/qa/suites/fs/valgrind/mirror/cluster/1-node.yaml
new file mode 100644
index 000000000..cae4aca5e
--- /dev/null
+++ b/qa/suites/fs/valgrind/mirror/cluster/1-node.yaml
@@ -0,0 +1,17 @@
+meta:
+- desc: 1 ceph cluster with 1 mon, 1 mgr, 3 osds, 5 mdss
+roles:
+- - mon.a
+ - mgr.x
+ - mds.a
+ - mds.b
+ - mds.c
+ - mds.d
+ - mds.e
+ - osd.0
+ - osd.1
+ - osd.2
+ - client.0
+ - client.1
+ - client.mirror
+ - client.mirror_remote
diff --git a/qa/suites/fs/valgrind/mirror/mount/.qa b/qa/suites/fs/valgrind/mirror/mount/.qa
new file mode 120000
index 000000000..a602a0353
--- /dev/null
+++ b/qa/suites/fs/valgrind/mirror/mount/.qa
@@ -0,0 +1 @@
+../.qa/ \ No newline at end of file
diff --git a/qa/suites/fs/valgrind/mirror/mount/fuse.yaml b/qa/suites/fs/valgrind/mirror/mount/fuse.yaml
new file mode 100644
index 000000000..1fdf55ab4
--- /dev/null
+++ b/qa/suites/fs/valgrind/mirror/mount/fuse.yaml
@@ -0,0 +1,2 @@
+tasks:
+ - ceph-fuse: [client.0, client.1]
diff --git a/qa/suites/fs/valgrind/mirror/overrides/.qa b/qa/suites/fs/valgrind/mirror/overrides/.qa
new file mode 120000
index 000000000..a602a0353
--- /dev/null
+++ b/qa/suites/fs/valgrind/mirror/overrides/.qa
@@ -0,0 +1 @@
+../.qa/ \ No newline at end of file
diff --git a/qa/suites/fs/valgrind/mirror/overrides/whitelist_health.yaml b/qa/suites/fs/valgrind/mirror/overrides/whitelist_health.yaml
new file mode 100644
index 000000000..d40fa4cb8
--- /dev/null
+++ b/qa/suites/fs/valgrind/mirror/overrides/whitelist_health.yaml
@@ -0,0 +1,14 @@
+overrides:
+ ceph:
+ log-ignorelist:
+ - overall HEALTH_
+ - \(FS_DEGRADED\)
+ - \(MDS_FAILED\)
+ - \(MDS_DEGRADED\)
+ - \(FS_WITH_FAILED_MDS\)
+ - \(MDS_DAMAGE\)
+ - \(MDS_ALL_DOWN\)
+ - \(MDS_UP_LESS_THAN_MAX\)
+ - \(FS_INLINE_DATA_DEPRECATED\)
+ - Reduced data availability
+ - Degraded data redundancy
diff --git a/qa/suites/fs/valgrind/mirror/tasks/.qa b/qa/suites/fs/valgrind/mirror/tasks/.qa
new file mode 120000
index 000000000..a602a0353
--- /dev/null
+++ b/qa/suites/fs/valgrind/mirror/tasks/.qa
@@ -0,0 +1 @@
+../.qa/ \ No newline at end of file
diff --git a/qa/suites/fs/valgrind/mirror/tasks/mirror.yaml b/qa/suites/fs/valgrind/mirror/tasks/mirror.yaml
new file mode 100644
index 000000000..07c1e24ef
--- /dev/null
+++ b/qa/suites/fs/valgrind/mirror/tasks/mirror.yaml
@@ -0,0 +1,10 @@
+overrides:
+ ceph:
+ conf:
+ mgr:
+ debug client: 10
+
+tasks:
+ - cephfs_test_runner:
+ modules:
+ - tasks.cephfs.test_mirroring.TestMirroring
diff --git a/qa/suites/fs/verify/% b/qa/suites/fs/verify/%
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/qa/suites/fs/verify/%
diff --git a/qa/suites/fs/verify/.qa b/qa/suites/fs/verify/.qa
new file mode 120000
index 000000000..a602a0353
--- /dev/null
+++ b/qa/suites/fs/verify/.qa
@@ -0,0 +1 @@
+../.qa/ \ No newline at end of file
diff --git a/qa/suites/fs/verify/begin b/qa/suites/fs/verify/begin
new file mode 120000
index 000000000..77af91f7d
--- /dev/null
+++ b/qa/suites/fs/verify/begin
@@ -0,0 +1 @@
+.qa/cephfs/begin/ \ No newline at end of file
diff --git a/qa/suites/fs/verify/clusters/.qa b/qa/suites/fs/verify/clusters/.qa
new file mode 120000
index 000000000..a602a0353
--- /dev/null
+++ b/qa/suites/fs/verify/clusters/.qa
@@ -0,0 +1 @@
+../.qa/ \ No newline at end of file
diff --git a/qa/suites/fs/verify/clusters/1a5s-mds-1c-client.yaml b/qa/suites/fs/verify/clusters/1a5s-mds-1c-client.yaml
new file mode 120000
index 000000000..2ab33af1c
--- /dev/null
+++ b/qa/suites/fs/verify/clusters/1a5s-mds-1c-client.yaml
@@ -0,0 +1 @@
+.qa/cephfs/clusters/1a5s-mds-1c-client.yaml \ No newline at end of file
diff --git a/qa/suites/fs/verify/conf b/qa/suites/fs/verify/conf
new file mode 120000
index 000000000..16e8cc44b
--- /dev/null
+++ b/qa/suites/fs/verify/conf
@@ -0,0 +1 @@
+.qa/cephfs/conf \ No newline at end of file
diff --git a/qa/suites/fs/verify/distro/$ b/qa/suites/fs/verify/distro/$
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/qa/suites/fs/verify/distro/$
diff --git a/qa/suites/fs/verify/distro/.qa b/qa/suites/fs/verify/distro/.qa
new file mode 120000
index 000000000..a602a0353
--- /dev/null
+++ b/qa/suites/fs/verify/distro/.qa
@@ -0,0 +1 @@
+../.qa/ \ No newline at end of file
diff --git a/qa/suites/fs/verify/distro/centos_8.yaml b/qa/suites/fs/verify/distro/centos_8.yaml
new file mode 120000
index 000000000..380a1443b
--- /dev/null
+++ b/qa/suites/fs/verify/distro/centos_8.yaml
@@ -0,0 +1 @@
+.qa/distros/all/centos_8.yaml \ No newline at end of file
diff --git a/qa/suites/fs/verify/distro/rhel_8.yaml b/qa/suites/fs/verify/distro/rhel_8.yaml
new file mode 120000
index 000000000..133acf27b
--- /dev/null
+++ b/qa/suites/fs/verify/distro/rhel_8.yaml
@@ -0,0 +1 @@
+.qa/distros/all/rhel_8.yaml \ No newline at end of file
diff --git a/qa/suites/fs/verify/distro/ubuntu/+ b/qa/suites/fs/verify/distro/ubuntu/+
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/qa/suites/fs/verify/distro/ubuntu/+
diff --git a/qa/suites/fs/verify/distro/ubuntu/.qa b/qa/suites/fs/verify/distro/ubuntu/.qa
new file mode 120000
index 000000000..a602a0353
--- /dev/null
+++ b/qa/suites/fs/verify/distro/ubuntu/.qa
@@ -0,0 +1 @@
+../.qa/ \ No newline at end of file
diff --git a/qa/suites/fs/verify/distro/ubuntu/latest.yaml b/qa/suites/fs/verify/distro/ubuntu/latest.yaml
new file mode 120000
index 000000000..162964882
--- /dev/null
+++ b/qa/suites/fs/verify/distro/ubuntu/latest.yaml
@@ -0,0 +1 @@
+.qa/distros/all/ubuntu_20.04.yaml \ No newline at end of file
diff --git a/qa/suites/fs/verify/distro/ubuntu/overrides.yaml b/qa/suites/fs/verify/distro/ubuntu/overrides.yaml
new file mode 100644
index 000000000..fdd7f5e5a
--- /dev/null
+++ b/qa/suites/fs/verify/distro/ubuntu/overrides.yaml
@@ -0,0 +1,4 @@
+overrides:
+ ceph:
+ valgrind:
+ exit_on_first_error: false
diff --git a/qa/suites/fs/verify/mount/.qa b/qa/suites/fs/verify/mount/.qa
new file mode 120000
index 000000000..a602a0353
--- /dev/null
+++ b/qa/suites/fs/verify/mount/.qa
@@ -0,0 +1 @@
+../.qa/ \ No newline at end of file
diff --git a/qa/suites/fs/verify/mount/fuse.yaml b/qa/suites/fs/verify/mount/fuse.yaml
new file mode 120000
index 000000000..0e55da9fb
--- /dev/null
+++ b/qa/suites/fs/verify/mount/fuse.yaml
@@ -0,0 +1 @@
+.qa/cephfs/mount/fuse.yaml \ No newline at end of file
diff --git a/qa/suites/fs/verify/mount/kclient/+ b/qa/suites/fs/verify/mount/kclient/+
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/qa/suites/fs/verify/mount/kclient/+
diff --git a/qa/suites/fs/verify/mount/kclient/.qa b/qa/suites/fs/verify/mount/kclient/.qa
new file mode 120000
index 000000000..a602a0353
--- /dev/null
+++ b/qa/suites/fs/verify/mount/kclient/.qa
@@ -0,0 +1 @@
+../.qa/ \ No newline at end of file
diff --git a/qa/suites/fs/verify/mount/kclient/k-testing.yaml b/qa/suites/fs/verify/mount/kclient/k-testing.yaml
new file mode 120000
index 000000000..bec80be29
--- /dev/null
+++ b/qa/suites/fs/verify/mount/kclient/k-testing.yaml
@@ -0,0 +1 @@
+.qa/cephfs/mount/kclient/overrides/distro/testing/k-testing.yaml \ No newline at end of file
diff --git a/qa/suites/fs/verify/mount/kclient/mount.yaml b/qa/suites/fs/verify/mount/kclient/mount.yaml
new file mode 120000
index 000000000..9967f23e2
--- /dev/null
+++ b/qa/suites/fs/verify/mount/kclient/mount.yaml
@@ -0,0 +1 @@
+.qa/cephfs/mount/kclient/mount.yaml \ No newline at end of file
diff --git a/qa/suites/fs/verify/mount/kclient/ms-die-on-skipped.yaml b/qa/suites/fs/verify/mount/kclient/ms-die-on-skipped.yaml
new file mode 120000
index 000000000..1912a0c91
--- /dev/null
+++ b/qa/suites/fs/verify/mount/kclient/ms-die-on-skipped.yaml
@@ -0,0 +1 @@
+.qa/cephfs/mount/kclient/overrides/ms-die-on-skipped.yaml \ No newline at end of file
diff --git a/qa/suites/fs/verify/objectstore-ec b/qa/suites/fs/verify/objectstore-ec
new file mode 120000
index 000000000..affe29493
--- /dev/null
+++ b/qa/suites/fs/verify/objectstore-ec
@@ -0,0 +1 @@
+.qa/cephfs/objectstore-ec \ No newline at end of file
diff --git a/qa/suites/fs/verify/overrides/+ b/qa/suites/fs/verify/overrides/+
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/qa/suites/fs/verify/overrides/+
diff --git a/qa/suites/fs/verify/overrides/.qa b/qa/suites/fs/verify/overrides/.qa
new file mode 120000
index 000000000..a602a0353
--- /dev/null
+++ b/qa/suites/fs/verify/overrides/.qa
@@ -0,0 +1 @@
+../.qa/ \ No newline at end of file
diff --git a/qa/suites/fs/verify/overrides/ignorelist_health.yaml b/qa/suites/fs/verify/overrides/ignorelist_health.yaml
new file mode 120000
index 000000000..5cb891a95
--- /dev/null
+++ b/qa/suites/fs/verify/overrides/ignorelist_health.yaml
@@ -0,0 +1 @@
+.qa/cephfs/overrides/ignorelist_health.yaml \ No newline at end of file
diff --git a/qa/suites/fs/verify/overrides/ignorelist_wrongly_marked_down.yaml b/qa/suites/fs/verify/overrides/ignorelist_wrongly_marked_down.yaml
new file mode 120000
index 000000000..f317cb714
--- /dev/null
+++ b/qa/suites/fs/verify/overrides/ignorelist_wrongly_marked_down.yaml
@@ -0,0 +1 @@
+.qa/cephfs/overrides/ignorelist_wrongly_marked_down.yaml \ No newline at end of file
diff --git a/qa/suites/fs/verify/overrides/mon-debug.yaml b/qa/suites/fs/verify/overrides/mon-debug.yaml
new file mode 100644
index 000000000..6ed3e6d52
--- /dev/null
+++ b/qa/suites/fs/verify/overrides/mon-debug.yaml
@@ -0,0 +1,6 @@
+overrides:
+ ceph:
+ conf:
+ mon:
+ debug ms: 1
+ debug mon: 20
diff --git a/qa/suites/fs/verify/overrides/session_timeout.yaml b/qa/suites/fs/verify/overrides/session_timeout.yaml
new file mode 120000
index 000000000..fce0318c5
--- /dev/null
+++ b/qa/suites/fs/verify/overrides/session_timeout.yaml
@@ -0,0 +1 @@
+.qa/cephfs/overrides/session_timeout.yaml \ No newline at end of file
diff --git a/qa/suites/fs/verify/ranks/.qa b/qa/suites/fs/verify/ranks/.qa
new file mode 120000
index 000000000..a602a0353
--- /dev/null
+++ b/qa/suites/fs/verify/ranks/.qa
@@ -0,0 +1 @@
+../.qa/ \ No newline at end of file
diff --git a/qa/suites/fs/verify/ranks/1.yaml b/qa/suites/fs/verify/ranks/1.yaml
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/qa/suites/fs/verify/ranks/1.yaml
diff --git a/qa/suites/fs/verify/ranks/3.yaml b/qa/suites/fs/verify/ranks/3.yaml
new file mode 100644
index 000000000..9ed043c14
--- /dev/null
+++ b/qa/suites/fs/verify/ranks/3.yaml
@@ -0,0 +1,9 @@
+overrides:
+ ceph:
+ cephfs:
+ max_mds: 3
+ check-counter:
+ counters:
+ mds:
+ - mds.exported
+ - mds.imported
diff --git a/qa/suites/fs/verify/ranks/5.yaml b/qa/suites/fs/verify/ranks/5.yaml
new file mode 100644
index 000000000..ed89cef3a
--- /dev/null
+++ b/qa/suites/fs/verify/ranks/5.yaml
@@ -0,0 +1,9 @@
+overrides:
+ ceph:
+ cephfs:
+ max_mds: 5
+ check-counter:
+ counters:
+ mds:
+ - mds.exported
+ - mds.imported
diff --git a/qa/suites/fs/verify/tasks/.qa b/qa/suites/fs/verify/tasks/.qa
new file mode 120000
index 000000000..a602a0353
--- /dev/null
+++ b/qa/suites/fs/verify/tasks/.qa
@@ -0,0 +1 @@
+../.qa/ \ No newline at end of file
diff --git a/qa/suites/fs/verify/tasks/dbench.yaml b/qa/suites/fs/verify/tasks/dbench.yaml
new file mode 120000
index 000000000..b0f876c3c
--- /dev/null
+++ b/qa/suites/fs/verify/tasks/dbench.yaml
@@ -0,0 +1 @@
+.qa/cephfs/tasks/cfuse_workunit_suites_dbench.yaml \ No newline at end of file
diff --git a/qa/suites/fs/verify/tasks/fsstress.yaml b/qa/suites/fs/verify/tasks/fsstress.yaml
new file mode 120000
index 000000000..c2e859fff
--- /dev/null
+++ b/qa/suites/fs/verify/tasks/fsstress.yaml
@@ -0,0 +1 @@
+.qa/cephfs/tasks/cfuse_workunit_suites_fsstress.yaml \ No newline at end of file
diff --git a/qa/suites/fs/verify/validater/.qa b/qa/suites/fs/verify/validater/.qa
new file mode 120000
index 000000000..a602a0353
--- /dev/null
+++ b/qa/suites/fs/verify/validater/.qa
@@ -0,0 +1 @@
+../.qa/ \ No newline at end of file
diff --git a/qa/suites/fs/verify/validater/lockdep.yaml b/qa/suites/fs/verify/validater/lockdep.yaml
new file mode 100644
index 000000000..25f84355c
--- /dev/null
+++ b/qa/suites/fs/verify/validater/lockdep.yaml
@@ -0,0 +1,5 @@
+overrides:
+ ceph:
+ conf:
+ global:
+ lockdep: true
diff --git a/qa/suites/fs/verify/validater/valgrind.yaml b/qa/suites/fs/verify/validater/valgrind.yaml
new file mode 100644
index 000000000..930872fc7
--- /dev/null
+++ b/qa/suites/fs/verify/validater/valgrind.yaml
@@ -0,0 +1,29 @@
+overrides:
+ install:
+ ceph:
+ debuginfo: true
+ ceph:
+ # Valgrind makes everything slow, so ignore slow requests and extend heartbeat grace
+ log-ignorelist:
+ - slow request
+ - SLOW_OPS
+ - MON_DOWN
+ conf:
+ global:
+ osd heartbeat grace: 60
+ mds heartbeat grace: 60
+ mds beacon grace: 60
+ mds:
+ mds valgrind exit: true
+ mon:
+ mon osd crush smoke test: false
+ osd:
+ osd fast shutdown: false
+ valgrind:
+ mon: [--tool=memcheck, --leak-check=full, --show-reachable=yes]
+ mds: [--tool=memcheck]
+ watchdog:
+ daemon_restart: normal
+ ceph-fuse:
+ client.0:
+ valgrind: [--tool=memcheck, --leak-check=full, --show-reachable=yes]
diff --git a/qa/suites/fs/volumes/% b/qa/suites/fs/volumes/%
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/qa/suites/fs/volumes/%
diff --git a/qa/suites/fs/volumes/.qa b/qa/suites/fs/volumes/.qa
new file mode 120000
index 000000000..a602a0353
--- /dev/null
+++ b/qa/suites/fs/volumes/.qa
@@ -0,0 +1 @@
+../.qa/ \ No newline at end of file
diff --git a/qa/suites/fs/volumes/begin b/qa/suites/fs/volumes/begin
new file mode 120000
index 000000000..77af91f7d
--- /dev/null
+++ b/qa/suites/fs/volumes/begin
@@ -0,0 +1 @@
+.qa/cephfs/begin/ \ No newline at end of file
diff --git a/qa/suites/fs/volumes/clusters/.qa b/qa/suites/fs/volumes/clusters/.qa
new file mode 120000
index 000000000..a602a0353
--- /dev/null
+++ b/qa/suites/fs/volumes/clusters/.qa
@@ -0,0 +1 @@
+../.qa/ \ No newline at end of file
diff --git a/qa/suites/fs/volumes/clusters/1a3s-mds-4c-client.yaml b/qa/suites/fs/volumes/clusters/1a3s-mds-4c-client.yaml
new file mode 120000
index 000000000..5c722a30b
--- /dev/null
+++ b/qa/suites/fs/volumes/clusters/1a3s-mds-4c-client.yaml
@@ -0,0 +1 @@
+.qa/cephfs/clusters/1a3s-mds-4c-client.yaml \ No newline at end of file
diff --git a/qa/suites/fs/volumes/conf b/qa/suites/fs/volumes/conf
new file mode 120000
index 000000000..16e8cc44b
--- /dev/null
+++ b/qa/suites/fs/volumes/conf
@@ -0,0 +1 @@
+.qa/cephfs/conf \ No newline at end of file
diff --git a/qa/suites/fs/volumes/distro b/qa/suites/fs/volumes/distro
new file mode 120000
index 000000000..0862b4457
--- /dev/null
+++ b/qa/suites/fs/volumes/distro
@@ -0,0 +1 @@
+.qa/distros/supported-random-distro$ \ No newline at end of file
diff --git a/qa/suites/fs/volumes/mount b/qa/suites/fs/volumes/mount
new file mode 120000
index 000000000..e3600f453
--- /dev/null
+++ b/qa/suites/fs/volumes/mount
@@ -0,0 +1 @@
+.qa/cephfs/mount/ \ No newline at end of file
diff --git a/qa/suites/fs/volumes/objectstore/.qa b/qa/suites/fs/volumes/objectstore/.qa
new file mode 120000
index 000000000..a602a0353
--- /dev/null
+++ b/qa/suites/fs/volumes/objectstore/.qa
@@ -0,0 +1 @@
+../.qa/ \ No newline at end of file
diff --git a/qa/suites/fs/volumes/objectstore/bluestore-bitmap.yaml b/qa/suites/fs/volumes/objectstore/bluestore-bitmap.yaml
new file mode 120000
index 000000000..a59cf5175
--- /dev/null
+++ b/qa/suites/fs/volumes/objectstore/bluestore-bitmap.yaml
@@ -0,0 +1 @@
+.qa/objectstore/bluestore-bitmap.yaml \ No newline at end of file
diff --git a/qa/suites/fs/volumes/overrides/+ b/qa/suites/fs/volumes/overrides/+
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/qa/suites/fs/volumes/overrides/+
diff --git a/qa/suites/fs/volumes/overrides/.qa b/qa/suites/fs/volumes/overrides/.qa
new file mode 120000
index 000000000..a602a0353
--- /dev/null
+++ b/qa/suites/fs/volumes/overrides/.qa
@@ -0,0 +1 @@
+../.qa/ \ No newline at end of file
diff --git a/qa/suites/fs/volumes/overrides/ignorelist_health.yaml b/qa/suites/fs/volumes/overrides/ignorelist_health.yaml
new file mode 120000
index 000000000..5cb891a95
--- /dev/null
+++ b/qa/suites/fs/volumes/overrides/ignorelist_health.yaml
@@ -0,0 +1 @@
+.qa/cephfs/overrides/ignorelist_health.yaml \ No newline at end of file
diff --git a/qa/suites/fs/volumes/overrides/ignorelist_wrongly_marked_down.yaml b/qa/suites/fs/volumes/overrides/ignorelist_wrongly_marked_down.yaml
new file mode 120000
index 000000000..f317cb714
--- /dev/null
+++ b/qa/suites/fs/volumes/overrides/ignorelist_wrongly_marked_down.yaml
@@ -0,0 +1 @@
+.qa/cephfs/overrides/ignorelist_wrongly_marked_down.yaml \ No newline at end of file
diff --git a/qa/suites/fs/volumes/overrides/no_client_pidfile.yaml b/qa/suites/fs/volumes/overrides/no_client_pidfile.yaml
new file mode 120000
index 000000000..8888f3327
--- /dev/null
+++ b/qa/suites/fs/volumes/overrides/no_client_pidfile.yaml
@@ -0,0 +1 @@
+.qa/overrides/no_client_pidfile.yaml \ No newline at end of file
diff --git a/qa/suites/fs/volumes/tasks/.qa b/qa/suites/fs/volumes/tasks/.qa
new file mode 120000
index 000000000..a602a0353
--- /dev/null
+++ b/qa/suites/fs/volumes/tasks/.qa
@@ -0,0 +1 @@
+../.qa/ \ No newline at end of file
diff --git a/qa/suites/fs/volumes/tasks/volumes/% b/qa/suites/fs/volumes/tasks/volumes/%
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/qa/suites/fs/volumes/tasks/volumes/%
diff --git a/qa/suites/fs/volumes/tasks/volumes/.qa b/qa/suites/fs/volumes/tasks/volumes/.qa
new file mode 120000
index 000000000..a602a0353
--- /dev/null
+++ b/qa/suites/fs/volumes/tasks/volumes/.qa
@@ -0,0 +1 @@
+../.qa/ \ No newline at end of file
diff --git a/qa/suites/fs/volumes/tasks/volumes/overrides.yaml b/qa/suites/fs/volumes/tasks/volumes/overrides.yaml
new file mode 100644
index 000000000..fb15e5079
--- /dev/null
+++ b/qa/suites/fs/volumes/tasks/volumes/overrides.yaml
@@ -0,0 +1,17 @@
+overrides:
+ ceph:
+ conf:
+ mgr:
+ debug client: 20
+ debug ms: 1
+ debug finisher: 20
+ debug mgr: 20
+ log-ignorelist:
+ - OSD full dropping all updates
+ - OSD near full
+ - pausewr flag
+ - failsafe engaged, dropping updates
+ - failsafe disengaged, no longer dropping
+ - is full \(reached quota
+ - POOL_FULL
+ - POOL_BACKFILLFULL
diff --git a/qa/suites/fs/volumes/tasks/volumes/test/.qa b/qa/suites/fs/volumes/tasks/volumes/test/.qa
new file mode 120000
index 000000000..a602a0353
--- /dev/null
+++ b/qa/suites/fs/volumes/tasks/volumes/test/.qa
@@ -0,0 +1 @@
+../.qa/ \ No newline at end of file
diff --git a/qa/suites/fs/volumes/tasks/volumes/test/basic.yaml b/qa/suites/fs/volumes/tasks/volumes/test/basic.yaml
new file mode 100644
index 000000000..b4c65cfc5
--- /dev/null
+++ b/qa/suites/fs/volumes/tasks/volumes/test/basic.yaml
@@ -0,0 +1,8 @@
+tasks:
+ - cephfs_test_runner:
+ fail_on_skip: false
+ modules:
+ - tasks.cephfs.test_volumes.TestVolumes
+ - tasks.cephfs.test_volumes.TestSubvolumeGroups
+ - tasks.cephfs.test_volumes.TestSubvolumes
+ - tasks.cephfs.test_subvolume.TestSubvolume
diff --git a/qa/suites/fs/volumes/tasks/volumes/test/clone.yaml b/qa/suites/fs/volumes/tasks/volumes/test/clone.yaml
new file mode 100644
index 000000000..e0c1f0150
--- /dev/null
+++ b/qa/suites/fs/volumes/tasks/volumes/test/clone.yaml
@@ -0,0 +1,5 @@
+tasks:
+ - cephfs_test_runner:
+ fail_on_skip: false
+ modules:
+ - tasks.cephfs.test_volumes.TestSubvolumeSnapshotClones
diff --git a/qa/suites/fs/volumes/tasks/volumes/test/finisher_per_module.yaml b/qa/suites/fs/volumes/tasks/volumes/test/finisher_per_module.yaml
new file mode 100644
index 000000000..ec8335fe0
--- /dev/null
+++ b/qa/suites/fs/volumes/tasks/volumes/test/finisher_per_module.yaml
@@ -0,0 +1,13 @@
+tasks:
+ - check-counter:
+ counters:
+ mgr:
+ - name: "finisher-volumes.complete_latency.avgcount"
+ min: 4
+ - name: "finisher-volumes.queue_len"
+ expected_val: 0
+
+ - cephfs_test_runner:
+ fail_on_skip: false
+ modules:
+ - tasks.cephfs.test_volumes.TestPerModuleFinsherThread
diff --git a/qa/suites/fs/volumes/tasks/volumes/test/misc.yaml b/qa/suites/fs/volumes/tasks/volumes/test/misc.yaml
new file mode 100644
index 000000000..1f6fd2b2d
--- /dev/null
+++ b/qa/suites/fs/volumes/tasks/volumes/test/misc.yaml
@@ -0,0 +1,5 @@
+tasks:
+ - cephfs_test_runner:
+ fail_on_skip: false
+ modules:
+ - tasks.cephfs.test_volumes.TestMisc
diff --git a/qa/suites/fs/volumes/tasks/volumes/test/snapshot.yaml b/qa/suites/fs/volumes/tasks/volumes/test/snapshot.yaml
new file mode 100644
index 000000000..d68201137
--- /dev/null
+++ b/qa/suites/fs/volumes/tasks/volumes/test/snapshot.yaml
@@ -0,0 +1,6 @@
+tasks:
+ - cephfs_test_runner:
+ fail_on_skip: false
+ modules:
+ - tasks.cephfs.test_volumes.TestSubvolumeGroupSnapshots
+ - tasks.cephfs.test_volumes.TestSubvolumeSnapshots
diff --git a/qa/suites/fs/workload/% b/qa/suites/fs/workload/%
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/qa/suites/fs/workload/%
diff --git a/qa/suites/fs/workload/.qa b/qa/suites/fs/workload/.qa
new file mode 120000
index 000000000..a602a0353
--- /dev/null
+++ b/qa/suites/fs/workload/.qa
@@ -0,0 +1 @@
+../.qa/ \ No newline at end of file
diff --git a/qa/suites/fs/workload/0-rhel_8.yaml b/qa/suites/fs/workload/0-rhel_8.yaml
new file mode 120000
index 000000000..c9abcd7b8
--- /dev/null
+++ b/qa/suites/fs/workload/0-rhel_8.yaml
@@ -0,0 +1 @@
+.qa/distros/podman/rhel_8.6_container_tools_rhel8.yaml \ No newline at end of file
diff --git a/qa/suites/fs/workload/begin/+ b/qa/suites/fs/workload/begin/+
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/qa/suites/fs/workload/begin/+
diff --git a/qa/suites/fs/workload/begin/.qa b/qa/suites/fs/workload/begin/.qa
new file mode 120000
index 000000000..a602a0353
--- /dev/null
+++ b/qa/suites/fs/workload/begin/.qa
@@ -0,0 +1 @@
+../.qa/ \ No newline at end of file
diff --git a/qa/suites/fs/workload/begin/0-install.yaml b/qa/suites/fs/workload/begin/0-install.yaml
new file mode 120000
index 000000000..3b1852973
--- /dev/null
+++ b/qa/suites/fs/workload/begin/0-install.yaml
@@ -0,0 +1 @@
+.qa/cephfs/begin/0-install.yaml \ No newline at end of file
diff --git a/qa/suites/fs/workload/begin/1-cephadm.yaml b/qa/suites/fs/workload/begin/1-cephadm.yaml
new file mode 100644
index 000000000..a58ea5725
--- /dev/null
+++ b/qa/suites/fs/workload/begin/1-cephadm.yaml
@@ -0,0 +1,21 @@
+overrides:
+ ceph:
+ conf:
+ osd:
+ osd shutdown pgref assert: true
+tasks:
+- cephadm:
+ roleless: false
+- cephadm.shell:
+ mon.a:
+ - ceph orch status
+ - ceph orch ps
+ - ceph orch ls
+ - ceph orch host ls
+ - ceph orch device ls
+- cephadm.shell:
+ mon.a:
+ - ceph fs dump
+ - ceph osd dump
+- fs.ready:
+ timeout: 300
diff --git a/qa/suites/fs/workload/begin/2-logrotate.yaml b/qa/suites/fs/workload/begin/2-logrotate.yaml
new file mode 120000
index 000000000..9d6e7ba83
--- /dev/null
+++ b/qa/suites/fs/workload/begin/2-logrotate.yaml
@@ -0,0 +1 @@
+.qa/cephfs/begin/2-logrotate.yaml \ No newline at end of file
diff --git a/qa/suites/fs/workload/clusters/.qa b/qa/suites/fs/workload/clusters/.qa
new file mode 120000
index 000000000..a602a0353
--- /dev/null
+++ b/qa/suites/fs/workload/clusters/.qa
@@ -0,0 +1 @@
+../.qa/ \ No newline at end of file
diff --git a/qa/suites/fs/workload/clusters/1a11s-mds-1c-client-3node.yaml b/qa/suites/fs/workload/clusters/1a11s-mds-1c-client-3node.yaml
new file mode 120000
index 000000000..884134573
--- /dev/null
+++ b/qa/suites/fs/workload/clusters/1a11s-mds-1c-client-3node.yaml
@@ -0,0 +1 @@
+.qa/cephfs/clusters/1a11s-mds-1c-client-3node.yaml \ No newline at end of file
diff --git a/qa/suites/fs/workload/conf b/qa/suites/fs/workload/conf
new file mode 120000
index 000000000..16e8cc44b
--- /dev/null
+++ b/qa/suites/fs/workload/conf
@@ -0,0 +1 @@
+.qa/cephfs/conf \ No newline at end of file
diff --git a/qa/suites/fs/workload/mount/.qa b/qa/suites/fs/workload/mount/.qa
new file mode 120000
index 000000000..a602a0353
--- /dev/null
+++ b/qa/suites/fs/workload/mount/.qa
@@ -0,0 +1 @@
+../.qa/ \ No newline at end of file
diff --git a/qa/suites/fs/workload/mount/fuse.yaml b/qa/suites/fs/workload/mount/fuse.yaml
new file mode 120000
index 000000000..0e55da9fb
--- /dev/null
+++ b/qa/suites/fs/workload/mount/fuse.yaml
@@ -0,0 +1 @@
+.qa/cephfs/mount/fuse.yaml \ No newline at end of file
diff --git a/qa/suites/fs/workload/mount/kclient/% b/qa/suites/fs/workload/mount/kclient/%
new file mode 100644
index 000000000..b8626c4cf
--- /dev/null
+++ b/qa/suites/fs/workload/mount/kclient/%
@@ -0,0 +1 @@
+4
diff --git a/qa/suites/fs/workload/mount/kclient/.qa b/qa/suites/fs/workload/mount/kclient/.qa
new file mode 120000
index 000000000..a602a0353
--- /dev/null
+++ b/qa/suites/fs/workload/mount/kclient/.qa
@@ -0,0 +1 @@
+../.qa/ \ No newline at end of file
diff --git a/qa/suites/fs/workload/mount/kclient/base b/qa/suites/fs/workload/mount/kclient/base
new file mode 120000
index 000000000..22f94e150
--- /dev/null
+++ b/qa/suites/fs/workload/mount/kclient/base
@@ -0,0 +1 @@
+.qa/cephfs/mount/kclient/ \ No newline at end of file
diff --git a/qa/suites/fs/workload/mount/kclient/ms_mode/.qa b/qa/suites/fs/workload/mount/kclient/ms_mode/.qa
new file mode 120000
index 000000000..a602a0353
--- /dev/null
+++ b/qa/suites/fs/workload/mount/kclient/ms_mode/.qa
@@ -0,0 +1 @@
+../.qa/ \ No newline at end of file
diff --git a/qa/suites/fs/workload/mount/kclient/ms_mode/crc.yaml b/qa/suites/fs/workload/mount/kclient/ms_mode/crc.yaml
new file mode 100644
index 000000000..7efada467
--- /dev/null
+++ b/qa/suites/fs/workload/mount/kclient/ms_mode/crc.yaml
@@ -0,0 +1,3 @@
+overrides:
+ kclient:
+ mntopts: ["ms_mode=crc"]
diff --git a/qa/suites/fs/workload/mount/kclient/ms_mode/legacy.yaml b/qa/suites/fs/workload/mount/kclient/ms_mode/legacy.yaml
new file mode 100644
index 000000000..8a68a7756
--- /dev/null
+++ b/qa/suites/fs/workload/mount/kclient/ms_mode/legacy.yaml
@@ -0,0 +1,3 @@
+overrides:
+ kclient:
+ mntopts: ["ms_mode=legacy"]
diff --git a/qa/suites/fs/workload/mount/kclient/ms_mode/secure.yaml b/qa/suites/fs/workload/mount/kclient/ms_mode/secure.yaml
new file mode 100644
index 000000000..b4a4221d5
--- /dev/null
+++ b/qa/suites/fs/workload/mount/kclient/ms_mode/secure.yaml
@@ -0,0 +1,3 @@
+overrides:
+ kclient:
+ mntopts: ["ms_mode=secure"]
diff --git a/qa/suites/fs/workload/mount/kclient/wsync/.qa b/qa/suites/fs/workload/mount/kclient/wsync/.qa
new file mode 120000
index 000000000..a602a0353
--- /dev/null
+++ b/qa/suites/fs/workload/mount/kclient/wsync/.qa
@@ -0,0 +1 @@
+../.qa/ \ No newline at end of file
diff --git a/qa/suites/fs/workload/mount/kclient/wsync/no.yaml b/qa/suites/fs/workload/mount/kclient/wsync/no.yaml
new file mode 100644
index 000000000..1ed9e9953
--- /dev/null
+++ b/qa/suites/fs/workload/mount/kclient/wsync/no.yaml
@@ -0,0 +1,3 @@
+overrides:
+ kclient:
+ mntopts: ["nowsync"]
diff --git a/qa/suites/fs/workload/mount/kclient/wsync/yes.yaml b/qa/suites/fs/workload/mount/kclient/wsync/yes.yaml
new file mode 100644
index 000000000..2061bac11
--- /dev/null
+++ b/qa/suites/fs/workload/mount/kclient/wsync/yes.yaml
@@ -0,0 +1,3 @@
+overrides:
+ kclient:
+ mntopts: ["wsync"]
diff --git a/qa/suites/fs/workload/objectstore-ec b/qa/suites/fs/workload/objectstore-ec
new file mode 120000
index 000000000..affe29493
--- /dev/null
+++ b/qa/suites/fs/workload/objectstore-ec
@@ -0,0 +1 @@
+.qa/cephfs/objectstore-ec \ No newline at end of file
diff --git a/qa/suites/fs/workload/omap_limit/.qa b/qa/suites/fs/workload/omap_limit/.qa
new file mode 120000
index 000000000..a602a0353
--- /dev/null
+++ b/qa/suites/fs/workload/omap_limit/.qa
@@ -0,0 +1 @@
+../.qa/ \ No newline at end of file
diff --git a/qa/suites/fs/workload/omap_limit/10.yaml b/qa/suites/fs/workload/omap_limit/10.yaml
new file mode 100644
index 000000000..eec30f681
--- /dev/null
+++ b/qa/suites/fs/workload/omap_limit/10.yaml
@@ -0,0 +1,5 @@
+overrides:
+ ceph:
+ conf:
+ osd:
+ osd_max_omap_entries_per_request: 10
diff --git a/qa/suites/fs/workload/omap_limit/10000.yaml b/qa/suites/fs/workload/omap_limit/10000.yaml
new file mode 100644
index 000000000..c4bea5538
--- /dev/null
+++ b/qa/suites/fs/workload/omap_limit/10000.yaml
@@ -0,0 +1,5 @@
+overrides:
+ ceph:
+ conf:
+ osd:
+ osd_max_omap_entries_per_request: 10000
diff --git a/qa/suites/fs/workload/overrides/+ b/qa/suites/fs/workload/overrides/+
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/qa/suites/fs/workload/overrides/+
diff --git a/qa/suites/fs/workload/overrides/.qa b/qa/suites/fs/workload/overrides/.qa
new file mode 120000
index 000000000..a602a0353
--- /dev/null
+++ b/qa/suites/fs/workload/overrides/.qa
@@ -0,0 +1 @@
+../.qa/ \ No newline at end of file
diff --git a/qa/suites/fs/workload/overrides/cephsqlite-timeout.yaml b/qa/suites/fs/workload/overrides/cephsqlite-timeout.yaml
new file mode 100644
index 000000000..5bd92554f
--- /dev/null
+++ b/qa/suites/fs/workload/overrides/cephsqlite-timeout.yaml
@@ -0,0 +1,7 @@
+# increase lock renewal timeout: OSD stress from small clusters may cause
+# spurious timeouts
+overrides:
+ ceph:
+ conf:
+ mgr:
+ cephsqlite lock renewal timeout: 900000
diff --git a/qa/suites/fs/workload/overrides/frag.yaml b/qa/suites/fs/workload/overrides/frag.yaml
new file mode 120000
index 000000000..5e5cdaed8
--- /dev/null
+++ b/qa/suites/fs/workload/overrides/frag.yaml
@@ -0,0 +1 @@
+.qa/cephfs/overrides/frag.yaml \ No newline at end of file
diff --git a/qa/suites/fs/workload/overrides/ignorelist_health.yaml b/qa/suites/fs/workload/overrides/ignorelist_health.yaml
new file mode 120000
index 000000000..5cb891a95
--- /dev/null
+++ b/qa/suites/fs/workload/overrides/ignorelist_health.yaml
@@ -0,0 +1 @@
+.qa/cephfs/overrides/ignorelist_health.yaml \ No newline at end of file
diff --git a/qa/suites/fs/workload/overrides/ignorelist_wrongly_marked_down.yaml b/qa/suites/fs/workload/overrides/ignorelist_wrongly_marked_down.yaml
new file mode 120000
index 000000000..f317cb714
--- /dev/null
+++ b/qa/suites/fs/workload/overrides/ignorelist_wrongly_marked_down.yaml
@@ -0,0 +1 @@
+.qa/cephfs/overrides/ignorelist_wrongly_marked_down.yaml \ No newline at end of file
diff --git a/qa/suites/fs/workload/overrides/osd-asserts.yaml b/qa/suites/fs/workload/overrides/osd-asserts.yaml
new file mode 120000
index 000000000..f290c749b
--- /dev/null
+++ b/qa/suites/fs/workload/overrides/osd-asserts.yaml
@@ -0,0 +1 @@
+.qa/cephfs/overrides/osd-asserts.yaml \ No newline at end of file
diff --git a/qa/suites/fs/workload/overrides/session_timeout.yaml b/qa/suites/fs/workload/overrides/session_timeout.yaml
new file mode 120000
index 000000000..fce0318c5
--- /dev/null
+++ b/qa/suites/fs/workload/overrides/session_timeout.yaml
@@ -0,0 +1 @@
+.qa/cephfs/overrides/session_timeout.yaml \ No newline at end of file
diff --git a/qa/suites/fs/workload/ranks/.qa b/qa/suites/fs/workload/ranks/.qa
new file mode 120000
index 000000000..a602a0353
--- /dev/null
+++ b/qa/suites/fs/workload/ranks/.qa
@@ -0,0 +1 @@
+../.qa/ \ No newline at end of file
diff --git a/qa/suites/fs/workload/ranks/1.yaml b/qa/suites/fs/workload/ranks/1.yaml
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/qa/suites/fs/workload/ranks/1.yaml
diff --git a/qa/suites/fs/workload/ranks/multi/% b/qa/suites/fs/workload/ranks/multi/%
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/qa/suites/fs/workload/ranks/multi/%
diff --git a/qa/suites/fs/workload/ranks/multi/export-check.yaml b/qa/suites/fs/workload/ranks/multi/export-check.yaml
new file mode 100644
index 000000000..80f210861
--- /dev/null
+++ b/qa/suites/fs/workload/ranks/multi/export-check.yaml
@@ -0,0 +1,6 @@
+overrides:
+ check-counter:
+ counters:
+ mds:
+ - mds.exported
+ - mds.imported
diff --git a/qa/suites/fs/workload/ranks/multi/n/3.yaml b/qa/suites/fs/workload/ranks/multi/n/3.yaml
new file mode 100644
index 000000000..9e6bddce0
--- /dev/null
+++ b/qa/suites/fs/workload/ranks/multi/n/3.yaml
@@ -0,0 +1,4 @@
+overrides:
+ ceph:
+ cephfs:
+ max_mds: 3
diff --git a/qa/suites/fs/workload/ranks/multi/n/5.yaml b/qa/suites/fs/workload/ranks/multi/n/5.yaml
new file mode 100644
index 000000000..2265aa0f2
--- /dev/null
+++ b/qa/suites/fs/workload/ranks/multi/n/5.yaml
@@ -0,0 +1,4 @@
+overrides:
+ ceph:
+ cephfs:
+ max_mds: 5
diff --git a/qa/suites/fs/workload/ranks/multi/replication/always.yaml b/qa/suites/fs/workload/ranks/multi/replication/always.yaml
new file mode 100644
index 000000000..099ced663
--- /dev/null
+++ b/qa/suites/fs/workload/ranks/multi/replication/always.yaml
@@ -0,0 +1,18 @@
+# To exercise lock/witness code paths more regularly, try to get all
+# directories replicated.
+overrides:
+ ceph:
+ conf:
+ mds:
+ mds_bal_replicate_threshold: 1
+# Note: dir_update is only sent by an MDS trying to replicate a dir.
+# dir_update is always sent for root, so the count should be more than 2
+ check-counter:
+ counters:
+ mds:
+ -
+ name: mds_cache.dir_update
+ min: 3
+ -
+ name: mds_cache.dir_update_receipt
+ min: 3
diff --git a/qa/suites/fs/workload/ranks/multi/replication/default.yaml b/qa/suites/fs/workload/ranks/multi/replication/default.yaml
new file mode 100644
index 000000000..272977942
--- /dev/null
+++ b/qa/suites/fs/workload/ranks/multi/replication/default.yaml
@@ -0,0 +1 @@
+# Use default (8000)
diff --git a/qa/suites/fs/workload/standby-replay.yaml b/qa/suites/fs/workload/standby-replay.yaml
new file mode 100644
index 000000000..b47d312bf
--- /dev/null
+++ b/qa/suites/fs/workload/standby-replay.yaml
@@ -0,0 +1,4 @@
+overrides:
+ ceph:
+ cephfs:
+ standby_replay: true
diff --git a/qa/suites/fs/workload/tasks/% b/qa/suites/fs/workload/tasks/%
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/qa/suites/fs/workload/tasks/%
diff --git a/qa/suites/fs/workload/tasks/.qa b/qa/suites/fs/workload/tasks/.qa
new file mode 120000
index 000000000..a602a0353
--- /dev/null
+++ b/qa/suites/fs/workload/tasks/.qa
@@ -0,0 +1 @@
+../.qa/ \ No newline at end of file
diff --git a/qa/suites/fs/workload/tasks/0-subvolume/$ b/qa/suites/fs/workload/tasks/0-subvolume/$
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/qa/suites/fs/workload/tasks/0-subvolume/$
diff --git a/qa/suites/fs/workload/tasks/0-subvolume/.qa b/qa/suites/fs/workload/tasks/0-subvolume/.qa
new file mode 120000
index 000000000..a602a0353
--- /dev/null
+++ b/qa/suites/fs/workload/tasks/0-subvolume/.qa
@@ -0,0 +1 @@
+../.qa/ \ No newline at end of file
diff --git a/qa/suites/fs/workload/tasks/0-subvolume/no-subvolume.yaml b/qa/suites/fs/workload/tasks/0-subvolume/no-subvolume.yaml
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/qa/suites/fs/workload/tasks/0-subvolume/no-subvolume.yaml
diff --git a/qa/suites/fs/workload/tasks/0-subvolume/with-namespace-isolated-and-quota.yaml b/qa/suites/fs/workload/tasks/0-subvolume/with-namespace-isolated-and-quota.yaml
new file mode 100644
index 000000000..7129e54b5
--- /dev/null
+++ b/qa/suites/fs/workload/tasks/0-subvolume/with-namespace-isolated-and-quota.yaml
@@ -0,0 +1,11 @@
+overrides:
+ ceph:
+ subvols:
+ create: 2
+ subvol_options: "--namespace-isolated --size 25000000000"
+ ceph-fuse:
+ client.0:
+ mount_subvol_num: 0
+ kclient:
+ client.0:
+ mount_subvol_num: 1
diff --git a/qa/suites/fs/workload/tasks/0-subvolume/with-namespace-isolated.yaml b/qa/suites/fs/workload/tasks/0-subvolume/with-namespace-isolated.yaml
new file mode 100644
index 000000000..2ac901fef
--- /dev/null
+++ b/qa/suites/fs/workload/tasks/0-subvolume/with-namespace-isolated.yaml
@@ -0,0 +1,11 @@
+overrides:
+ ceph:
+ subvols:
+ create: 2
+ subvol_options: "--namespace-isolated"
+ ceph-fuse:
+ client.0:
+ mount_subvol_num: 0
+ kclient:
+ client.0:
+ mount_subvol_num: 1
diff --git a/qa/suites/fs/workload/tasks/0-subvolume/with-no-extra-options.yaml b/qa/suites/fs/workload/tasks/0-subvolume/with-no-extra-options.yaml
new file mode 100644
index 000000000..40f98c2bc
--- /dev/null
+++ b/qa/suites/fs/workload/tasks/0-subvolume/with-no-extra-options.yaml
@@ -0,0 +1,10 @@
+overrides:
+ ceph:
+ subvols:
+ create: 2
+ ceph-fuse:
+ client.0:
+ mount_subvol_num: 0
+ kclient:
+ client.0:
+ mount_subvol_num: 1
diff --git a/qa/suites/fs/workload/tasks/0-subvolume/with-quota.yaml b/qa/suites/fs/workload/tasks/0-subvolume/with-quota.yaml
new file mode 100644
index 000000000..6cda00d4a
--- /dev/null
+++ b/qa/suites/fs/workload/tasks/0-subvolume/with-quota.yaml
@@ -0,0 +1,11 @@
+overrides:
+ ceph:
+ subvols:
+ create: 2
+ subvol_options: "--size 25000000000"
+ ceph-fuse:
+ client.0:
+ mount_subvol_num: 0
+ kclient:
+ client.0:
+ mount_subvol_num: 1
diff --git a/qa/suites/fs/workload/tasks/1-check-counter.yaml b/qa/suites/fs/workload/tasks/1-check-counter.yaml
new file mode 100644
index 000000000..6339ddb7c
--- /dev/null
+++ b/qa/suites/fs/workload/tasks/1-check-counter.yaml
@@ -0,0 +1,2 @@
+tasks:
+- check-counter: {}
diff --git a/qa/suites/fs/workload/tasks/2-scrub/.qa b/qa/suites/fs/workload/tasks/2-scrub/.qa
new file mode 120000
index 000000000..a602a0353
--- /dev/null
+++ b/qa/suites/fs/workload/tasks/2-scrub/.qa
@@ -0,0 +1 @@
+../.qa/ \ No newline at end of file
diff --git a/qa/suites/fs/workload/tasks/2-scrub/no.yaml b/qa/suites/fs/workload/tasks/2-scrub/no.yaml
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/qa/suites/fs/workload/tasks/2-scrub/no.yaml
diff --git a/qa/suites/fs/workload/tasks/2-scrub/yes.yaml b/qa/suites/fs/workload/tasks/2-scrub/yes.yaml
new file mode 100644
index 000000000..52978a2bb
--- /dev/null
+++ b/qa/suites/fs/workload/tasks/2-scrub/yes.yaml
@@ -0,0 +1,10 @@
+overrides:
+ ceph:
+ log-ignorelist:
+ - slow metadata IO
+ - SLOW_OPS
+ - slow request
+tasks:
+- fwd_scrub:
+ scrub_timeout: 900
+ sleep_between_iterations: 1
diff --git a/qa/suites/fs/workload/tasks/3-snaps/.qa b/qa/suites/fs/workload/tasks/3-snaps/.qa
new file mode 120000
index 000000000..a602a0353
--- /dev/null
+++ b/qa/suites/fs/workload/tasks/3-snaps/.qa
@@ -0,0 +1 @@
+../.qa/ \ No newline at end of file
diff --git a/qa/suites/fs/workload/tasks/3-snaps/no.yaml b/qa/suites/fs/workload/tasks/3-snaps/no.yaml
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/qa/suites/fs/workload/tasks/3-snaps/no.yaml
diff --git a/qa/suites/fs/workload/tasks/3-snaps/yes.yaml b/qa/suites/fs/workload/tasks/3-snaps/yes.yaml
new file mode 100644
index 000000000..598f7e215
--- /dev/null
+++ b/qa/suites/fs/workload/tasks/3-snaps/yes.yaml
@@ -0,0 +1,30 @@
+overrides:
+ ceph:
+ conf:
+ mgr:
+ debug cephsqlite: 20
+ check-counter:
+ counters:
+ mds:
+ - mds.root_rsnaps
+ - mds_server.req_mksnap_latency.avgcount
+ - mds_server.req_rmsnap_latency.avgcount
+tasks:
+- exec:
+ mon.a:
+ - ceph mgr module enable snap_schedule
+ - ceph config set mgr mgr/snap_schedule/allow_m_granularity true
+ - ceph config set mgr mgr/snap_schedule/dump_on_update true
+ - ceph fs snap-schedule add --fs=cephfs --path=/ --snap_schedule=1M
+ - ceph fs snap-schedule retention add --fs=cephfs --path=/ --retention-spec-or-period=6M3h
+ - ceph fs snap-schedule status --fs=cephfs --path=/
+ - ceph fs snap-schedule list --fs=cephfs --path=/ --recursive=true
+ - date +%s > START_TIME
+- full_sequential_finally:
+ - exec:
+ mon.a:
+ # Ensure that we have some snaps which get deleted (so check-counters does not fail)
+ - date +%s > END_TIME
+ - START_TIME=$(cat START_TIME); END_TIME=$(cat END_TIME); DIFF_TIME=$((600-(END_TIME-START_TIME))); if [ "$DIFF_TIME" -gt 0 ]; then sleep "$DIFF_TIME"; fi
+ - ceph fs snap-schedule status --fs=cephfs --path=/
+ - ceph fs snap-schedule list --fs=cephfs --path=/ --recursive=true
diff --git a/qa/suites/fs/workload/tasks/4-flush/.qa b/qa/suites/fs/workload/tasks/4-flush/.qa
new file mode 120000
index 000000000..a602a0353
--- /dev/null
+++ b/qa/suites/fs/workload/tasks/4-flush/.qa
@@ -0,0 +1 @@
+../.qa/ \ No newline at end of file
diff --git a/qa/suites/fs/workload/tasks/4-flush/no.yaml b/qa/suites/fs/workload/tasks/4-flush/no.yaml
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/qa/suites/fs/workload/tasks/4-flush/no.yaml
diff --git a/qa/suites/fs/workload/tasks/4-flush/yes.yaml b/qa/suites/fs/workload/tasks/4-flush/yes.yaml
new file mode 100644
index 000000000..4a3f7a11c
--- /dev/null
+++ b/qa/suites/fs/workload/tasks/4-flush/yes.yaml
@@ -0,0 +1,4 @@
+tasks:
+- background_exec:
+ mon.a:
+ - while sleep 13; do ceph tell mds.cephfs:0 flush journal; done
diff --git a/qa/suites/fs/workload/tasks/5-workunit/.qa b/qa/suites/fs/workload/tasks/5-workunit/.qa
new file mode 120000
index 000000000..a602a0353
--- /dev/null
+++ b/qa/suites/fs/workload/tasks/5-workunit/.qa
@@ -0,0 +1 @@
+../.qa/ \ No newline at end of file
diff --git a/qa/suites/fs/workload/tasks/5-workunit/direct_io.yaml b/qa/suites/fs/workload/tasks/5-workunit/direct_io.yaml
new file mode 100644
index 000000000..6c6ea1422
--- /dev/null
+++ b/qa/suites/fs/workload/tasks/5-workunit/direct_io.yaml
@@ -0,0 +1,9 @@
+overrides:
+ check-counter:
+ dry_run: true
+tasks:
+- workunit:
+ clients:
+ all:
+ - direct_io
+
diff --git a/qa/suites/fs/workload/tasks/5-workunit/fs/.qa b/qa/suites/fs/workload/tasks/5-workunit/fs/.qa
new file mode 120000
index 000000000..a602a0353
--- /dev/null
+++ b/qa/suites/fs/workload/tasks/5-workunit/fs/.qa
@@ -0,0 +1 @@
+../.qa/ \ No newline at end of file
diff --git a/qa/suites/fs/workload/tasks/5-workunit/fs/misc.yaml b/qa/suites/fs/workload/tasks/5-workunit/fs/misc.yaml
new file mode 100644
index 000000000..4a9d0b4c5
--- /dev/null
+++ b/qa/suites/fs/workload/tasks/5-workunit/fs/misc.yaml
@@ -0,0 +1,10 @@
+overrides:
+ check-counter:
+ counters:
+ mds:
+ - "mds.dir_split"
+tasks:
+- workunit:
+ clients:
+ all:
+ - fs/misc
diff --git a/qa/suites/fs/workload/tasks/5-workunit/fs/norstats.yaml b/qa/suites/fs/workload/tasks/5-workunit/fs/norstats.yaml
new file mode 100644
index 000000000..d48df5471
--- /dev/null
+++ b/qa/suites/fs/workload/tasks/5-workunit/fs/norstats.yaml
@@ -0,0 +1,17 @@
+overrides:
+ check-counter:
+ counters:
+ mds:
+ - "mds.dir_split"
+tasks:
+- workunit:
+ clients:
+ all:
+ - fs/norstats
+overrides:
+ kclient:
+ rbytes: false
+ ceph:
+ conf:
+ client:
+ client dirsize rbytes: false
diff --git a/qa/suites/fs/workload/tasks/5-workunit/fs/test_o_trunc.yaml b/qa/suites/fs/workload/tasks/5-workunit/fs/test_o_trunc.yaml
new file mode 100644
index 000000000..7b2b7c536
--- /dev/null
+++ b/qa/suites/fs/workload/tasks/5-workunit/fs/test_o_trunc.yaml
@@ -0,0 +1,8 @@
+overrides:
+ check-counter:
+ dry_run: true
+tasks:
+- workunit:
+ clients:
+ all:
+ - fs/test_o_trunc.sh
diff --git a/qa/suites/fs/workload/tasks/5-workunit/kernel_untar_build.yaml b/qa/suites/fs/workload/tasks/5-workunit/kernel_untar_build.yaml
new file mode 100644
index 000000000..602d34162
--- /dev/null
+++ b/qa/suites/fs/workload/tasks/5-workunit/kernel_untar_build.yaml
@@ -0,0 +1,10 @@
+overrides:
+ check-counter:
+ counters:
+ mds:
+ - "mds.dir_split"
+tasks:
+- workunit:
+ clients:
+ all:
+ - kernel_untar_build.sh
diff --git a/qa/suites/fs/workload/tasks/5-workunit/postgres.yaml b/qa/suites/fs/workload/tasks/5-workunit/postgres.yaml
new file mode 100644
index 000000000..7e71dbc88
--- /dev/null
+++ b/qa/suites/fs/workload/tasks/5-workunit/postgres.yaml
@@ -0,0 +1,36 @@
+# I would expect setting the context on the postgresql database directories
+# would correctly trickle down to the files created by the postgresql daemon,
+# but this does not appear to work. I would still see denials like:
+
+# type=AVC msg=audit(1655861665.521:21354): avc: denied { create } for pid=131994 comm="postmaster" name="replorigin_checkpoint.tmp" scontext=system_u:system_r:postgresql_t:s0 tcontext=system_u:object_r:cephfs_t:s0 tclass=file permissive=1'
+
+# Instead, we'll just set the context for the mount and be done with it. I've
+# left in the context setting for the directories below.
+
+overrides:
+ ceph-fuse:
+ client.0:
+ mountpoint: /tmp/cephfs
+ mntopts: ["context=system_u:object_r:postgresql_db_t:s0"]
+ kclient:
+ client.0:
+ mountpoint: /tmp/cephfs
+ mntopts: ["context=system_u:object_r:postgresql_db_t:s0"]
+tasks:
+- exec:
+ client.0:
+ - sudo ls -l /tmp/cephfs/ && sudo df -h /tmp/cephfs/
+ - sudo mkdir -m 755 --context=system_u:system_r:postgresql_t:s0 /tmp/cephfs/postgres && sudo chown postgres:postgres /tmp/cephfs/postgres
+ - sudo -u postgres -- mkdir -m 700 --context=system_u:system_r:postgresql_t:s0 /tmp/cephfs/postgres/data
+ - sudo semanage fcontext -a -t postgresql_db_t "/tmp/cephfs/postgres(/.*)?"
+ - sudo grep -i postgresql /etc/selinux/targeted/contexts/files/file_contexts.local
+ - sudo restorecon -R -v /tmp/cephfs/postgres
+ - sudo ls -lZaR /tmp/cephfs/postgres/
+ - sudo mkdir -p /etc/systemd/system/postgresql.service.d/ && printf '[Service]\nEnvironment=PGDATA=/tmp/cephfs/postgres/data\nEnvironment=PGLOG=/tmp/cephfs/postgres/pgstartup.log\n' | sudo tee /etc/systemd/system/postgresql.service.d/env.conf
+ - sudo -u postgres -- postgresql-setup --initdb
+ - sudo ls -lZaR /tmp/cephfs/postgres/
+ - sudo systemctl start postgresql
+ - sudo -u postgres -- pgbench -s 32 -i
+ - sudo -u postgres -- pgbench -c 100 -j 4 --progress=5 --time=900
+ - sudo systemctl stop postgresql
+ - sudo ls -lZaR /tmp/cephfs/postgres/
diff --git a/qa/suites/fs/workload/tasks/5-workunit/suites/.qa b/qa/suites/fs/workload/tasks/5-workunit/suites/.qa
new file mode 120000
index 000000000..a602a0353
--- /dev/null
+++ b/qa/suites/fs/workload/tasks/5-workunit/suites/.qa
@@ -0,0 +1 @@
+../.qa/ \ No newline at end of file
diff --git a/qa/suites/fs/workload/tasks/5-workunit/suites/blogbench.yaml b/qa/suites/fs/workload/tasks/5-workunit/suites/blogbench.yaml
new file mode 100644
index 000000000..4c4bf2f9e
--- /dev/null
+++ b/qa/suites/fs/workload/tasks/5-workunit/suites/blogbench.yaml
@@ -0,0 +1,10 @@
+overrides:
+ check-counter:
+ counters:
+ mds:
+ - "mds.dir_split"
+tasks:
+- workunit:
+ clients:
+ all:
+ - suites/blogbench.sh
diff --git a/qa/suites/fs/workload/tasks/5-workunit/suites/dbench.yaml b/qa/suites/fs/workload/tasks/5-workunit/suites/dbench.yaml
new file mode 100644
index 000000000..41b2bc8ed
--- /dev/null
+++ b/qa/suites/fs/workload/tasks/5-workunit/suites/dbench.yaml
@@ -0,0 +1,5 @@
+tasks:
+- workunit:
+ clients:
+ all:
+ - suites/dbench.sh
diff --git a/qa/suites/fs/workload/tasks/5-workunit/suites/ffsb.yaml b/qa/suites/fs/workload/tasks/5-workunit/suites/ffsb.yaml
new file mode 100644
index 000000000..9bc925ab0
--- /dev/null
+++ b/qa/suites/fs/workload/tasks/5-workunit/suites/ffsb.yaml
@@ -0,0 +1,18 @@
+overrides:
+ ceph:
+ log-ignorelist:
+ - SLOW_OPS
+ - slow request
+ conf:
+ osd:
+ filestore flush min: 0
+ osd heartbeat grace: 60
+ check-counter:
+ counters:
+ mds:
+ - "mds.dir_split"
+tasks:
+- workunit:
+ clients:
+ all:
+ - suites/ffsb.sh
diff --git a/qa/suites/fs/workload/tasks/5-workunit/suites/fsstress.yaml b/qa/suites/fs/workload/tasks/5-workunit/suites/fsstress.yaml
new file mode 100644
index 000000000..bae220292
--- /dev/null
+++ b/qa/suites/fs/workload/tasks/5-workunit/suites/fsstress.yaml
@@ -0,0 +1,6 @@
+tasks:
+- workunit:
+ timeout: 6h
+ clients:
+ all:
+ - suites/fsstress.sh
diff --git a/qa/suites/fs/workload/tasks/5-workunit/suites/fsx.yaml b/qa/suites/fs/workload/tasks/5-workunit/suites/fsx.yaml
new file mode 100644
index 000000000..12d456cf4
--- /dev/null
+++ b/qa/suites/fs/workload/tasks/5-workunit/suites/fsx.yaml
@@ -0,0 +1,10 @@
+overrides:
+ check-counter:
+ counters:
+ mds:
+ - "mds.dir_split"
+tasks:
+- workunit:
+ clients:
+ all:
+ - suites/fsx.sh
diff --git a/qa/suites/fs/workload/tasks/5-workunit/suites/fsync-tester.yaml b/qa/suites/fs/workload/tasks/5-workunit/suites/fsync-tester.yaml
new file mode 100644
index 000000000..9aaf6d0c4
--- /dev/null
+++ b/qa/suites/fs/workload/tasks/5-workunit/suites/fsync-tester.yaml
@@ -0,0 +1,8 @@
+overrides:
+ check-counter:
+ dry_run: true
+tasks:
+- workunit:
+ clients:
+ all:
+ - suites/fsync-tester.sh
diff --git a/qa/suites/fs/workload/tasks/5-workunit/suites/iogen.yaml b/qa/suites/fs/workload/tasks/5-workunit/suites/iogen.yaml
new file mode 100644
index 000000000..b8beb9e97
--- /dev/null
+++ b/qa/suites/fs/workload/tasks/5-workunit/suites/iogen.yaml
@@ -0,0 +1,8 @@
+overrides:
+ check-counter:
+ dry_run: true
+tasks:
+- workunit:
+ clients:
+ all:
+ - suites/iogen.sh
diff --git a/qa/suites/fs/workload/tasks/5-workunit/suites/iozone.yaml b/qa/suites/fs/workload/tasks/5-workunit/suites/iozone.yaml
new file mode 100644
index 000000000..bf5fd25b3
--- /dev/null
+++ b/qa/suites/fs/workload/tasks/5-workunit/suites/iozone.yaml
@@ -0,0 +1,8 @@
+overrides:
+ check-counter:
+ dry_run: true
+tasks:
+- workunit:
+ clients:
+ all:
+ - suites/iozone.sh
diff --git a/qa/suites/fs/workload/tasks/5-workunit/suites/pjd.yaml b/qa/suites/fs/workload/tasks/5-workunit/suites/pjd.yaml
new file mode 100644
index 000000000..37e315f7e
--- /dev/null
+++ b/qa/suites/fs/workload/tasks/5-workunit/suites/pjd.yaml
@@ -0,0 +1,12 @@
+overrides:
+ ceph:
+ conf:
+ client:
+ fuse set user groups: true
+ fuse default permissions: false
+tasks:
+- workunit:
+ timeout: 6h
+ clients:
+ all:
+ - suites/pjd.sh