sts-libs 2.4.0__tar.gz → 2.4.2__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {sts_libs-2.4.0 → sts_libs-2.4.2}/PKG-INFO +1 -1
- {sts_libs-2.4.0 → sts_libs-2.4.2}/pyproject.toml +1 -1
- sts_libs-2.4.2/sts_libs/src/sts/fixtures/iscsi_fixtures.py +174 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/sts_libs/src/sts/fixtures/vdo_fixtures.py +42 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/sts_libs/src/sts/loop.py +4 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/sts_libs/src/sts/pr.py +10 -5
- {sts_libs-2.4.0 → sts_libs-2.4.2}/sts_libs/src/sts/sg3_utils.py +5 -1
- {sts_libs-2.4.0 → sts_libs-2.4.2}/sts_libs/src/sts/target.py +17 -1
- sts_libs-2.4.2/sts_libs/tests/fixtures/test_iscsi_fixtures.py +69 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/sts_libs/tests/test_loop.py +10 -4
- {sts_libs-2.4.0 → sts_libs-2.4.2}/sts_libs/tests/test_pr.py +5 -2
- {sts_libs-2.4.0 → sts_libs-2.4.2}/sts_libs/tests/test_sg3_utils.py +16 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/sts_libs/tests/test_target.py +31 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/block/cpu_hotplug/test_cpu_offline_io.py +5 -3
- {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/block/io_scheduler/test_elevator_switch_race.py +11 -2
- {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/block/md/test_lvm_raid.py +6 -6
- {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/iscsi/libiscsi/local/libiscsi-local.py +29 -3
- {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/iscsi/many-luns/many-luns-local.py +3 -10
- {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/iscsi/parameters/iscsi_params.py +22 -6
- {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/target/core/global_config/main.fmf +1 -1
- {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/target/full/persistent-reservation/test_iscsi_pr.py +3 -7
- {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/vdo/data/vdo_xfs_stress.py +16 -12
- {sts_libs-2.4.0 → sts_libs-2.4.2}/uv.lock +1 -1
- sts_libs-2.4.0/sts_libs/src/sts/fixtures/iscsi_fixtures.py +0 -126
- {sts_libs-2.4.0 → sts_libs-2.4.2}/.fmf/version +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/.gitignore +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/.gitlab-ci.yml +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/.markdownlint.json +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/.packit.yaml +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/.pre-commit-config.yaml +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/.scripts/sync_sts.py +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/AGENTS.md +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/CLAUDE.md +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/LICENSE +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/README.md +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/dev-container/Containerfile +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/dev-container/README.md +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/dev-container/build.sh +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/dev-container/ci.Containerfile +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/dev-container/run.sh +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/docs/contributing/docstrings.md +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/docs/contributing/image-mode-testing.md +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/docs/contributing/writing-tests.md +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/docs/contributing.md +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/docs/index.md +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/docs/sts-libs/fixtures.md +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/docs/sts-libs/index.md +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/docs/sts-libs/libraries/base.md +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/docs/sts-libs/libraries/blockdevice.md +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/docs/sts-libs/libraries/boom.md +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/docs/sts-libs/libraries/devicemapper.md +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/docs/sts-libs/libraries/dmpd.md +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/docs/sts-libs/libraries/fc.md +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/docs/sts-libs/libraries/fio.md +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/docs/sts-libs/libraries/iscsi.md +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/docs/sts-libs/libraries/isns.md +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/docs/sts-libs/libraries/loop.md +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/docs/sts-libs/libraries/lvm.md +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/docs/sts-libs/libraries/multipath.md +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/docs/sts-libs/libraries/network.md +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/docs/sts-libs/libraries/nvme.md +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/docs/sts-libs/libraries/pr.md +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/docs/sts-libs/libraries/qemu.md +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/docs/sts-libs/libraries/rdma.md +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/docs/sts-libs/libraries/scsi.md +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/docs/sts-libs/libraries/scsi_debug.md +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/docs/sts-libs/libraries/sg3_utils.md +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/docs/sts-libs/libraries/snapm.md +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/docs/sts-libs/libraries/stratis.md +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/docs/sts-libs/libraries/target.md +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/docs/sts-libs/libraries/udevadm.md +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/docs/sts-libs/libraries/vdo.md +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/docs/sts-libs/utils.md +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/mkdocs.yml +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/plans/ahci/main.fmf +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/plans/block/virtual-hw.fmf +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/plans/block/virtual.fmf +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/plans/boom/tier1.fmf +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/plans/boom/tier2-st76.fmf +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/plans/boom/tier2.fmf +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/plans/device-mapper/tier1.fmf +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/plans/dmpd/tier1.fmf +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/plans/fc/full_lpfc.fmf +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/plans/fc/full_qla2xxx.fmf +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/plans/fc/main.fmf +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/plans/image_mode/device-mapper.fmf +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/plans/image_mode/dmpd.fmf +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/plans/image_mode/iscsi.fmf +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/plans/image_mode/lvm.fmf +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/plans/image_mode/main.fmf +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/plans/image_mode/multipath.fmf +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/plans/image_mode/stratis.fmf +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/plans/image_mode/udisks2.fmf +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/plans/image_mode/vdo.fmf +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/plans/iscsi/libiscsi/main.fmf +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/plans/iscsi/local.fmf +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/plans/iscsi/offload/be2iscsi.fmf +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/plans/iscsi/offload/bnx2i.fmf +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/plans/iscsi/offload/cxgb4i.fmf +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/plans/iscsi/offload/intel.fmf +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/plans/iscsi/offload/main.fmf +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/plans/iscsi/offload/qedi.fmf +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/plans/iscsi/tier0.fmf +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/plans/isns-utils/full.fmf +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/plans/lio/core.fmf +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/plans/lio/full.fmf +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/plans/lsscsi/tier1.fmf +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/plans/lsscsi/tier2.fmf +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/plans/lvm/tier1.fmf +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/plans/main.fmf +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/plans/multipath/tier1.fmf +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/plans/rdma/main.fmf +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/plans/rdma/regression.fmf +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/plans/rdma/test_case_vars.yaml +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/plans/scsi/main.fmf +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/plans/sg3_utils/tier1.fmf +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/plans/snapm/tier1.fmf +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/plans/snapm/tier2-st76.fmf +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/plans/snapm/tier2.fmf +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/plans/stratis/multihost/main.fmf +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/plans/stratis/multihost/nfs.fmf +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/plans/stratis/tier1.fmf +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/plans/stratis/tier2-fstab-stqe.fmf +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/plans/stratis/tier2-fstab.fmf +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/plans/stratis/tier2-linear.fmf +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/plans/stratis/tier2-mdraid1.fmf +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/plans/stratis/tier2-raid1.fmf +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/plans/sts-ci/ci.fmf +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/plans/udisks2/tier1.fmf +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/plans/udisks2/tier2.fmf +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/plans/udisks2/tier3.fmf +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/plans/vdo/multihost/main.fmf +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/plans/vdo/multihost/multihost-aarch64.fmf +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/plans/vdo/multihost/multihost-ppc64le.fmf +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/plans/vdo/multihost/multihost-s390x.fmf +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/plans/vdo/multihost/multihost-stqe.fmf +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/plans/vdo/tier1.fmf +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/plans/vdo/tier2-high-memory.fmf +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/plans/vdo/vdo_smoke.fmf +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/python-sts-libs.spec +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/renovate.json +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/sts_libs/README.md +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/sts_libs/__init__.py +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/sts_libs/src/__init__.py +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/sts_libs/src/sts/__init__.py +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/sts_libs/src/sts/ahci.py +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/sts_libs/src/sts/base.py +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/sts_libs/src/sts/blockdevice.py +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/sts_libs/src/sts/boom/__init__.py +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/sts_libs/src/sts/boom/base.py +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/sts_libs/src/sts/boom/entry.py +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/sts_libs/src/sts/boom/errors.py +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/sts_libs/src/sts/boom/host.py +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/sts_libs/src/sts/boom/profile.py +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/sts_libs/src/sts/dm/__init__.py +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/sts_libs/src/sts/dm/base.py +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/sts_libs/src/sts/dm/cache.py +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/sts_libs/src/sts/dm/delay.py +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/sts_libs/src/sts/dm/error.py +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/sts_libs/src/sts/dm/errors.py +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/sts_libs/src/sts/dm/flakey.py +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/sts_libs/src/sts/dm/linear.py +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/sts_libs/src/sts/dm/thin.py +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/sts_libs/src/sts/dm/vdo.py +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/sts_libs/src/sts/dm/zero.py +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/sts_libs/src/sts/dmpd.py +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/sts_libs/src/sts/fc.py +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/sts_libs/src/sts/fio/__init__.py +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/sts_libs/src/sts/fio/errors.py +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/sts_libs/src/sts/fio/fio.py +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/sts_libs/src/sts/fio/parameters.py +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/sts_libs/src/sts/fixtures/__init__.py +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/sts_libs/src/sts/fixtures/ahci_fixtures.py +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/sts_libs/src/sts/fixtures/block_fixtures.py +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/sts_libs/src/sts/fixtures/boom_fixtures.py +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/sts_libs/src/sts/fixtures/common_fixtures.py +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/sts_libs/src/sts/fixtures/dm_fixtures.py +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/sts_libs/src/sts/fixtures/dmpd_fixtures.py +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/sts_libs/src/sts/fixtures/fc_fixtures.py +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/sts_libs/src/sts/fixtures/lvm_fixtures.py +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/sts_libs/src/sts/fixtures/module_fixtures.py +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/sts_libs/src/sts/fixtures/multipath_fixtures.py +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/sts_libs/src/sts/fixtures/nvme_fixtures.py +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/sts_libs/src/sts/fixtures/rdma_fixtures.py +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/sts_libs/src/sts/fixtures/service_fixtures.py +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/sts_libs/src/sts/fixtures/sg3_utils_fixtures.py +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/sts_libs/src/sts/fixtures/snapm_fixtures.py +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/sts_libs/src/sts/fixtures/stratis_fixtures.py +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/sts_libs/src/sts/fixtures/target_fixtures.py +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/sts_libs/src/sts/fixtures/udisks2_fixtures.py +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/sts_libs/src/sts/hdparm.py +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/sts_libs/src/sts/iscsi/__init__.py +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/sts_libs/src/sts/iscsi/config.py +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/sts_libs/src/sts/iscsi/device.py +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/sts_libs/src/sts/iscsi/iscsiadm.py +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/sts_libs/src/sts/iscsi/node.py +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/sts_libs/src/sts/iscsi/parameters.py +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/sts_libs/src/sts/iscsi/session.py +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/sts_libs/src/sts/isns.py +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/sts_libs/src/sts/lvm/__init__.py +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/sts_libs/src/sts/lvm/base.py +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/sts_libs/src/sts/lvm/errors.py +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/sts_libs/src/sts/lvm/logical_volume.py +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/sts_libs/src/sts/lvm/lvconf.py +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/sts_libs/src/sts/lvm/options.py +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/sts_libs/src/sts/lvm/physical_volume.py +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/sts_libs/src/sts/lvm/reports.py +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/sts_libs/src/sts/lvm/thin_pool.py +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/sts_libs/src/sts/lvm/volume_group.py +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/sts_libs/src/sts/marks.py +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/sts_libs/src/sts/md.py +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/sts_libs/src/sts/models.py +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/sts_libs/src/sts/multipath.py +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/sts_libs/src/sts/nbd.py +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/sts_libs/src/sts/network/__init__.py +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/sts_libs/src/sts/network/errors.py +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/sts_libs/src/sts/network/interface.py +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/sts_libs/src/sts/network/nm.py +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/sts_libs/src/sts/null_blk.py +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/sts_libs/src/sts/nvme.py +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/sts_libs/src/sts/py.typed +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/sts_libs/src/sts/qemu.py +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/sts_libs/src/sts/rdma.py +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/sts_libs/src/sts/scsi.py +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/sts_libs/src/sts/scsi_debug.py +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/sts_libs/src/sts/smartctl.py +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/sts_libs/src/sts/snapm/__init__.py +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/sts_libs/src/sts/snapm/base.py +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/sts_libs/src/sts/snapm/errors.py +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/sts_libs/src/sts/snapm/plugin.py +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/sts_libs/src/sts/snapm/schedule.py +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/sts_libs/src/sts/snapm/snapset.py +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/sts_libs/src/sts/snapm/snapshot.py +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/sts_libs/src/sts/stratis/__init__.py +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/sts_libs/src/sts/stratis/base.py +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/sts_libs/src/sts/stratis/errors.py +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/sts_libs/src/sts/stratis/filesystem.py +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/sts_libs/src/sts/stratis/pool.py +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/sts_libs/src/sts/udevadm.py +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/sts_libs/src/sts/udisks2.py +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/sts_libs/src/sts/utils/__init__.py +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/sts_libs/src/sts/utils/cli.py +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/sts_libs/src/sts/utils/cmdline.py +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/sts_libs/src/sts/utils/config.py +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/sts_libs/src/sts/utils/errors.py +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/sts_libs/src/sts/utils/files.py +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/sts_libs/src/sts/utils/fmf_markers.py +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/sts_libs/src/sts/utils/fstab.py +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/sts_libs/src/sts/utils/modules.py +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/sts_libs/src/sts/utils/nfs.py +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/sts_libs/src/sts/utils/packages.py +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/sts_libs/src/sts/utils/processes.py +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/sts_libs/src/sts/utils/size.py +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/sts_libs/src/sts/utils/string_extras.py +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/sts_libs/src/sts/utils/sync.py +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/sts_libs/src/sts/utils/syscheck.py +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/sts_libs/src/sts/utils/system.py +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/sts_libs/src/sts/utils/teststate.py +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/sts_libs/src/sts/utils/tmt_pytest.py +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/sts_libs/src/sts/utils/version.py +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/sts_libs/src/sts/vdo.py +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/sts_libs/src/sts/zram.py +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/sts_libs/tests/__init__.py +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/sts_libs/tests/boom/__init__.py +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/sts_libs/tests/boom/test_base.py +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/sts_libs/tests/boom/test_entry.py +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/sts_libs/tests/boom/test_host.py +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/sts_libs/tests/boom/test_profile.py +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/sts_libs/tests/conftest.py +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/sts_libs/tests/data/lvs_report_multi.json +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/sts_libs/tests/data/lvs_report_single.json +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/sts_libs/tests/data/multipathd_show_map.json +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/sts_libs/tests/data/nvme_list.json +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/sts_libs/tests/dm/__init__.py +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/sts_libs/tests/dm/test_base.py +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/sts_libs/tests/dm/test_cache_vdo.py +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/sts_libs/tests/dm/test_delay_flakey.py +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/sts_libs/tests/dm/test_linear.py +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/sts_libs/tests/dm/test_thin.py +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/sts_libs/tests/fio/__init__.py +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/sts_libs/tests/fio/test_fio.py +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/sts_libs/tests/fio/test_parameters.py +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/sts_libs/tests/fixtures/__init__.py +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/sts_libs/tests/fixtures/test_module_fixtures.py +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/sts_libs/tests/fixtures/test_multipath_fixtures.py +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/sts_libs/tests/fixtures/test_service_fixtures.py +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/sts_libs/tests/helpers/__init__.py +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/sts_libs/tests/helpers/test_boom_boot.py +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/sts_libs/tests/helpers/test_root_lvm.py +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/sts_libs/tests/helpers/test_snapm_boot.py +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/sts_libs/tests/helpers/test_tmt_reboot.py +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/sts_libs/tests/iscsi/__init__.py +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/sts_libs/tests/iscsi/conftest.py +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/sts_libs/tests/iscsi/test_config.py +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/sts_libs/tests/iscsi/test_device.py +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/sts_libs/tests/iscsi/test_iscsiadm.py +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/sts_libs/tests/iscsi/test_parameters.py +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/sts_libs/tests/iscsi/test_session.py +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/sts_libs/tests/lvm/__init__.py +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/sts_libs/tests/lvm/test_base.py +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/sts_libs/tests/lvm/test_logical_volume.py +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/sts_libs/tests/lvm/test_lvconf.py +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/sts_libs/tests/lvm/test_options.py +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/sts_libs/tests/lvm/test_physical_volume.py +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/sts_libs/tests/lvm/test_reports.py +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/sts_libs/tests/lvm/test_thin_pool.py +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/sts_libs/tests/lvm/test_volume_group.py +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/sts_libs/tests/network/__init__.py +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/sts_libs/tests/network/test_interface.py +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/sts_libs/tests/network/test_nm.py +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/sts_libs/tests/snapm/__init__.py +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/sts_libs/tests/snapm/test_base.py +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/sts_libs/tests/snapm/test_plugin.py +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/sts_libs/tests/snapm/test_schedule.py +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/sts_libs/tests/snapm/test_snapset.py +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/sts_libs/tests/snapm/test_snapshot.py +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/sts_libs/tests/stratis/__init__.py +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/sts_libs/tests/stratis/test_base.py +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/sts_libs/tests/stratis/test_filesystem.py +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/sts_libs/tests/stratis/test_pool.py +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/sts_libs/tests/test_ahci.py +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/sts_libs/tests/test_base.py +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/sts_libs/tests/test_block_fixtures.py +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/sts_libs/tests/test_blockdevice.py +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/sts_libs/tests/test_cmdline.py +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/sts_libs/tests/test_fc.py +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/sts_libs/tests/test_hdparm.py +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/sts_libs/tests/test_marks.py +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/sts_libs/tests/test_md.py +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/sts_libs/tests/test_models.py +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/sts_libs/tests/test_module_fixtures.py +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/sts_libs/tests/test_multipath.py +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/sts_libs/tests/test_multipath_report.py +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/sts_libs/tests/test_nbd.py +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/sts_libs/tests/test_null_blk.py +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/sts_libs/tests/test_nvme.py +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/sts_libs/tests/test_packages.py +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/sts_libs/tests/test_rdma.py +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/sts_libs/tests/test_scsi.py +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/sts_libs/tests/test_scsi_debug.py +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/sts_libs/tests/test_smartctl.py +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/sts_libs/tests/test_string_extras.py +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/sts_libs/tests/test_syscheck.py +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/sts_libs/tests/test_system.py +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/sts_libs/tests/test_udisks2.py +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/sts_libs/tests/test_vdo.py +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/sts_libs/tests/test_version.py +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/sts_libs/tests/test_zram.py +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/sts_libs/tests/utils/__init__.py +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/sts_libs/tests/utils/test_cli.py +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/sts_libs/tests/utils/test_files.py +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/sts_libs/tests/utils/test_fmf_markers.py +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/sts_libs/tests/utils/test_fstab.py +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/sts_libs/tests/utils/test_modules.py +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/sts_libs/tests/utils/test_nfs.py +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/sts_libs/tests/utils/test_processes.py +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/sts_libs/tests/utils/test_size.py +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/sts_libs/tests/utils/test_sync.py +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/sts_libs/tests/utils/test_teststate.py +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/sts_libs/tests/utils/test_tmt_pytest.py +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/ahci/conftest.py +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/ahci/main.fmf +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/ahci/test_benchmarks.py +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/ahci/test_detection.py +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/ahci/test_error_recovery.py +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/ahci/test_ncq.py +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/ahci/test_sanity.py +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/block/cgroup/main.fmf +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/block/cgroup/test_blkio_throttle.py +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/block/conftest.py +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/block/cpu_hotplug/main.fmf +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/block/identity/main.fmf +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/block/identity/test_diskstats.py +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/block/io_scheduler/main.fmf +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/block/io_scheduler/test_scheduler_switch.py +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/block/loop/main.fmf +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/block/loop/test_partition_uevent.py +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/block/main.fmf +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/block/md/conftest.py +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/block/md/main.fmf +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/block/md/test_md_discard.py +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/block/md/test_md_levels.py +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/block/misc/main.fmf +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/block/misc/test_scsi_state_transition.py +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/block/nbd/main.fmf +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/block/nbd/test_nbd_unix_socket.py +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/block/null_blk/main.fmf +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/block/null_blk/test_null_blk_basic.py +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/block/null_blk/test_null_blk_configfs.py +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/block/scsi_debug/main.fmf +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/block/scsi_debug/test_delete_scan.py +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/block/scsi_debug/test_dif_dix_stress.py +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/block/scsi_debug/test_shared_host_tags.py +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/block/scsi_debug/test_unmap.py +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/block/zoned/main.fmf +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/block/zoned/test_zoned_devices.py +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/block/zram/main.fmf +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/block/zram/test_zram_compression.py +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/boom/boom_sanity.fmf +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/boom/boom_sanity.py +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/boom/snapshot_boot.fmf +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/boom/test_boom_snapshot_boot.py +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/boom/upgrade/main.fmf +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/boom/upgrade/test_boom_upgrade_boot.py +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/bootc_additional_packages/Containerfile +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/bootc_additional_packages/Containerfile.iscsi +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/bootc_additional_packages/Containerfile.stratis +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/bootc_additional_packages/Containerfile.udisks2 +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/bootc_additional_packages/common-setup.sh +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/bootc_additional_packages/main.fmf +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/bootc_additional_packages/runtest.sh +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/conftest.py +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/dm/cache/main.fmf +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/dm/cache/test_dm_cache.py +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/dm/delay/main.fmf +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/dm/delay/test_dm_delay.py +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/dm/error/main.fmf +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/dm/error/test_dm_error.py +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/dm/flakey/main.fmf +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/dm/flakey/test_dm_flakey.py +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/dm/linear/main.fmf +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/dm/linear/test_linear_target.py +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/dm/main.fmf +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/dm/thinp/main.fmf +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/dm/thinp/test_dm_thin.py +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/dm/vdo/main.fmf +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/dm/vdo/test_dm_vdo.py +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/dm/zero/main.fmf +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/dm/zero/test_dm_zero.py +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/dmpd/cache/cache_check.fmf +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/dmpd/cache/cache_dump.fmf +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/dmpd/cache/cache_metadata_size.fmf +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/dmpd/cache/cache_repair.fmf +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/dmpd/cache/cache_restore.fmf +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/dmpd/cache/main.fmf +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/dmpd/cache/test_cache_check.py +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/dmpd/cache/test_cache_dump.py +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/dmpd/cache/test_cache_metadata_size.py +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/dmpd/cache/test_cache_repair.py +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/dmpd/cache/test_cache_restore.py +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/dmpd/conftest.py +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/dmpd/thin/conftest.py +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/dmpd/thin/main.fmf +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/dmpd/thin/test_thin_check.py +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/dmpd/thin/test_thin_delta.py +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/dmpd/thin/test_thin_dump.py +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/dmpd/thin/test_thin_ls.py +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/dmpd/thin/test_thin_metadata_size.py +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/dmpd/thin/test_thin_repair.py +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/dmpd/thin/test_thin_restore.py +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/dmpd/thin/test_thin_trim.py +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/dmpd/thin/thin_check.fmf +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/dmpd/thin/thin_delta.fmf +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/dmpd/thin/thin_ls.fmf +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/dmpd/thin/thin_metadata_size.fmf +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/dmpd/thin/thin_repair.fmf +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/dmpd/thin/thin_restore.fmf +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/dmpd/thin/thin_trim.fmf +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/fc/conftest.py +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/fc/full/online_offline/basic.fmf +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/fc/full/online_offline/main.fmf +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/fc/full/online_offline/online_offline.py +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/fc/full/online_offline/stress.fmf +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/fc/full/rescan_deleted_disk/main.fmf +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/fc/full/rescan_deleted_disk/rescan_deleted_disk.py +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/fc/main.fmf +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/helpers/__init__.py +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/helpers/boom_boot.py +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/helpers/root_lvm.py +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/helpers/snapm_boot.py +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/helpers/stratis_pool.py +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/helpers/tmt_reboot.py +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/helpers/vdo.py +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/iscsi/conftest.py +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/iscsi/fio/conftest.py +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/iscsi/fio/fio_basic.fmf +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/iscsi/fio/fio_multipath_basic.fmf +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/iscsi/fio/fio_multipath_stress.fmf +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/iscsi/fio/fio_stress.fmf +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/iscsi/fio/main.fmf +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/iscsi/fio/test_fio.py +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/iscsi/libiscsi/local/main.fmf +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/iscsi/libiscsi/main.fmf +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/iscsi/login-logout-stress/login-logout-stress.py +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/iscsi/login-logout-stress/main.fmf +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/iscsi/main.fmf +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/iscsi/many-luns/main.fmf +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/iscsi/parameters/main.fmf +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/iscsi/read_debugfs/main.fmf +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/iscsi/read_debugfs/read_debugfs.py +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/lsm/targetd/conftest.py +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/lsm/targetd/main.fmf +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/lsm/targetd/test_targetd.py +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/lsscsi/conftest.py +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/lsscsi/core/main.fmf +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/lsscsi/core/test_lsscsi_basic.py +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/lsscsi/main.fmf +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/lsscsi/nvme_detection/main.fmf +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/lsscsi/nvme_detection/test_nvme_detection.py +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/lvm/conftest.py +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/lvm/thinp/bugs/test_discard_corruption.py +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/lvm/thinp/bugs/test_stripe_blkdiscard.py +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/lvm/thinp/bugs/test_thinpool_error_target_meta.py +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/lvm/thinp/conftest.py +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/lvm/thinp/main.fmf +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/lvm/thinp/test_discard_perf.py +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/lvm/thinp/test_lvchange_thin.py +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/lvm/thinp/test_lvconf_thinp.py +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/lvm/thinp/test_lvconvert_thin_lv.py +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/lvm/thinp/test_lvconvert_thinpool.py +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/lvm/thinp/test_lvcreate_linear.py +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/lvm/thinp/test_lvcreate_mirror.py +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/lvm/thinp/test_lvcreate_poolmetadataspare.py +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/lvm/thinp/test_lvcreate_stripe.py +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/lvm/thinp/test_lvextend.py +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/lvm/thinp/test_lvm_thinp_misc.py +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/lvm/thinp/test_lvm_thinp_modules.py +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/lvm/thinp/test_lvreduce_thinp.py +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/lvm/thinp/test_lvremove_thinp.py +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/lvm/thinp/test_lvrename_thinp.py +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/lvm/thinp/test_lvresize_thinp.py +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/lvm/thinp/test_lvs_thinp.py +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/lvm/thinp/test_lvscan_thinp.py +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/lvm/thinp/test_pool_capacity.py +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/lvm/thinp/test_thin_perf.py +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/main.fmf +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/multipath/basic.fmf +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/multipath/service.fmf +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/multipath/test_multipath_basic.py +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/multipath/test_multipath_service.py +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/pytest.ini +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/rdma/bugs/customers/customer_1/issue_23967_verify_speed.py +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/rdma/bugs/customers/customer_1/main.fmf +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/rdma/bugs/customers/main.fmf +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/rdma/bugs/main.fmf +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/rdma/bugs/others/main.fmf +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/rdma/bugs/others/reproducers.py +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/rdma/main.fmf +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/rdma/pyverbs-tests/core/main.fmf +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/rdma/pyverbs-tests/core/pyverbs-tests.py +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/rdma/sriov/core/main.fmf +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/rdma/sriov/core/sriov.py +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/scsi/conftest.py +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/scsi/main.fmf +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/scsi/test_hotplug.py +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/scsi/test_io.py +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/sg3_utils/conftest.py +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/sg3_utils/main.fmf +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/sg3_utils/regression/main.fmf +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/sg3_utils/regression/test_documentation_check/main.fmf +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/sg3_utils/regression/test_documentation_check/test_documentation_check.py +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/sg3_utils/regression/test_rescan_deletes_dev_null/main.fmf +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/sg3_utils/regression/test_rescan_deletes_dev_null/test_rescan_deletes_dev_null.py +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/sg3_utils/regression/test_rescan_ignore_rev/main.fmf +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/sg3_utils/regression/test_rescan_ignore_rev/test_rescan_ignore_rev.py +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/sg3_utils/regression/test_rescan_lun_scanning/main.fmf +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/sg3_utils/regression/test_rescan_lun_scanning/test_rescan_lun_scanning.py +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/sg3_utils/regression/test_rescan_removes_readds/main.fmf +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/sg3_utils/regression/test_rescan_removes_readds/test_rescan_removes_readds.py +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/sg3_utils/regression/test_rescan_syntax_error/main.fmf +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/sg3_utils/regression/test_rescan_syntax_error/test_rescan_syntax_error.py +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/sg3_utils/regression/test_rescan_too_many_args/main.fmf +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/sg3_utils/regression/test_rescan_too_many_args/test_rescan_too_many_args.py +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/sg3_utils/regression/test_sg_map26_32_devices/main.fmf +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/sg3_utils/regression/test_sg_map26_32_devices/test_sg_map26_32_devices.py +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/sg3_utils/regression/test_sginfo_dev_snapshot/main.fmf +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/sg3_utils/regression/test_sginfo_dev_snapshot/test_sginfo_dev_snapshot.py +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/sg3_utils/sanity/main.fmf +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/sg3_utils/sanity/test_sg3_dd/main.fmf +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/sg3_utils/sanity/test_sg3_dd/test_sg3_dd.py +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/sg3_utils/sanity/test_sg_get_config/main.fmf +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/sg3_utils/sanity/test_sg_get_config/test_sg_get_config.py +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/sg3_utils/sanity/test_sg_ident/main.fmf +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/sg3_utils/sanity/test_sg_ident/test_sg_ident.py +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/sg3_utils/sanity/test_sg_inq/main.fmf +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/sg3_utils/sanity/test_sg_inq/test_sg_inq.py +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/sg3_utils/sanity/test_sg_logs/main.fmf +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/sg3_utils/sanity/test_sg_logs/test_sg_logs.py +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/sg3_utils/sanity/test_sg_luns/main.fmf +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/sg3_utils/sanity/test_sg_luns/test_sg_luns.py +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/sg3_utils/sanity/test_sg_map/main.fmf +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/sg3_utils/sanity/test_sg_map/test_sg_map.py +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/sg3_utils/sanity/test_sg_modes/main.fmf +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/sg3_utils/sanity/test_sg_modes/test_sg_modes.py +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/sg3_utils/sanity/test_sg_opcodes/main.fmf +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/sg3_utils/sanity/test_sg_opcodes/test_sg_opcodes.py +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/sg3_utils/sanity/test_sg_persist/main.fmf +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/sg3_utils/sanity/test_sg_persist/test_sg_persist.py +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/sg3_utils/sanity/test_sg_rbuf/main.fmf +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/sg3_utils/sanity/test_sg_rbuf/test_sg_rbuf.py +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/sg3_utils/sanity/test_sg_read/main.fmf +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/sg3_utils/sanity/test_sg_read/test_sg_read.py +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/sg3_utils/sanity/test_sg_read_buffer/main.fmf +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/sg3_utils/sanity/test_sg_read_buffer/test_sg_read_buffer.py +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/sg3_utils/sanity/test_sg_read_long/main.fmf +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/sg3_utils/sanity/test_sg_read_long/test_sg_read_long.py +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/sg3_utils/sanity/test_sg_readcap/main.fmf +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/sg3_utils/sanity/test_sg_readcap/test_sg_readcap.py +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/sg3_utils/sanity/test_sg_safte/main.fmf +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/sg3_utils/sanity/test_sg_safte/test_sg_safte.py +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/sg3_utils/sanity/test_sg_sat_identify/main.fmf +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/sg3_utils/sanity/test_sg_sat_identify/test_sg_sat_identify.py +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/sg3_utils/sanity/test_sg_scan/main.fmf +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/sg3_utils/sanity/test_sg_scan/test_sg_scan.py +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/sg3_utils/sanity/test_sg_senddiag/main.fmf +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/sg3_utils/sanity/test_sg_senddiag/test_sg_senddiag.py +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/sg3_utils/sanity/test_sg_ses/main.fmf +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/sg3_utils/sanity/test_sg_ses/test_sg_ses.py +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/sg3_utils/sanity/test_sg_start/main.fmf +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/sg3_utils/sanity/test_sg_start/test_sg_start.py +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/sg3_utils/sanity/test_sg_sync/main.fmf +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/sg3_utils/sanity/test_sg_sync/test_sg_sync.py +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/sg3_utils/sanity/test_sg_turs/main.fmf +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/sg3_utils/sanity/test_sg_turs/test_sg_turs.py +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/sg3_utils/sanity/test_sg_verify/main.fmf +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/sg3_utils/sanity/test_sg_verify/test_sg_verify.py +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/sg3_utils/sanity/test_sg_vpd/main.fmf +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/sg3_utils/sanity/test_sg_vpd/test_sg_vpd.py +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/sg3_utils/sanity/test_sg_write_buffer/main.fmf +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/sg3_utils/sanity/test_sg_write_buffer/test_sg_write_buffer.py +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/sg3_utils/sanity/test_sginfo/main.fmf +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/sg3_utils/sanity/test_sginfo/test_sginfo.py +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/sg3_utils/sanity/version_help/main.fmf +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/sg3_utils/sanity/version_help/test_version_help.py +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/snapm/conftest.py +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/snapm/snapm_sanity/conftest.py +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/snapm/snapm_sanity/main.fmf +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/snapm/snapm_sanity/test_snapm_diff.py +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/snapm/snapm_sanity/test_snapm_mount.py +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/snapm/snapm_sanity/test_snapm_sanity.py +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/snapm/snapm_sanity/test_snapm_schedule.py +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/snapm/snapm_sanity/test_snapm_snapset.py +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/snapm/snapshot_boot/main.fmf +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/snapm/snapshot_boot/test_snapm_snapshot_boot.py +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/snapm/upgrade/main.fmf +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/snapm/upgrade/test_snapm_upgrade.py +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/snapm/upgrade/test_snapm_upgrade_boot.fmf +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/snapm/upgrade/test_snapm_upgrade_boot.py +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/stratis/basic/conftest.py +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/stratis/basic/test_blockdev.fmf +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/stratis/basic/test_blockdev.py +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/stratis/basic/test_daemon.fmf +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/stratis/basic/test_daemon.py +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/stratis/basic/test_filesystem.fmf +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/stratis/basic/test_filesystem.py +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/stratis/basic/test_key.fmf +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/stratis/basic/test_key.py +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/stratis/basic/test_pool.fmf +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/stratis/basic/test_pool.py +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/stratis/basic/test_pool_advanced.fmf +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/stratis/basic/test_pool_advanced.py +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/stratis/basic/test_pool_encryption.fmf +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/stratis/basic/test_pool_encryption.py +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/stratis/basic/test_pool_operations.fmf +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/stratis/basic/test_pool_operations.py +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/stratis/conftest.py +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/stratis/main.fmf +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/stratis/multihost/main.fmf +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/stratis/multihost/test_stratis_multihost.py +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/stratis/persistence/main.fmf +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/stratis/persistence/test_stratis_fstab_persistence.py +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/stratis/upgrade/main.fmf +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/stratis/upgrade/test_stratis_upgrade.py +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/sts-prepare/main.fmf +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/sts-prepare/runtest.sh +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/target/core/backstores/backstores.py +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/target/core/backstores/main.fmf +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/target/core/config_mgmt/config_management.py +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/target/core/config_mgmt/main.fmf +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/target/core/global_config/test_auto_use_daemon.py +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/target/core/global_config/test_global_parameters.py +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/target/core/global_config/test_global_parameters_sanity.py +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/target/core/iscsi/iscsi_target.py +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/target/core/iscsi/main.fmf +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/target/core/main.fmf +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/target/core/target_modules/main.fmf +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/target/core/target_modules/target_core_mod.py +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/target/core/target_service/main.fmf +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/target/core/target_service/target_service.py +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/target/full/auth/chap.py +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/target/full/auth/main.fmf +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/target/full/loopback/main.fmf +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/target/full/loopback/test_loopback.py +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/target/full/main.fmf +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/target/full/persistent-reservation/conftest.py +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/target/full/persistent-reservation/iscsi_pr.fmf +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/target/full/persistent-reservation/loopback_pr.fmf +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/target/full/persistent-reservation/main.fmf +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/target/full/persistent-reservation/test_loopback_pr.py +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/target/full/restoreconfig/main.fmf +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/target/full/restoreconfig/restoreconfig.py +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/target/isns/isns-sanity.py +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/target/isns/main.fmf +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/target/main.fmf +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/udisks2/core/main.fmf +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/udisks2/core/test_block_format/main.fmf +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/udisks2/core/test_block_format/test_block_format.py +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/udisks2/core/test_encrypted/main.fmf +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/udisks2/core/test_encrypted/test_encrypted.py +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/udisks2/core/test_filesystem/main.fmf +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/udisks2/core/test_filesystem/test_udisks2_filesystem.py +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/udisks2/core/test_loop_dbus/main.fmf +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/udisks2/core/test_loop_dbus/test_loop_dbus.py +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/udisks2/core/test_manager/main.fmf +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/udisks2/core/test_manager/test_manager.py +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/udisks2/core/test_partition/main.fmf +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/udisks2/core/test_partition/test_partition.py +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/udisks2/core/test_swapspace/main.fmf +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/udisks2/core/test_swapspace/test_swapspace.py +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/udisks2/hardware/main.fmf +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/udisks2/hardware/test_drive/main.fmf +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/udisks2/hardware/test_drive/test_drive.py +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/udisks2/main.fmf +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/udisks2/regression/main.fmf +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/udisks2/regression/test_block_secret_config/main.fmf +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/udisks2/regression/test_block_secret_config/test_block_secret_config.py +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/udisks2/regression/test_bug_regressions/main.fmf +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/udisks2/regression/test_bug_regressions/test_bug_regressions.py +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/udisks2/regression/test_encrypted_advanced/main.fmf +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/udisks2/regression/test_encrypted_advanced/test_encrypted_advanced.py +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/udisks2/regression/test_encrypted_regression/main.fmf +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/udisks2/regression/test_encrypted_regression/test_encrypted_regression.py +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/udisks2/regression/test_error_handling/main.fmf +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/udisks2/regression/test_error_handling/test_error_handling.py +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/udisks2/regression/test_filesystem_regression/main.fmf +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/udisks2/regression/test_filesystem_regression/test_filesystem_regression.py +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/udisks2/regression/test_luks_convert/main.fmf +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/udisks2/regression/test_luks_convert/test_luks_convert.py +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/udisks2/regression/test_manager_regression/main.fmf +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/udisks2/regression/test_manager_regression/test_manager_regression.py +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/udisks2/regression/test_vfat_capabilities/main.fmf +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/udisks2/regression/test_vfat_capabilities/test_vfat_capabilities.py +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/udisks2/sanity/main.fmf +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/udisks2/sanity/test_dump/main.fmf +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/udisks2/sanity/test_dump/test_dump.py +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/udisks2/sanity/test_info/main.fmf +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/udisks2/sanity/test_info/test_info.py +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/udisks2/sanity/test_lock/main.fmf +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/udisks2/sanity/test_lock/test_lock.py +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/udisks2/sanity/test_loop/main.fmf +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/udisks2/sanity/test_loop/test_loop.py +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/udisks2/sanity/test_mount/main.fmf +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/udisks2/sanity/test_mount/test_mount.py +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/udisks2/sanity/test_status/main.fmf +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/udisks2/sanity/test_status/test_status.py +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/udisks2/sanity/version_help/main.fmf +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/udisks2/sanity/version_help/test_udisks2_version_help.py +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/vdo/data/main.fmf +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/vdo/main.fmf +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/vdo/module_signature/main.fmf +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/vdo/module_signature/test_signatures.py +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/vdo/multihost/main.fmf +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/vdo/multihost/test_vdo_multihost.py +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/vdo/upgrade/lvm_vdo.fmf +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/vdo/upgrade/main.fmf +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/vdo/upgrade/test_vdo_upgrade.py +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/vdo/upgrade/vdo_manager.fmf +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/vdo/upgrade/vdo_on_lv.fmf +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/vdo/vdo_ack_threads/vdo_ack_threads.py +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/vdo/vdo_calculate_size/main.fmf +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/vdo/vdo_calculate_size/test_vdo_calculate_size.py +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/vdo/vdo_high_memory/main.fmf +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/vdo/vdo_high_memory/test_vdo_high_memory.py +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/vdo/vdo_sanity/main.fmf +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/vdo/vdo_sanity/test_vdo_sanity.py +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/zstd/conftest.py +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/zstd/main.fmf +0 -0
- {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/zstd/test_zstd_cli.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.5
|
|
2
2
|
Name: sts-libs
|
|
3
|
-
Version: 2.4.
|
|
3
|
+
Version: 2.4.2
|
|
4
4
|
Summary: Library for pytest-based Linux storage tests
|
|
5
5
|
Project-URL: Repository, https://gitlab.com/rh-kernel-stqe/sts/
|
|
6
6
|
Author-email: Martin Hoyer <mhoyer@redhat.com>, Filip Suba <fsuba@redhat.com>, Zhaojuan Guo <zguo@redhat.com>, Bruno Goncalves <bgoncalv@redhat.com>, Jakub Krysl <jkrysl@redhat.com>
|
|
@@ -7,7 +7,7 @@ name = 'sts-libs'
|
|
|
7
7
|
description = 'Library for pytest-based Linux storage tests'
|
|
8
8
|
readme = 'sts_libs/README.md'
|
|
9
9
|
requires-python = '>=3.12'
|
|
10
|
-
version = "2.4.
|
|
10
|
+
version = "2.4.2"
|
|
11
11
|
authors = [
|
|
12
12
|
{name = 'Martin Hoyer', email = 'mhoyer@redhat.com'},
|
|
13
13
|
{name = 'Filip Suba', email = 'fsuba@redhat.com'},
|
|
@@ -0,0 +1,174 @@
|
|
|
1
|
+
# Copyright: Contributors to the sts project
|
|
2
|
+
# SPDX-License-Identifier: GPL-3.0-or-later
|
|
3
|
+
# pyright: reportUnusedFunction=false
|
|
4
|
+
|
|
5
|
+
"""iSCSI test fixtures."""
|
|
6
|
+
|
|
7
|
+
import logging
|
|
8
|
+
from collections.abc import Callable, Generator, Sequence
|
|
9
|
+
from pathlib import Path
|
|
10
|
+
from typing import Any
|
|
11
|
+
|
|
12
|
+
import pytest
|
|
13
|
+
|
|
14
|
+
from sts.base import StorageDevice
|
|
15
|
+
from sts.iscsi import setup_and_login
|
|
16
|
+
from sts.iscsi.config import ISCSID_SERVICE_NAME
|
|
17
|
+
from sts.iscsi.node import IscsiNode
|
|
18
|
+
from sts.iscsi.session import IscsiSession
|
|
19
|
+
from sts.multipath import MultipathDevice, MultipathService
|
|
20
|
+
from sts.scsi import ScsiDevice
|
|
21
|
+
from sts.target import BackstoreFileio, Iscsi, IscsiLUN, create_basic_iscsi_target
|
|
22
|
+
from sts.utils import wait_for
|
|
23
|
+
from sts.utils.packages import ensure_installed, log_package_versions
|
|
24
|
+
from sts.utils.system import SystemManager
|
|
25
|
+
|
|
26
|
+
logger = logging.getLogger(__name__)
|
|
27
|
+
|
|
28
|
+
ISCSI_DEVICE_SETTLE_TIMEOUT = 60
|
|
29
|
+
ISCSI_DEVICE_POLL_INTERVAL = 0.2
|
|
30
|
+
|
|
31
|
+
|
|
32
|
+
def generate_test_iqns(test_name: str) -> tuple[str, str, str]:
|
|
33
|
+
"""Generate (base_iqn, target_iqn, initiator_iqn) from test name."""
|
|
34
|
+
test_name = test_name.split('[', maxsplit=1)[0]
|
|
35
|
+
test_name = test_name.replace('_', '-')
|
|
36
|
+
base_iqn = f'iqn.2024-01.sts.{test_name}'
|
|
37
|
+
return base_iqn, f'{base_iqn}:target', f'{base_iqn}:initiator'
|
|
38
|
+
|
|
39
|
+
|
|
40
|
+
@pytest.fixture(scope='class')
|
|
41
|
+
def _iscsi_test() -> None:
|
|
42
|
+
"""Install iSCSI packages and start iscsid."""
|
|
43
|
+
assert ensure_installed('iscsi-initiator-utils', 'lsscsi')
|
|
44
|
+
log_package_versions('iscsi-initiator-utils', 'targetcli')
|
|
45
|
+
|
|
46
|
+
system = SystemManager()
|
|
47
|
+
assert system.service_start(ISCSID_SERVICE_NAME), 'Failed to start iscsid'
|
|
48
|
+
|
|
49
|
+
|
|
50
|
+
@pytest.fixture(scope='class')
|
|
51
|
+
def iscsi_localhost_test(request: pytest.FixtureRequest, _iscsi_test: None) -> Generator[str, None, None]:
|
|
52
|
+
"""Set up and tear down a local iSCSI target environment. Yields target IQN."""
|
|
53
|
+
assert ensure_installed('targetcli')
|
|
54
|
+
|
|
55
|
+
test_name = str(request.node.name) # pyright: ignore[reportUnknownMemberType, reportUnknownArgumentType]
|
|
56
|
+
_, target_iqn, _ = generate_test_iqns(test_name)
|
|
57
|
+
|
|
58
|
+
target = Iscsi(target_wwn=target_iqn)
|
|
59
|
+
for session in IscsiSession.get_by_target(target_iqn):
|
|
60
|
+
session.logout()
|
|
61
|
+
target.delete_target()
|
|
62
|
+
|
|
63
|
+
yield target_iqn
|
|
64
|
+
|
|
65
|
+
for session in IscsiSession.get_by_target(target_iqn):
|
|
66
|
+
session.logout()
|
|
67
|
+
target.delete_target()
|
|
68
|
+
|
|
69
|
+
|
|
70
|
+
def _get_target_device_paths(target_iqn: str) -> list[Path]:
|
|
71
|
+
"""Return running SCSI disks belonging to an active target session."""
|
|
72
|
+
return [
|
|
73
|
+
ScsiDevice.DEV_PATH / disk.name
|
|
74
|
+
for session in IscsiSession.get_by_target(target_iqn)
|
|
75
|
+
for disk in session.get_disks()
|
|
76
|
+
if disk.is_running()
|
|
77
|
+
]
|
|
78
|
+
|
|
79
|
+
|
|
80
|
+
def _device_is_openable(path: Path) -> bool:
|
|
81
|
+
"""Check whether a device node can be opened without issuing data I/O."""
|
|
82
|
+
try:
|
|
83
|
+
with path.open('rb'):
|
|
84
|
+
pass
|
|
85
|
+
except OSError:
|
|
86
|
+
return False
|
|
87
|
+
return True
|
|
88
|
+
|
|
89
|
+
|
|
90
|
+
def _target_devices_ready(target_iqn: str, expected_count: int) -> bool:
|
|
91
|
+
"""Check that all expected target disks are running and openable."""
|
|
92
|
+
paths = _get_target_device_paths(target_iqn)
|
|
93
|
+
return len(paths) == expected_count and all(_device_is_openable(path) for path in paths)
|
|
94
|
+
|
|
95
|
+
|
|
96
|
+
def _find_test_devices(vendor: str = 'LIO-ORG', *, target_iqn: str | None = None) -> list[Path]:
|
|
97
|
+
"""Find test device paths, optionally restricted to one iSCSI target."""
|
|
98
|
+
if target_iqn is not None:
|
|
99
|
+
paths = _get_target_device_paths(target_iqn)
|
|
100
|
+
assert paths, f'No running devices found for iSCSI target {target_iqn}'
|
|
101
|
+
return paths
|
|
102
|
+
|
|
103
|
+
def _extract_paths(devices: Sequence[StorageDevice]) -> list[Path]:
|
|
104
|
+
return [Path(str(d.path)) for d in devices if d.path]
|
|
105
|
+
|
|
106
|
+
mp_service = MultipathService()
|
|
107
|
+
if mp_service.is_running():
|
|
108
|
+
devices = MultipathDevice.get_all()
|
|
109
|
+
if devices:
|
|
110
|
+
paths = _extract_paths(devices)
|
|
111
|
+
if paths:
|
|
112
|
+
return paths
|
|
113
|
+
|
|
114
|
+
devices = ScsiDevice.get_by_vendor(vendor)
|
|
115
|
+
assert devices, f'No {vendor} devices found'
|
|
116
|
+
|
|
117
|
+
paths = _extract_paths(devices)
|
|
118
|
+
assert paths, f'No valid device paths found for {vendor} devices'
|
|
119
|
+
return paths
|
|
120
|
+
|
|
121
|
+
|
|
122
|
+
@pytest.fixture
|
|
123
|
+
def get_test_device() -> Callable[..., list[Path]]:
|
|
124
|
+
"""Return a callable that finds test device paths."""
|
|
125
|
+
return _find_test_devices
|
|
126
|
+
|
|
127
|
+
|
|
128
|
+
@pytest.fixture
|
|
129
|
+
def iscsi_target(request: pytest.FixtureRequest, iscsi_localhost_test: None) -> Generator[IscsiNode, None, None]: # noqa: ARG001
|
|
130
|
+
"""Create iSCSI target with optional LUNs, log in, yield IscsiNode, log out on exit."""
|
|
131
|
+
node_name = str(request.node.name) # pyright: ignore[reportUnknownMemberType, reportUnknownArgumentType]
|
|
132
|
+
_, target_iqn, initiator_iqn = generate_test_iqns(node_name)
|
|
133
|
+
params: dict[str, Any] = request.param if hasattr(request, 'param') else {}
|
|
134
|
+
size: str = params.get('size', '1G')
|
|
135
|
+
n_luns: int = params.get('n_luns', 1)
|
|
136
|
+
backstores = [(initiator_iqn.split(':')[1], Path('initiator_backstore_file'))]
|
|
137
|
+
|
|
138
|
+
assert create_basic_iscsi_target(
|
|
139
|
+
target_wwn=target_iqn,
|
|
140
|
+
initiator_wwn=initiator_iqn,
|
|
141
|
+
size=size,
|
|
142
|
+
), 'Failed to create target'
|
|
143
|
+
|
|
144
|
+
if n_luns > 1:
|
|
145
|
+
test_name = node_name.split('[', maxsplit=1)[0]
|
|
146
|
+
for i in range(1, n_luns):
|
|
147
|
+
backstore_name = f'{test_name}_lun{i}'
|
|
148
|
+
backing_file = Path(f'{backstore_name}_file')
|
|
149
|
+
backstore = BackstoreFileio(name=backstore_name)
|
|
150
|
+
backstore.create_backstore(size=size, file_or_dev=str(backing_file))
|
|
151
|
+
IscsiLUN(target_wwn=target_iqn).create_lun(storage_object=backstore.path)
|
|
152
|
+
backstores.append((backstore_name, backing_file))
|
|
153
|
+
|
|
154
|
+
node = setup_and_login(
|
|
155
|
+
portal='127.0.0.1:3260',
|
|
156
|
+
initiator_iqn=initiator_iqn,
|
|
157
|
+
target_iqn=target_iqn,
|
|
158
|
+
)
|
|
159
|
+
try:
|
|
160
|
+
assert wait_for(
|
|
161
|
+
lambda: _target_devices_ready(target_iqn, n_luns),
|
|
162
|
+
timeout=ISCSI_DEVICE_SETTLE_TIMEOUT,
|
|
163
|
+
poll=ISCSI_DEVICE_POLL_INTERVAL,
|
|
164
|
+
), f'Timed out waiting for {n_luns} usable device(s) from iSCSI target {target_iqn}'
|
|
165
|
+
yield node
|
|
166
|
+
finally:
|
|
167
|
+
node.logout()
|
|
168
|
+
Iscsi(target_wwn=target_iqn).delete_target()
|
|
169
|
+
for backstore_name, backing_file in reversed(backstores):
|
|
170
|
+
result = BackstoreFileio(name=backstore_name).delete_backstore()
|
|
171
|
+
if result.succeeded:
|
|
172
|
+
backing_file.unlink(missing_ok=True)
|
|
173
|
+
else:
|
|
174
|
+
logger.warning(f'Failed to delete iSCSI test backstore {backstore_name}: {result.stderr}')
|
|
@@ -7,10 +7,17 @@
|
|
|
7
7
|
from __future__ import annotations
|
|
8
8
|
|
|
9
9
|
import logging
|
|
10
|
+
from os import getenv
|
|
11
|
+
from pathlib import Path
|
|
10
12
|
from typing import TYPE_CHECKING
|
|
11
13
|
|
|
12
14
|
import pytest
|
|
13
15
|
|
|
16
|
+
from sts.loop import LoopDevice
|
|
17
|
+
from sts.lvm.logical_volume import LogicalVolume
|
|
18
|
+
from sts.lvm.physical_volume import PhysicalVolume
|
|
19
|
+
from sts.lvm.volume_group import VolumeGroup
|
|
20
|
+
from sts.models import StsBaseModel
|
|
14
21
|
from sts.utils.cmdline import run
|
|
15
22
|
from sts.utils.errors import ModuleInUseError
|
|
16
23
|
from sts.utils.modules import ModuleManager
|
|
@@ -26,6 +33,14 @@ logger = logging.getLogger(__name__)
|
|
|
26
33
|
VDO_PACKAGE_NAME = 'vdo'
|
|
27
34
|
|
|
28
35
|
|
|
36
|
+
class VdoTestContext(StsBaseModel):
|
|
37
|
+
"""Fixture-owned VDO volume used by data-path tests."""
|
|
38
|
+
|
|
39
|
+
dev_path: Path
|
|
40
|
+
vg_name: str
|
|
41
|
+
lv_name: str
|
|
42
|
+
|
|
43
|
+
|
|
29
44
|
@pytest.fixture(scope='class')
|
|
30
45
|
def load_vdo_module(_lvm_test: None) -> str:
|
|
31
46
|
"""Install VDO and load the appropriate kernel module (dm-vdo or kvdo).
|
|
@@ -82,3 +97,30 @@ def _vdo_test(load_vdo_module: str) -> Generator[None, None, None]:
|
|
|
82
97
|
logger.debug(f'VDO module {module} could not be unloaded cleanly; continuing.')
|
|
83
98
|
except (ModuleInUseError, RuntimeError):
|
|
84
99
|
logger.debug(f'Ignoring unload error for {module}.')
|
|
100
|
+
|
|
101
|
+
|
|
102
|
+
@pytest.fixture
|
|
103
|
+
def vdo_test(_vdo_test: None) -> Generator[VdoTestContext, None, None]:
|
|
104
|
+
"""Create a VDO LV on an owned sparse loop device."""
|
|
105
|
+
vg_name = getenv('VDO_VG_NAME', 'vdovg')
|
|
106
|
+
lv_name = getenv('VDO_LV_NAME', 'vdolv')
|
|
107
|
+
pool_name = getenv('VDO_POOL_NAME', 'vdopool0')
|
|
108
|
+
loop_device = LoopDevice.create(size_mb=16384, sparse=True)
|
|
109
|
+
assert loop_device is not None
|
|
110
|
+
device_path = str(loop_device.device_path)
|
|
111
|
+
pv = PhysicalVolume(path=device_path)
|
|
112
|
+
vg = VolumeGroup(name=vg_name, pvs=[device_path])
|
|
113
|
+
lv = LogicalVolume(name=lv_name, vg=vg_name, pool_name=pool_name)
|
|
114
|
+
|
|
115
|
+
try:
|
|
116
|
+
pv.create().assert_ok()
|
|
117
|
+
vg.create().assert_ok()
|
|
118
|
+
lv.create(type='vdo', size='12G', virtualsize='20G', vdosettings='vdo_slab_size_mb=128').assert_ok()
|
|
119
|
+
assert lv.path is not None
|
|
120
|
+
yield VdoTestContext(dev_path=Path(lv.path), vg_name=vg_name, lv_name=lv_name)
|
|
121
|
+
finally:
|
|
122
|
+
lv.remove()
|
|
123
|
+
vg.deactivate()
|
|
124
|
+
vg.remove(force=True)
|
|
125
|
+
pv.remove()
|
|
126
|
+
loop_device.remove()
|
|
@@ -245,6 +245,10 @@ class LoopDevice(StorageDevice):
|
|
|
245
245
|
result = run_argv(command)
|
|
246
246
|
if result.failed:
|
|
247
247
|
logger.error('Failed to create image file')
|
|
248
|
+
try:
|
|
249
|
+
image_file.unlink(missing_ok=True)
|
|
250
|
+
except OSError:
|
|
251
|
+
logger.exception('Failed to clean up incomplete image file')
|
|
248
252
|
return None
|
|
249
253
|
|
|
250
254
|
return image_file
|
|
@@ -72,16 +72,21 @@ class PRDevice(StorageDevice):
|
|
|
72
72
|
"""Wait for udev, validate PR support, optionally register key, and load state.
|
|
73
73
|
|
|
74
74
|
Raises:
|
|
75
|
-
DeviceError: If device is not
|
|
76
|
-
|
|
75
|
+
DeviceError: If the device is not ready or its persistent reservation
|
|
76
|
+
capabilities cannot be verified.
|
|
77
77
|
"""
|
|
78
78
|
# Wait for device to be fully available before PR operations
|
|
79
79
|
if not self.wait_udev():
|
|
80
80
|
raise DeviceError(f'Device {self.path} is not fully ready')
|
|
81
81
|
|
|
82
|
-
# Validate PR capability
|
|
83
|
-
if not self.
|
|
84
|
-
raise DeviceError(
|
|
82
|
+
# Validate PR capability while preserving the reason a query failed.
|
|
83
|
+
if not self.path:
|
|
84
|
+
raise DeviceError('Cannot check persistent reservation capabilities without a device path')
|
|
85
|
+
capabilities = self._sg_persist.report_capabilities_result(self.path)
|
|
86
|
+
if capabilities.failed:
|
|
87
|
+
detail = capabilities.stderr.strip() or f'exit status {capabilities.rc}'
|
|
88
|
+
raise DeviceError(f'Could not verify persistent reservation support on {self.path}: {detail}')
|
|
89
|
+
self._supports_pr = True
|
|
85
90
|
|
|
86
91
|
# Auto-register key if requested
|
|
87
92
|
if self.auto_register and self.register_key:
|
|
@@ -459,12 +459,16 @@ class SgPersist(Sg3UtilsCommand):
|
|
|
459
459
|
|
|
460
460
|
def report_capabilities(self, device: str | Path) -> bool:
|
|
461
461
|
"""Check whether a device supports persistent reservation operations."""
|
|
462
|
+
return self.report_capabilities_result(device).succeeded
|
|
463
|
+
|
|
464
|
+
def report_capabilities_result(self, device: str | Path) -> CommandResult:
|
|
465
|
+
"""Query persistent reservation capabilities and preserve failure details."""
|
|
462
466
|
result = self._run_command(self.COMMAND, '--in', '--report-capabilities', str(device))
|
|
463
467
|
|
|
464
468
|
if not result.succeeded:
|
|
465
469
|
logger.warning(f'Failed to check PR capabilities for {device}: {result.stderr}')
|
|
466
470
|
|
|
467
|
-
return result
|
|
471
|
+
return result
|
|
468
472
|
|
|
469
473
|
|
|
470
474
|
# =============================================================================
|
|
@@ -622,9 +622,16 @@ def create_loopback_devices(count: int, block_size: int = 4096) -> list[BlockDev
|
|
|
622
622
|
# Create each device
|
|
623
623
|
for n in range(count):
|
|
624
624
|
backstore = BackstoreFileio(name=f'{lun_prefix}{n}')
|
|
625
|
+
backing_file = Path(image_path) / f'{lun_prefix}{n}{suffix}'
|
|
626
|
+
|
|
627
|
+
try:
|
|
628
|
+
backing_file.unlink(missing_ok=True)
|
|
629
|
+
except OSError as error:
|
|
630
|
+
msg = f'Failed to remove stale loopback backing file {backing_file}'
|
|
631
|
+
raise RuntimeError(msg) from error
|
|
625
632
|
|
|
626
633
|
# Create backstore
|
|
627
|
-
result = backstore.create_backstore(size=device_size, file_or_dev=
|
|
634
|
+
result = backstore.create_backstore(size=device_size, file_or_dev=str(backing_file))
|
|
628
635
|
assert result.succeeded, f'Failed to create backstore {n}: {result.stderr}'
|
|
629
636
|
|
|
630
637
|
# Set block size
|
|
@@ -657,6 +664,8 @@ def cleanup_loopback_devices(devices: list[BlockDevice]) -> None:
|
|
|
657
664
|
# Get configuration from environment variables
|
|
658
665
|
wwn = getenv('TARGET_WWN', 'naa.50014054c1441891')
|
|
659
666
|
lun_prefix = getenv('LUN_PREFIX', 'common-lun-')
|
|
667
|
+
image_path = getenv('IMAGE_PATH', '/var/tmp/')
|
|
668
|
+
suffix = '.image'
|
|
660
669
|
|
|
661
670
|
# Initialize loopback target and LUN
|
|
662
671
|
loopback = Loopback(target_wwn=wwn)
|
|
@@ -673,6 +682,13 @@ def cleanup_loopback_devices(devices: list[BlockDevice]) -> None:
|
|
|
673
682
|
result = backstore.delete_backstore()
|
|
674
683
|
if result.failed:
|
|
675
684
|
logger.warning(f'Failed to delete backstore {n}: {result.stderr}')
|
|
685
|
+
continue
|
|
686
|
+
|
|
687
|
+
backing_file = Path(image_path) / f'{lun_prefix}{n}{suffix}'
|
|
688
|
+
try:
|
|
689
|
+
backing_file.unlink(missing_ok=True)
|
|
690
|
+
except OSError:
|
|
691
|
+
logger.warning(f'Failed to delete loopback backing file {backing_file}', exc_info=True)
|
|
676
692
|
|
|
677
693
|
result = loopback.delete_target()
|
|
678
694
|
if result.failed:
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
# Copyright: Contributors to the sts project
|
|
2
|
+
# SPDX-License-Identifier: GPL-3.0-or-later
|
|
3
|
+
|
|
4
|
+
"""Tests for iSCSI fixture device discovery and readiness."""
|
|
5
|
+
|
|
6
|
+
from __future__ import annotations
|
|
7
|
+
|
|
8
|
+
from pathlib import Path
|
|
9
|
+
from unittest.mock import MagicMock
|
|
10
|
+
|
|
11
|
+
import pytest
|
|
12
|
+
|
|
13
|
+
from sts.fixtures import iscsi_fixtures
|
|
14
|
+
from sts.iscsi.session import SessionDisk
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
def test_get_target_device_paths_uses_matching_running_sessions(monkeypatch: pytest.MonkeyPatch) -> None:
|
|
18
|
+
session = MagicMock()
|
|
19
|
+
session.get_disks.return_value = [
|
|
20
|
+
SessionDisk(name='sdc', state='running', scsi_n='3', channel='0', id='0', lun='0'),
|
|
21
|
+
SessionDisk(name='sdd', state='blocked', scsi_n='3', channel='0', id='0', lun='1'),
|
|
22
|
+
]
|
|
23
|
+
get_by_target = MagicMock(return_value=[session])
|
|
24
|
+
monkeypatch.setattr(iscsi_fixtures.IscsiSession, 'get_by_target', get_by_target)
|
|
25
|
+
|
|
26
|
+
paths = iscsi_fixtures._get_target_device_paths('iqn.test:target')
|
|
27
|
+
|
|
28
|
+
assert paths == [Path('/dev/sdc')]
|
|
29
|
+
get_by_target.assert_called_once_with('iqn.test:target')
|
|
30
|
+
|
|
31
|
+
|
|
32
|
+
def test_target_devices_ready_requires_expected_count_and_openable_paths(monkeypatch: pytest.MonkeyPatch) -> None:
|
|
33
|
+
paths = [Path('/dev/sdc'), Path('/dev/sdd')]
|
|
34
|
+
monkeypatch.setattr(iscsi_fixtures, '_get_target_device_paths', lambda _target_iqn: paths)
|
|
35
|
+
is_openable = MagicMock(side_effect=lambda path: path == Path('/dev/sdc'))
|
|
36
|
+
monkeypatch.setattr(iscsi_fixtures, '_device_is_openable', is_openable)
|
|
37
|
+
|
|
38
|
+
assert not iscsi_fixtures._target_devices_ready('iqn.test:target', 1)
|
|
39
|
+
assert not iscsi_fixtures._target_devices_ready('iqn.test:target', 2)
|
|
40
|
+
|
|
41
|
+
is_openable.side_effect = None
|
|
42
|
+
is_openable.return_value = True
|
|
43
|
+
assert iscsi_fixtures._target_devices_ready('iqn.test:target', 2)
|
|
44
|
+
|
|
45
|
+
|
|
46
|
+
def test_device_is_openable_checks_the_device_node(tmp_path: Path) -> None:
|
|
47
|
+
device = tmp_path / 'device'
|
|
48
|
+
device.touch()
|
|
49
|
+
|
|
50
|
+
assert iscsi_fixtures._device_is_openable(device)
|
|
51
|
+
assert not iscsi_fixtures._device_is_openable(tmp_path / 'missing')
|
|
52
|
+
|
|
53
|
+
|
|
54
|
+
def test_find_test_devices_can_be_restricted_to_target(monkeypatch: pytest.MonkeyPatch) -> None:
|
|
55
|
+
target_paths = [Path('/dev/sdc')]
|
|
56
|
+
get_target_paths = MagicMock(return_value=target_paths)
|
|
57
|
+
monkeypatch.setattr(iscsi_fixtures, '_get_target_device_paths', get_target_paths)
|
|
58
|
+
|
|
59
|
+
paths = iscsi_fixtures._find_test_devices(target_iqn='iqn.test:target')
|
|
60
|
+
|
|
61
|
+
assert paths == target_paths
|
|
62
|
+
get_target_paths.assert_called_once_with('iqn.test:target')
|
|
63
|
+
|
|
64
|
+
|
|
65
|
+
def test_find_test_devices_rejects_target_without_running_disks(monkeypatch: pytest.MonkeyPatch) -> None:
|
|
66
|
+
monkeypatch.setattr(iscsi_fixtures, '_get_target_device_paths', lambda _target_iqn: [])
|
|
67
|
+
|
|
68
|
+
with pytest.raises(AssertionError, match='No running devices found'):
|
|
69
|
+
iscsi_fixtures._find_test_devices(target_iqn='iqn.test:target')
|
|
@@ -350,12 +350,18 @@ class TestLoopDevicePrepareImageFile:
|
|
|
350
350
|
result = LoopDevice._prepare_image_file('loop0', tmp_path, 512)
|
|
351
351
|
assert result is None
|
|
352
352
|
|
|
353
|
-
def test_returns_none_on_fallocate_failure(self,
|
|
354
|
-
|
|
355
|
-
|
|
353
|
+
def test_returns_none_on_fallocate_failure(self, mock_command_result, tmp_path) -> None:
|
|
354
|
+
image = tmp_path / 'loop0.img'
|
|
355
|
+
|
|
356
|
+
def fail_after_creating_image(_argv):
|
|
357
|
+
image.touch()
|
|
358
|
+
return mock_command_result(command='test', rc=1)
|
|
359
|
+
|
|
360
|
+
with patch('sts.loop.run_argv', side_effect=fail_after_creating_image):
|
|
361
|
+
result = LoopDevice._prepare_image_file('loop0', tmp_path, 512)
|
|
356
362
|
|
|
357
|
-
result = LoopDevice._prepare_image_file('loop0', tmp_path, 512)
|
|
358
363
|
assert result is None
|
|
364
|
+
assert not image.exists()
|
|
359
365
|
|
|
360
366
|
@pytest.mark.usefixtures('mock_run')
|
|
361
367
|
def test_creates_parent_directory(self) -> None:
|
|
@@ -68,7 +68,7 @@ class TestPRDeviceSetup:
|
|
|
68
68
|
with pytest.raises(DeviceError):
|
|
69
69
|
device.setup()
|
|
70
70
|
|
|
71
|
-
def
|
|
71
|
+
def test_setup_preserves_pr_capability_failure(self, mock_run_with_result, mock_command_result) -> None:
|
|
72
72
|
_, results = mock_run_with_result
|
|
73
73
|
results['udevadm settle'] = mock_command_result(command='test', rc=0)
|
|
74
74
|
results['sg_persist --in --report-capabilities /dev/sda'] = mock_command_result(
|
|
@@ -77,7 +77,10 @@ class TestPRDeviceSetup:
|
|
|
77
77
|
|
|
78
78
|
device = PRDevice(path='/dev/sda')
|
|
79
79
|
|
|
80
|
-
with pytest.raises(
|
|
80
|
+
with pytest.raises(
|
|
81
|
+
DeviceError,
|
|
82
|
+
match='Could not verify persistent reservation support on /dev/sda: not supported',
|
|
83
|
+
):
|
|
81
84
|
device.setup()
|
|
82
85
|
|
|
83
86
|
def test_setup_auto_registers_key(self, mock_run_with_result, mock_command_result) -> None:
|
|
@@ -654,6 +654,22 @@ class TestSgPersistReportCapabilities:
|
|
|
654
654
|
persist = SgPersist()
|
|
655
655
|
assert persist.report_capabilities('/dev/sda') is False
|
|
656
656
|
|
|
657
|
+
def test_report_capabilities_result_preserves_failure(
|
|
658
|
+
self,
|
|
659
|
+
mock_run_with_result: tuple[list[str], dict[str, CommandResult]],
|
|
660
|
+
mock_command_result: type[CommandResult],
|
|
661
|
+
) -> None:
|
|
662
|
+
_calls, results = mock_run_with_result
|
|
663
|
+
results['sg_persist --in --report-capabilities /dev/sda'] = mock_command_result(
|
|
664
|
+
command='test', rc=56, stderr='No such device or address'
|
|
665
|
+
)
|
|
666
|
+
persist = SgPersist()
|
|
667
|
+
|
|
668
|
+
result = persist.report_capabilities_result('/dev/sda')
|
|
669
|
+
|
|
670
|
+
assert result.rc == 56
|
|
671
|
+
assert result.stderr == 'No such device or address'
|
|
672
|
+
|
|
657
673
|
|
|
658
674
|
class TestSgInq:
|
|
659
675
|
def test_inquiry_basic(
|
|
@@ -30,6 +30,8 @@ from sts.target import (
|
|
|
30
30
|
)
|
|
31
31
|
|
|
32
32
|
if TYPE_CHECKING:
|
|
33
|
+
from pathlib import Path
|
|
34
|
+
|
|
33
35
|
from sts.utils.cmdline import CommandResult
|
|
34
36
|
|
|
35
37
|
|
|
@@ -891,6 +893,21 @@ class TestCreateLoopbackDevices:
|
|
|
891
893
|
with pytest.raises(ValueError, match='Device count must be at least 1'):
|
|
892
894
|
create_loopback_devices(0)
|
|
893
895
|
|
|
896
|
+
def test_removes_stale_backing_file_before_create(
|
|
897
|
+
self,
|
|
898
|
+
mock_run: list[str],
|
|
899
|
+
monkeypatch: pytest.MonkeyPatch,
|
|
900
|
+
tmp_path: Path,
|
|
901
|
+
) -> None:
|
|
902
|
+
monkeypatch.setenv('IMAGE_PATH', str(tmp_path))
|
|
903
|
+
backing_file = tmp_path / 'common-lun-0.image'
|
|
904
|
+
backing_file.write_bytes(b'stale')
|
|
905
|
+
|
|
906
|
+
with patch('sts.target.get_free_disks', return_value=[]):
|
|
907
|
+
create_loopback_devices(1)
|
|
908
|
+
|
|
909
|
+
assert not backing_file.exists()
|
|
910
|
+
|
|
894
911
|
@patch('sts.target.get_free_disks')
|
|
895
912
|
def test_creates_devices(
|
|
896
913
|
self,
|
|
@@ -979,6 +996,20 @@ class TestCleanupLoopbackDevices:
|
|
|
979
996
|
with pytest.raises(ValueError, match='No devices provided for cleanup'):
|
|
980
997
|
cleanup_loopback_devices([])
|
|
981
998
|
|
|
999
|
+
def test_removes_owned_backing_file(
|
|
1000
|
+
self,
|
|
1001
|
+
mock_run: list[str],
|
|
1002
|
+
monkeypatch: pytest.MonkeyPatch,
|
|
1003
|
+
tmp_path: Path,
|
|
1004
|
+
) -> None:
|
|
1005
|
+
monkeypatch.setenv('IMAGE_PATH', str(tmp_path))
|
|
1006
|
+
backing_file = tmp_path / 'common-lun-0.image'
|
|
1007
|
+
backing_file.touch()
|
|
1008
|
+
|
|
1009
|
+
cleanup_loopback_devices([MagicMock()])
|
|
1010
|
+
|
|
1011
|
+
assert not backing_file.exists()
|
|
1012
|
+
|
|
982
1013
|
def test_cleans_up_devices(
|
|
983
1014
|
self,
|
|
984
1015
|
mock_run_with_result: tuple[list[str], dict[str, CommandResult]],
|
|
@@ -199,7 +199,7 @@ def _assert_device_readable(path: Path) -> None:
|
|
|
199
199
|
assert result.succeeded, f'Post-hotplug read failed for {path}: {result.stderr}'
|
|
200
200
|
|
|
201
201
|
|
|
202
|
-
def _exercise_cpu_hotplug_io(path: Path) -> None:
|
|
202
|
+
def _exercise_cpu_hotplug_io(path: Path, *, reports_io_stats: bool = True) -> None:
|
|
203
203
|
"""Run fio while cycling every available hotpluggable CPU and restore all states."""
|
|
204
204
|
states = _online_hotpluggable_cpus()
|
|
205
205
|
assert states, 'No currently online nonzero hotpluggable CPUs are available after fixture setup'
|
|
@@ -211,7 +211,8 @@ def _exercise_cpu_hotplug_io(path: Path) -> None:
|
|
|
211
211
|
try:
|
|
212
212
|
assert fio_started.is_set(), f'cpu-hotplug fio did not start for {path}'
|
|
213
213
|
assert fio.poll() is None, f'cpu-hotplug fio exited before CPU toggling for {path}'
|
|
214
|
-
|
|
214
|
+
if reports_io_stats:
|
|
215
|
+
_wait_for_device_io(path)
|
|
215
216
|
_cycle_online_cpus(states)
|
|
216
217
|
finally:
|
|
217
218
|
restore_failures = _restore_cpu_states(states)
|
|
@@ -303,7 +304,8 @@ def test_cpu_hotplug_preserves_io_on_loop(loop_devices: list[LoopDevice]) -> Non
|
|
|
303
304
|
def test_cpu_hotplug_preserves_io_on_brd(brd_device: BlockDevice) -> None:
|
|
304
305
|
"""A fixture-owned RAM disk continues I/O while available vCPUs are repeatedly cycled."""
|
|
305
306
|
assert brd_device.path is not None
|
|
306
|
-
|
|
307
|
+
# brd does not account completed I/O in /sys/block/ram*/stat.
|
|
308
|
+
_exercise_cpu_hotplug_io(Path(brd_device.path), reports_io_stats=False)
|
|
307
309
|
|
|
308
310
|
|
|
309
311
|
@pytest.mark.destructive
|
|
@@ -133,6 +133,7 @@ def _is_expected_disappearance_failure(
|
|
|
133
133
|
rf'(?:failed to (?:open|stat)(?: file)?\s+{target}'
|
|
134
134
|
rf'|(?:open|stat)\(\s*{target}\s*\)\s*failed'
|
|
135
135
|
rf'|(?:open|stat)(?: file)?\s+{target}\s+failed){missing_device_suffix}'
|
|
136
|
+
rf'|func=(?:open|stat)\(\s*{target}\s*\)\s*,\s*error={MISSING_DEVICE_ERROR}(?:\s|$)'
|
|
136
137
|
)
|
|
137
138
|
if absence.overlaps(path, started, finished) and any(
|
|
138
139
|
target_open_or_stat.search(line) for line in output.splitlines()
|
|
@@ -295,9 +296,10 @@ def _delete_and_rescan(
|
|
|
295
296
|
deleted_path = _current_hctl_path(device)
|
|
296
297
|
if not device.wait_for_path(path=deleted_path, timeout=TRANSITION_TIMEOUT):
|
|
297
298
|
continue
|
|
299
|
+
delete_started = monotonic()
|
|
298
300
|
if not device.delete_disk():
|
|
299
301
|
continue
|
|
300
|
-
events.put(('absent', str(deleted_path),
|
|
302
|
+
events.put(('absent', str(deleted_path), delete_started))
|
|
301
303
|
if not device.rescan_host():
|
|
302
304
|
continue
|
|
303
305
|
current_path = _current_hctl_path(device)
|
|
@@ -390,6 +392,10 @@ def _assert_race_results(events: list[tuple[Any, ...]]) -> None:
|
|
|
390
392
|
[
|
|
391
393
|
pytest.param('failed to open /dev/sdz: No such device or address', id='open'),
|
|
392
394
|
pytest.param('stat(/dev/sdz) failed: ENOENT', id='stat'),
|
|
395
|
+
pytest.param(
|
|
396
|
+
'fio: pid=123, err=2/file:filesetup.c:794, func=open(/dev/sdz), error=No such file or directory',
|
|
397
|
+
id='fio-filesetup',
|
|
398
|
+
),
|
|
393
399
|
pytest.param('io_u error on file /dev/sdz: No such device', id='io_u'),
|
|
394
400
|
],
|
|
395
401
|
)
|
|
@@ -541,8 +547,10 @@ def test_delete_rescan_rediscovery_tracks_an_hctl_that_returns_under_a_new_path(
|
|
|
541
547
|
monkeypatch.setattr(ScsiDebugDevice, 'delete_disk', delete_disk)
|
|
542
548
|
monkeypatch.setattr(ScsiDebugDevice, 'rescan_host', rescan_host)
|
|
543
549
|
monkeypatch.setitem(globals(), 'TRANSITION_TIMEOUT', 0.01)
|
|
550
|
+
clock = iter([1.0, 2.0, 3.0])
|
|
551
|
+
monkeypatch.setitem(globals(), 'monotonic', lambda: next(clock))
|
|
544
552
|
|
|
545
|
-
_delete_and_rescan(device, stop,
|
|
553
|
+
_delete_and_rescan(device, stop, 10.0, events) # type: ignore[arg-type]
|
|
546
554
|
|
|
547
555
|
event_log: list[tuple[Any, ...]] = []
|
|
548
556
|
_drain_events(events, event_log) # type: ignore[arg-type]
|
|
@@ -552,6 +560,7 @@ def test_delete_rescan_rediscovery_tracks_an_hctl_that_returns_under_a_new_path(
|
|
|
552
560
|
('present', str(new_path)),
|
|
553
561
|
('cycle', str(new_path)),
|
|
554
562
|
]
|
|
563
|
+
assert event_log[0][2] == 2.0
|
|
555
564
|
|
|
556
565
|
|
|
557
566
|
def _renamed_hctl_device(tmp_path: Path, monkeypatch: pytest.MonkeyPatch) -> tuple[ScsiDebugDevice, Path]:
|
|
@@ -45,9 +45,9 @@ class LvmRaidCase(StsBaseModel):
|
|
|
45
45
|
|
|
46
46
|
LVM_RAID_CASES = (
|
|
47
47
|
LvmRaidCase(level='raid0', stripe_count=3, device_count=3, stripesize='64k'),
|
|
48
|
-
LvmRaidCase(level='raid1', stripe_count=
|
|
49
|
-
LvmRaidCase(level='raid5', stripe_count=
|
|
50
|
-
LvmRaidCase(level='raid10', stripe_count=
|
|
48
|
+
LvmRaidCase(level='raid1', stripe_count=4, device_count=4, mirrors=3),
|
|
49
|
+
LvmRaidCase(level='raid5', stripe_count=4, device_count=4),
|
|
50
|
+
LvmRaidCase(level='raid10', stripe_count=4, device_count=4, mirrors=1),
|
|
51
51
|
)
|
|
52
52
|
|
|
53
53
|
|
|
@@ -343,9 +343,9 @@ def _wait_for_healthy_raid(lv: LogicalVolume, case: LvmRaidCase, *, timeout: int
|
|
|
343
343
|
|
|
344
344
|
def test_healthy_lvm_raid_requires_matching_layout_and_idle_sync() -> None:
|
|
345
345
|
"""A wrong layout or active synchronization must not start the fio phase."""
|
|
346
|
-
case = LvmRaidCase(level='raid5', stripe_count=
|
|
347
|
-
wrong_layout = LVReport(segtype='raid1', stripes=
|
|
348
|
-
rebuilding = LVReport(segtype='raid5', stripes=
|
|
346
|
+
case = LvmRaidCase(level='raid5', stripe_count=4, device_count=4)
|
|
347
|
+
wrong_layout = LVReport(segtype='raid1', stripes=4, raid_sync_action='idle')
|
|
348
|
+
rebuilding = LVReport(segtype='raid5', stripes=4, raid_sync_action='resync')
|
|
349
349
|
|
|
350
350
|
assert not _is_healthy_raid_report(wrong_layout, case)
|
|
351
351
|
assert not _is_healthy_raid_report(rebuilding, case)
|