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.
Files changed (768) hide show
  1. {sts_libs-2.4.0 → sts_libs-2.4.2}/PKG-INFO +1 -1
  2. {sts_libs-2.4.0 → sts_libs-2.4.2}/pyproject.toml +1 -1
  3. sts_libs-2.4.2/sts_libs/src/sts/fixtures/iscsi_fixtures.py +174 -0
  4. {sts_libs-2.4.0 → sts_libs-2.4.2}/sts_libs/src/sts/fixtures/vdo_fixtures.py +42 -0
  5. {sts_libs-2.4.0 → sts_libs-2.4.2}/sts_libs/src/sts/loop.py +4 -0
  6. {sts_libs-2.4.0 → sts_libs-2.4.2}/sts_libs/src/sts/pr.py +10 -5
  7. {sts_libs-2.4.0 → sts_libs-2.4.2}/sts_libs/src/sts/sg3_utils.py +5 -1
  8. {sts_libs-2.4.0 → sts_libs-2.4.2}/sts_libs/src/sts/target.py +17 -1
  9. sts_libs-2.4.2/sts_libs/tests/fixtures/test_iscsi_fixtures.py +69 -0
  10. {sts_libs-2.4.0 → sts_libs-2.4.2}/sts_libs/tests/test_loop.py +10 -4
  11. {sts_libs-2.4.0 → sts_libs-2.4.2}/sts_libs/tests/test_pr.py +5 -2
  12. {sts_libs-2.4.0 → sts_libs-2.4.2}/sts_libs/tests/test_sg3_utils.py +16 -0
  13. {sts_libs-2.4.0 → sts_libs-2.4.2}/sts_libs/tests/test_target.py +31 -0
  14. {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/block/cpu_hotplug/test_cpu_offline_io.py +5 -3
  15. {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/block/io_scheduler/test_elevator_switch_race.py +11 -2
  16. {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/block/md/test_lvm_raid.py +6 -6
  17. {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/iscsi/libiscsi/local/libiscsi-local.py +29 -3
  18. {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/iscsi/many-luns/many-luns-local.py +3 -10
  19. {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/iscsi/parameters/iscsi_params.py +22 -6
  20. {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/target/core/global_config/main.fmf +1 -1
  21. {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/target/full/persistent-reservation/test_iscsi_pr.py +3 -7
  22. {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/vdo/data/vdo_xfs_stress.py +16 -12
  23. {sts_libs-2.4.0 → sts_libs-2.4.2}/uv.lock +1 -1
  24. sts_libs-2.4.0/sts_libs/src/sts/fixtures/iscsi_fixtures.py +0 -126
  25. {sts_libs-2.4.0 → sts_libs-2.4.2}/.fmf/version +0 -0
  26. {sts_libs-2.4.0 → sts_libs-2.4.2}/.gitignore +0 -0
  27. {sts_libs-2.4.0 → sts_libs-2.4.2}/.gitlab-ci.yml +0 -0
  28. {sts_libs-2.4.0 → sts_libs-2.4.2}/.markdownlint.json +0 -0
  29. {sts_libs-2.4.0 → sts_libs-2.4.2}/.packit.yaml +0 -0
  30. {sts_libs-2.4.0 → sts_libs-2.4.2}/.pre-commit-config.yaml +0 -0
  31. {sts_libs-2.4.0 → sts_libs-2.4.2}/.scripts/sync_sts.py +0 -0
  32. {sts_libs-2.4.0 → sts_libs-2.4.2}/AGENTS.md +0 -0
  33. {sts_libs-2.4.0 → sts_libs-2.4.2}/CLAUDE.md +0 -0
  34. {sts_libs-2.4.0 → sts_libs-2.4.2}/LICENSE +0 -0
  35. {sts_libs-2.4.0 → sts_libs-2.4.2}/README.md +0 -0
  36. {sts_libs-2.4.0 → sts_libs-2.4.2}/dev-container/Containerfile +0 -0
  37. {sts_libs-2.4.0 → sts_libs-2.4.2}/dev-container/README.md +0 -0
  38. {sts_libs-2.4.0 → sts_libs-2.4.2}/dev-container/build.sh +0 -0
  39. {sts_libs-2.4.0 → sts_libs-2.4.2}/dev-container/ci.Containerfile +0 -0
  40. {sts_libs-2.4.0 → sts_libs-2.4.2}/dev-container/run.sh +0 -0
  41. {sts_libs-2.4.0 → sts_libs-2.4.2}/docs/contributing/docstrings.md +0 -0
  42. {sts_libs-2.4.0 → sts_libs-2.4.2}/docs/contributing/image-mode-testing.md +0 -0
  43. {sts_libs-2.4.0 → sts_libs-2.4.2}/docs/contributing/writing-tests.md +0 -0
  44. {sts_libs-2.4.0 → sts_libs-2.4.2}/docs/contributing.md +0 -0
  45. {sts_libs-2.4.0 → sts_libs-2.4.2}/docs/index.md +0 -0
  46. {sts_libs-2.4.0 → sts_libs-2.4.2}/docs/sts-libs/fixtures.md +0 -0
  47. {sts_libs-2.4.0 → sts_libs-2.4.2}/docs/sts-libs/index.md +0 -0
  48. {sts_libs-2.4.0 → sts_libs-2.4.2}/docs/sts-libs/libraries/base.md +0 -0
  49. {sts_libs-2.4.0 → sts_libs-2.4.2}/docs/sts-libs/libraries/blockdevice.md +0 -0
  50. {sts_libs-2.4.0 → sts_libs-2.4.2}/docs/sts-libs/libraries/boom.md +0 -0
  51. {sts_libs-2.4.0 → sts_libs-2.4.2}/docs/sts-libs/libraries/devicemapper.md +0 -0
  52. {sts_libs-2.4.0 → sts_libs-2.4.2}/docs/sts-libs/libraries/dmpd.md +0 -0
  53. {sts_libs-2.4.0 → sts_libs-2.4.2}/docs/sts-libs/libraries/fc.md +0 -0
  54. {sts_libs-2.4.0 → sts_libs-2.4.2}/docs/sts-libs/libraries/fio.md +0 -0
  55. {sts_libs-2.4.0 → sts_libs-2.4.2}/docs/sts-libs/libraries/iscsi.md +0 -0
  56. {sts_libs-2.4.0 → sts_libs-2.4.2}/docs/sts-libs/libraries/isns.md +0 -0
  57. {sts_libs-2.4.0 → sts_libs-2.4.2}/docs/sts-libs/libraries/loop.md +0 -0
  58. {sts_libs-2.4.0 → sts_libs-2.4.2}/docs/sts-libs/libraries/lvm.md +0 -0
  59. {sts_libs-2.4.0 → sts_libs-2.4.2}/docs/sts-libs/libraries/multipath.md +0 -0
  60. {sts_libs-2.4.0 → sts_libs-2.4.2}/docs/sts-libs/libraries/network.md +0 -0
  61. {sts_libs-2.4.0 → sts_libs-2.4.2}/docs/sts-libs/libraries/nvme.md +0 -0
  62. {sts_libs-2.4.0 → sts_libs-2.4.2}/docs/sts-libs/libraries/pr.md +0 -0
  63. {sts_libs-2.4.0 → sts_libs-2.4.2}/docs/sts-libs/libraries/qemu.md +0 -0
  64. {sts_libs-2.4.0 → sts_libs-2.4.2}/docs/sts-libs/libraries/rdma.md +0 -0
  65. {sts_libs-2.4.0 → sts_libs-2.4.2}/docs/sts-libs/libraries/scsi.md +0 -0
  66. {sts_libs-2.4.0 → sts_libs-2.4.2}/docs/sts-libs/libraries/scsi_debug.md +0 -0
  67. {sts_libs-2.4.0 → sts_libs-2.4.2}/docs/sts-libs/libraries/sg3_utils.md +0 -0
  68. {sts_libs-2.4.0 → sts_libs-2.4.2}/docs/sts-libs/libraries/snapm.md +0 -0
  69. {sts_libs-2.4.0 → sts_libs-2.4.2}/docs/sts-libs/libraries/stratis.md +0 -0
  70. {sts_libs-2.4.0 → sts_libs-2.4.2}/docs/sts-libs/libraries/target.md +0 -0
  71. {sts_libs-2.4.0 → sts_libs-2.4.2}/docs/sts-libs/libraries/udevadm.md +0 -0
  72. {sts_libs-2.4.0 → sts_libs-2.4.2}/docs/sts-libs/libraries/vdo.md +0 -0
  73. {sts_libs-2.4.0 → sts_libs-2.4.2}/docs/sts-libs/utils.md +0 -0
  74. {sts_libs-2.4.0 → sts_libs-2.4.2}/mkdocs.yml +0 -0
  75. {sts_libs-2.4.0 → sts_libs-2.4.2}/plans/ahci/main.fmf +0 -0
  76. {sts_libs-2.4.0 → sts_libs-2.4.2}/plans/block/virtual-hw.fmf +0 -0
  77. {sts_libs-2.4.0 → sts_libs-2.4.2}/plans/block/virtual.fmf +0 -0
  78. {sts_libs-2.4.0 → sts_libs-2.4.2}/plans/boom/tier1.fmf +0 -0
  79. {sts_libs-2.4.0 → sts_libs-2.4.2}/plans/boom/tier2-st76.fmf +0 -0
  80. {sts_libs-2.4.0 → sts_libs-2.4.2}/plans/boom/tier2.fmf +0 -0
  81. {sts_libs-2.4.0 → sts_libs-2.4.2}/plans/device-mapper/tier1.fmf +0 -0
  82. {sts_libs-2.4.0 → sts_libs-2.4.2}/plans/dmpd/tier1.fmf +0 -0
  83. {sts_libs-2.4.0 → sts_libs-2.4.2}/plans/fc/full_lpfc.fmf +0 -0
  84. {sts_libs-2.4.0 → sts_libs-2.4.2}/plans/fc/full_qla2xxx.fmf +0 -0
  85. {sts_libs-2.4.0 → sts_libs-2.4.2}/plans/fc/main.fmf +0 -0
  86. {sts_libs-2.4.0 → sts_libs-2.4.2}/plans/image_mode/device-mapper.fmf +0 -0
  87. {sts_libs-2.4.0 → sts_libs-2.4.2}/plans/image_mode/dmpd.fmf +0 -0
  88. {sts_libs-2.4.0 → sts_libs-2.4.2}/plans/image_mode/iscsi.fmf +0 -0
  89. {sts_libs-2.4.0 → sts_libs-2.4.2}/plans/image_mode/lvm.fmf +0 -0
  90. {sts_libs-2.4.0 → sts_libs-2.4.2}/plans/image_mode/main.fmf +0 -0
  91. {sts_libs-2.4.0 → sts_libs-2.4.2}/plans/image_mode/multipath.fmf +0 -0
  92. {sts_libs-2.4.0 → sts_libs-2.4.2}/plans/image_mode/stratis.fmf +0 -0
  93. {sts_libs-2.4.0 → sts_libs-2.4.2}/plans/image_mode/udisks2.fmf +0 -0
  94. {sts_libs-2.4.0 → sts_libs-2.4.2}/plans/image_mode/vdo.fmf +0 -0
  95. {sts_libs-2.4.0 → sts_libs-2.4.2}/plans/iscsi/libiscsi/main.fmf +0 -0
  96. {sts_libs-2.4.0 → sts_libs-2.4.2}/plans/iscsi/local.fmf +0 -0
  97. {sts_libs-2.4.0 → sts_libs-2.4.2}/plans/iscsi/offload/be2iscsi.fmf +0 -0
  98. {sts_libs-2.4.0 → sts_libs-2.4.2}/plans/iscsi/offload/bnx2i.fmf +0 -0
  99. {sts_libs-2.4.0 → sts_libs-2.4.2}/plans/iscsi/offload/cxgb4i.fmf +0 -0
  100. {sts_libs-2.4.0 → sts_libs-2.4.2}/plans/iscsi/offload/intel.fmf +0 -0
  101. {sts_libs-2.4.0 → sts_libs-2.4.2}/plans/iscsi/offload/main.fmf +0 -0
  102. {sts_libs-2.4.0 → sts_libs-2.4.2}/plans/iscsi/offload/qedi.fmf +0 -0
  103. {sts_libs-2.4.0 → sts_libs-2.4.2}/plans/iscsi/tier0.fmf +0 -0
  104. {sts_libs-2.4.0 → sts_libs-2.4.2}/plans/isns-utils/full.fmf +0 -0
  105. {sts_libs-2.4.0 → sts_libs-2.4.2}/plans/lio/core.fmf +0 -0
  106. {sts_libs-2.4.0 → sts_libs-2.4.2}/plans/lio/full.fmf +0 -0
  107. {sts_libs-2.4.0 → sts_libs-2.4.2}/plans/lsscsi/tier1.fmf +0 -0
  108. {sts_libs-2.4.0 → sts_libs-2.4.2}/plans/lsscsi/tier2.fmf +0 -0
  109. {sts_libs-2.4.0 → sts_libs-2.4.2}/plans/lvm/tier1.fmf +0 -0
  110. {sts_libs-2.4.0 → sts_libs-2.4.2}/plans/main.fmf +0 -0
  111. {sts_libs-2.4.0 → sts_libs-2.4.2}/plans/multipath/tier1.fmf +0 -0
  112. {sts_libs-2.4.0 → sts_libs-2.4.2}/plans/rdma/main.fmf +0 -0
  113. {sts_libs-2.4.0 → sts_libs-2.4.2}/plans/rdma/regression.fmf +0 -0
  114. {sts_libs-2.4.0 → sts_libs-2.4.2}/plans/rdma/test_case_vars.yaml +0 -0
  115. {sts_libs-2.4.0 → sts_libs-2.4.2}/plans/scsi/main.fmf +0 -0
  116. {sts_libs-2.4.0 → sts_libs-2.4.2}/plans/sg3_utils/tier1.fmf +0 -0
  117. {sts_libs-2.4.0 → sts_libs-2.4.2}/plans/snapm/tier1.fmf +0 -0
  118. {sts_libs-2.4.0 → sts_libs-2.4.2}/plans/snapm/tier2-st76.fmf +0 -0
  119. {sts_libs-2.4.0 → sts_libs-2.4.2}/plans/snapm/tier2.fmf +0 -0
  120. {sts_libs-2.4.0 → sts_libs-2.4.2}/plans/stratis/multihost/main.fmf +0 -0
  121. {sts_libs-2.4.0 → sts_libs-2.4.2}/plans/stratis/multihost/nfs.fmf +0 -0
  122. {sts_libs-2.4.0 → sts_libs-2.4.2}/plans/stratis/tier1.fmf +0 -0
  123. {sts_libs-2.4.0 → sts_libs-2.4.2}/plans/stratis/tier2-fstab-stqe.fmf +0 -0
  124. {sts_libs-2.4.0 → sts_libs-2.4.2}/plans/stratis/tier2-fstab.fmf +0 -0
  125. {sts_libs-2.4.0 → sts_libs-2.4.2}/plans/stratis/tier2-linear.fmf +0 -0
  126. {sts_libs-2.4.0 → sts_libs-2.4.2}/plans/stratis/tier2-mdraid1.fmf +0 -0
  127. {sts_libs-2.4.0 → sts_libs-2.4.2}/plans/stratis/tier2-raid1.fmf +0 -0
  128. {sts_libs-2.4.0 → sts_libs-2.4.2}/plans/sts-ci/ci.fmf +0 -0
  129. {sts_libs-2.4.0 → sts_libs-2.4.2}/plans/udisks2/tier1.fmf +0 -0
  130. {sts_libs-2.4.0 → sts_libs-2.4.2}/plans/udisks2/tier2.fmf +0 -0
  131. {sts_libs-2.4.0 → sts_libs-2.4.2}/plans/udisks2/tier3.fmf +0 -0
  132. {sts_libs-2.4.0 → sts_libs-2.4.2}/plans/vdo/multihost/main.fmf +0 -0
  133. {sts_libs-2.4.0 → sts_libs-2.4.2}/plans/vdo/multihost/multihost-aarch64.fmf +0 -0
  134. {sts_libs-2.4.0 → sts_libs-2.4.2}/plans/vdo/multihost/multihost-ppc64le.fmf +0 -0
  135. {sts_libs-2.4.0 → sts_libs-2.4.2}/plans/vdo/multihost/multihost-s390x.fmf +0 -0
  136. {sts_libs-2.4.0 → sts_libs-2.4.2}/plans/vdo/multihost/multihost-stqe.fmf +0 -0
  137. {sts_libs-2.4.0 → sts_libs-2.4.2}/plans/vdo/tier1.fmf +0 -0
  138. {sts_libs-2.4.0 → sts_libs-2.4.2}/plans/vdo/tier2-high-memory.fmf +0 -0
  139. {sts_libs-2.4.0 → sts_libs-2.4.2}/plans/vdo/vdo_smoke.fmf +0 -0
  140. {sts_libs-2.4.0 → sts_libs-2.4.2}/python-sts-libs.spec +0 -0
  141. {sts_libs-2.4.0 → sts_libs-2.4.2}/renovate.json +0 -0
  142. {sts_libs-2.4.0 → sts_libs-2.4.2}/sts_libs/README.md +0 -0
  143. {sts_libs-2.4.0 → sts_libs-2.4.2}/sts_libs/__init__.py +0 -0
  144. {sts_libs-2.4.0 → sts_libs-2.4.2}/sts_libs/src/__init__.py +0 -0
  145. {sts_libs-2.4.0 → sts_libs-2.4.2}/sts_libs/src/sts/__init__.py +0 -0
  146. {sts_libs-2.4.0 → sts_libs-2.4.2}/sts_libs/src/sts/ahci.py +0 -0
  147. {sts_libs-2.4.0 → sts_libs-2.4.2}/sts_libs/src/sts/base.py +0 -0
  148. {sts_libs-2.4.0 → sts_libs-2.4.2}/sts_libs/src/sts/blockdevice.py +0 -0
  149. {sts_libs-2.4.0 → sts_libs-2.4.2}/sts_libs/src/sts/boom/__init__.py +0 -0
  150. {sts_libs-2.4.0 → sts_libs-2.4.2}/sts_libs/src/sts/boom/base.py +0 -0
  151. {sts_libs-2.4.0 → sts_libs-2.4.2}/sts_libs/src/sts/boom/entry.py +0 -0
  152. {sts_libs-2.4.0 → sts_libs-2.4.2}/sts_libs/src/sts/boom/errors.py +0 -0
  153. {sts_libs-2.4.0 → sts_libs-2.4.2}/sts_libs/src/sts/boom/host.py +0 -0
  154. {sts_libs-2.4.0 → sts_libs-2.4.2}/sts_libs/src/sts/boom/profile.py +0 -0
  155. {sts_libs-2.4.0 → sts_libs-2.4.2}/sts_libs/src/sts/dm/__init__.py +0 -0
  156. {sts_libs-2.4.0 → sts_libs-2.4.2}/sts_libs/src/sts/dm/base.py +0 -0
  157. {sts_libs-2.4.0 → sts_libs-2.4.2}/sts_libs/src/sts/dm/cache.py +0 -0
  158. {sts_libs-2.4.0 → sts_libs-2.4.2}/sts_libs/src/sts/dm/delay.py +0 -0
  159. {sts_libs-2.4.0 → sts_libs-2.4.2}/sts_libs/src/sts/dm/error.py +0 -0
  160. {sts_libs-2.4.0 → sts_libs-2.4.2}/sts_libs/src/sts/dm/errors.py +0 -0
  161. {sts_libs-2.4.0 → sts_libs-2.4.2}/sts_libs/src/sts/dm/flakey.py +0 -0
  162. {sts_libs-2.4.0 → sts_libs-2.4.2}/sts_libs/src/sts/dm/linear.py +0 -0
  163. {sts_libs-2.4.0 → sts_libs-2.4.2}/sts_libs/src/sts/dm/thin.py +0 -0
  164. {sts_libs-2.4.0 → sts_libs-2.4.2}/sts_libs/src/sts/dm/vdo.py +0 -0
  165. {sts_libs-2.4.0 → sts_libs-2.4.2}/sts_libs/src/sts/dm/zero.py +0 -0
  166. {sts_libs-2.4.0 → sts_libs-2.4.2}/sts_libs/src/sts/dmpd.py +0 -0
  167. {sts_libs-2.4.0 → sts_libs-2.4.2}/sts_libs/src/sts/fc.py +0 -0
  168. {sts_libs-2.4.0 → sts_libs-2.4.2}/sts_libs/src/sts/fio/__init__.py +0 -0
  169. {sts_libs-2.4.0 → sts_libs-2.4.2}/sts_libs/src/sts/fio/errors.py +0 -0
  170. {sts_libs-2.4.0 → sts_libs-2.4.2}/sts_libs/src/sts/fio/fio.py +0 -0
  171. {sts_libs-2.4.0 → sts_libs-2.4.2}/sts_libs/src/sts/fio/parameters.py +0 -0
  172. {sts_libs-2.4.0 → sts_libs-2.4.2}/sts_libs/src/sts/fixtures/__init__.py +0 -0
  173. {sts_libs-2.4.0 → sts_libs-2.4.2}/sts_libs/src/sts/fixtures/ahci_fixtures.py +0 -0
  174. {sts_libs-2.4.0 → sts_libs-2.4.2}/sts_libs/src/sts/fixtures/block_fixtures.py +0 -0
  175. {sts_libs-2.4.0 → sts_libs-2.4.2}/sts_libs/src/sts/fixtures/boom_fixtures.py +0 -0
  176. {sts_libs-2.4.0 → sts_libs-2.4.2}/sts_libs/src/sts/fixtures/common_fixtures.py +0 -0
  177. {sts_libs-2.4.0 → sts_libs-2.4.2}/sts_libs/src/sts/fixtures/dm_fixtures.py +0 -0
  178. {sts_libs-2.4.0 → sts_libs-2.4.2}/sts_libs/src/sts/fixtures/dmpd_fixtures.py +0 -0
  179. {sts_libs-2.4.0 → sts_libs-2.4.2}/sts_libs/src/sts/fixtures/fc_fixtures.py +0 -0
  180. {sts_libs-2.4.0 → sts_libs-2.4.2}/sts_libs/src/sts/fixtures/lvm_fixtures.py +0 -0
  181. {sts_libs-2.4.0 → sts_libs-2.4.2}/sts_libs/src/sts/fixtures/module_fixtures.py +0 -0
  182. {sts_libs-2.4.0 → sts_libs-2.4.2}/sts_libs/src/sts/fixtures/multipath_fixtures.py +0 -0
  183. {sts_libs-2.4.0 → sts_libs-2.4.2}/sts_libs/src/sts/fixtures/nvme_fixtures.py +0 -0
  184. {sts_libs-2.4.0 → sts_libs-2.4.2}/sts_libs/src/sts/fixtures/rdma_fixtures.py +0 -0
  185. {sts_libs-2.4.0 → sts_libs-2.4.2}/sts_libs/src/sts/fixtures/service_fixtures.py +0 -0
  186. {sts_libs-2.4.0 → sts_libs-2.4.2}/sts_libs/src/sts/fixtures/sg3_utils_fixtures.py +0 -0
  187. {sts_libs-2.4.0 → sts_libs-2.4.2}/sts_libs/src/sts/fixtures/snapm_fixtures.py +0 -0
  188. {sts_libs-2.4.0 → sts_libs-2.4.2}/sts_libs/src/sts/fixtures/stratis_fixtures.py +0 -0
  189. {sts_libs-2.4.0 → sts_libs-2.4.2}/sts_libs/src/sts/fixtures/target_fixtures.py +0 -0
  190. {sts_libs-2.4.0 → sts_libs-2.4.2}/sts_libs/src/sts/fixtures/udisks2_fixtures.py +0 -0
  191. {sts_libs-2.4.0 → sts_libs-2.4.2}/sts_libs/src/sts/hdparm.py +0 -0
  192. {sts_libs-2.4.0 → sts_libs-2.4.2}/sts_libs/src/sts/iscsi/__init__.py +0 -0
  193. {sts_libs-2.4.0 → sts_libs-2.4.2}/sts_libs/src/sts/iscsi/config.py +0 -0
  194. {sts_libs-2.4.0 → sts_libs-2.4.2}/sts_libs/src/sts/iscsi/device.py +0 -0
  195. {sts_libs-2.4.0 → sts_libs-2.4.2}/sts_libs/src/sts/iscsi/iscsiadm.py +0 -0
  196. {sts_libs-2.4.0 → sts_libs-2.4.2}/sts_libs/src/sts/iscsi/node.py +0 -0
  197. {sts_libs-2.4.0 → sts_libs-2.4.2}/sts_libs/src/sts/iscsi/parameters.py +0 -0
  198. {sts_libs-2.4.0 → sts_libs-2.4.2}/sts_libs/src/sts/iscsi/session.py +0 -0
  199. {sts_libs-2.4.0 → sts_libs-2.4.2}/sts_libs/src/sts/isns.py +0 -0
  200. {sts_libs-2.4.0 → sts_libs-2.4.2}/sts_libs/src/sts/lvm/__init__.py +0 -0
  201. {sts_libs-2.4.0 → sts_libs-2.4.2}/sts_libs/src/sts/lvm/base.py +0 -0
  202. {sts_libs-2.4.0 → sts_libs-2.4.2}/sts_libs/src/sts/lvm/errors.py +0 -0
  203. {sts_libs-2.4.0 → sts_libs-2.4.2}/sts_libs/src/sts/lvm/logical_volume.py +0 -0
  204. {sts_libs-2.4.0 → sts_libs-2.4.2}/sts_libs/src/sts/lvm/lvconf.py +0 -0
  205. {sts_libs-2.4.0 → sts_libs-2.4.2}/sts_libs/src/sts/lvm/options.py +0 -0
  206. {sts_libs-2.4.0 → sts_libs-2.4.2}/sts_libs/src/sts/lvm/physical_volume.py +0 -0
  207. {sts_libs-2.4.0 → sts_libs-2.4.2}/sts_libs/src/sts/lvm/reports.py +0 -0
  208. {sts_libs-2.4.0 → sts_libs-2.4.2}/sts_libs/src/sts/lvm/thin_pool.py +0 -0
  209. {sts_libs-2.4.0 → sts_libs-2.4.2}/sts_libs/src/sts/lvm/volume_group.py +0 -0
  210. {sts_libs-2.4.0 → sts_libs-2.4.2}/sts_libs/src/sts/marks.py +0 -0
  211. {sts_libs-2.4.0 → sts_libs-2.4.2}/sts_libs/src/sts/md.py +0 -0
  212. {sts_libs-2.4.0 → sts_libs-2.4.2}/sts_libs/src/sts/models.py +0 -0
  213. {sts_libs-2.4.0 → sts_libs-2.4.2}/sts_libs/src/sts/multipath.py +0 -0
  214. {sts_libs-2.4.0 → sts_libs-2.4.2}/sts_libs/src/sts/nbd.py +0 -0
  215. {sts_libs-2.4.0 → sts_libs-2.4.2}/sts_libs/src/sts/network/__init__.py +0 -0
  216. {sts_libs-2.4.0 → sts_libs-2.4.2}/sts_libs/src/sts/network/errors.py +0 -0
  217. {sts_libs-2.4.0 → sts_libs-2.4.2}/sts_libs/src/sts/network/interface.py +0 -0
  218. {sts_libs-2.4.0 → sts_libs-2.4.2}/sts_libs/src/sts/network/nm.py +0 -0
  219. {sts_libs-2.4.0 → sts_libs-2.4.2}/sts_libs/src/sts/null_blk.py +0 -0
  220. {sts_libs-2.4.0 → sts_libs-2.4.2}/sts_libs/src/sts/nvme.py +0 -0
  221. {sts_libs-2.4.0 → sts_libs-2.4.2}/sts_libs/src/sts/py.typed +0 -0
  222. {sts_libs-2.4.0 → sts_libs-2.4.2}/sts_libs/src/sts/qemu.py +0 -0
  223. {sts_libs-2.4.0 → sts_libs-2.4.2}/sts_libs/src/sts/rdma.py +0 -0
  224. {sts_libs-2.4.0 → sts_libs-2.4.2}/sts_libs/src/sts/scsi.py +0 -0
  225. {sts_libs-2.4.0 → sts_libs-2.4.2}/sts_libs/src/sts/scsi_debug.py +0 -0
  226. {sts_libs-2.4.0 → sts_libs-2.4.2}/sts_libs/src/sts/smartctl.py +0 -0
  227. {sts_libs-2.4.0 → sts_libs-2.4.2}/sts_libs/src/sts/snapm/__init__.py +0 -0
  228. {sts_libs-2.4.0 → sts_libs-2.4.2}/sts_libs/src/sts/snapm/base.py +0 -0
  229. {sts_libs-2.4.0 → sts_libs-2.4.2}/sts_libs/src/sts/snapm/errors.py +0 -0
  230. {sts_libs-2.4.0 → sts_libs-2.4.2}/sts_libs/src/sts/snapm/plugin.py +0 -0
  231. {sts_libs-2.4.0 → sts_libs-2.4.2}/sts_libs/src/sts/snapm/schedule.py +0 -0
  232. {sts_libs-2.4.0 → sts_libs-2.4.2}/sts_libs/src/sts/snapm/snapset.py +0 -0
  233. {sts_libs-2.4.0 → sts_libs-2.4.2}/sts_libs/src/sts/snapm/snapshot.py +0 -0
  234. {sts_libs-2.4.0 → sts_libs-2.4.2}/sts_libs/src/sts/stratis/__init__.py +0 -0
  235. {sts_libs-2.4.0 → sts_libs-2.4.2}/sts_libs/src/sts/stratis/base.py +0 -0
  236. {sts_libs-2.4.0 → sts_libs-2.4.2}/sts_libs/src/sts/stratis/errors.py +0 -0
  237. {sts_libs-2.4.0 → sts_libs-2.4.2}/sts_libs/src/sts/stratis/filesystem.py +0 -0
  238. {sts_libs-2.4.0 → sts_libs-2.4.2}/sts_libs/src/sts/stratis/pool.py +0 -0
  239. {sts_libs-2.4.0 → sts_libs-2.4.2}/sts_libs/src/sts/udevadm.py +0 -0
  240. {sts_libs-2.4.0 → sts_libs-2.4.2}/sts_libs/src/sts/udisks2.py +0 -0
  241. {sts_libs-2.4.0 → sts_libs-2.4.2}/sts_libs/src/sts/utils/__init__.py +0 -0
  242. {sts_libs-2.4.0 → sts_libs-2.4.2}/sts_libs/src/sts/utils/cli.py +0 -0
  243. {sts_libs-2.4.0 → sts_libs-2.4.2}/sts_libs/src/sts/utils/cmdline.py +0 -0
  244. {sts_libs-2.4.0 → sts_libs-2.4.2}/sts_libs/src/sts/utils/config.py +0 -0
  245. {sts_libs-2.4.0 → sts_libs-2.4.2}/sts_libs/src/sts/utils/errors.py +0 -0
  246. {sts_libs-2.4.0 → sts_libs-2.4.2}/sts_libs/src/sts/utils/files.py +0 -0
  247. {sts_libs-2.4.0 → sts_libs-2.4.2}/sts_libs/src/sts/utils/fmf_markers.py +0 -0
  248. {sts_libs-2.4.0 → sts_libs-2.4.2}/sts_libs/src/sts/utils/fstab.py +0 -0
  249. {sts_libs-2.4.0 → sts_libs-2.4.2}/sts_libs/src/sts/utils/modules.py +0 -0
  250. {sts_libs-2.4.0 → sts_libs-2.4.2}/sts_libs/src/sts/utils/nfs.py +0 -0
  251. {sts_libs-2.4.0 → sts_libs-2.4.2}/sts_libs/src/sts/utils/packages.py +0 -0
  252. {sts_libs-2.4.0 → sts_libs-2.4.2}/sts_libs/src/sts/utils/processes.py +0 -0
  253. {sts_libs-2.4.0 → sts_libs-2.4.2}/sts_libs/src/sts/utils/size.py +0 -0
  254. {sts_libs-2.4.0 → sts_libs-2.4.2}/sts_libs/src/sts/utils/string_extras.py +0 -0
  255. {sts_libs-2.4.0 → sts_libs-2.4.2}/sts_libs/src/sts/utils/sync.py +0 -0
  256. {sts_libs-2.4.0 → sts_libs-2.4.2}/sts_libs/src/sts/utils/syscheck.py +0 -0
  257. {sts_libs-2.4.0 → sts_libs-2.4.2}/sts_libs/src/sts/utils/system.py +0 -0
  258. {sts_libs-2.4.0 → sts_libs-2.4.2}/sts_libs/src/sts/utils/teststate.py +0 -0
  259. {sts_libs-2.4.0 → sts_libs-2.4.2}/sts_libs/src/sts/utils/tmt_pytest.py +0 -0
  260. {sts_libs-2.4.0 → sts_libs-2.4.2}/sts_libs/src/sts/utils/version.py +0 -0
  261. {sts_libs-2.4.0 → sts_libs-2.4.2}/sts_libs/src/sts/vdo.py +0 -0
  262. {sts_libs-2.4.0 → sts_libs-2.4.2}/sts_libs/src/sts/zram.py +0 -0
  263. {sts_libs-2.4.0 → sts_libs-2.4.2}/sts_libs/tests/__init__.py +0 -0
  264. {sts_libs-2.4.0 → sts_libs-2.4.2}/sts_libs/tests/boom/__init__.py +0 -0
  265. {sts_libs-2.4.0 → sts_libs-2.4.2}/sts_libs/tests/boom/test_base.py +0 -0
  266. {sts_libs-2.4.0 → sts_libs-2.4.2}/sts_libs/tests/boom/test_entry.py +0 -0
  267. {sts_libs-2.4.0 → sts_libs-2.4.2}/sts_libs/tests/boom/test_host.py +0 -0
  268. {sts_libs-2.4.0 → sts_libs-2.4.2}/sts_libs/tests/boom/test_profile.py +0 -0
  269. {sts_libs-2.4.0 → sts_libs-2.4.2}/sts_libs/tests/conftest.py +0 -0
  270. {sts_libs-2.4.0 → sts_libs-2.4.2}/sts_libs/tests/data/lvs_report_multi.json +0 -0
  271. {sts_libs-2.4.0 → sts_libs-2.4.2}/sts_libs/tests/data/lvs_report_single.json +0 -0
  272. {sts_libs-2.4.0 → sts_libs-2.4.2}/sts_libs/tests/data/multipathd_show_map.json +0 -0
  273. {sts_libs-2.4.0 → sts_libs-2.4.2}/sts_libs/tests/data/nvme_list.json +0 -0
  274. {sts_libs-2.4.0 → sts_libs-2.4.2}/sts_libs/tests/dm/__init__.py +0 -0
  275. {sts_libs-2.4.0 → sts_libs-2.4.2}/sts_libs/tests/dm/test_base.py +0 -0
  276. {sts_libs-2.4.0 → sts_libs-2.4.2}/sts_libs/tests/dm/test_cache_vdo.py +0 -0
  277. {sts_libs-2.4.0 → sts_libs-2.4.2}/sts_libs/tests/dm/test_delay_flakey.py +0 -0
  278. {sts_libs-2.4.0 → sts_libs-2.4.2}/sts_libs/tests/dm/test_linear.py +0 -0
  279. {sts_libs-2.4.0 → sts_libs-2.4.2}/sts_libs/tests/dm/test_thin.py +0 -0
  280. {sts_libs-2.4.0 → sts_libs-2.4.2}/sts_libs/tests/fio/__init__.py +0 -0
  281. {sts_libs-2.4.0 → sts_libs-2.4.2}/sts_libs/tests/fio/test_fio.py +0 -0
  282. {sts_libs-2.4.0 → sts_libs-2.4.2}/sts_libs/tests/fio/test_parameters.py +0 -0
  283. {sts_libs-2.4.0 → sts_libs-2.4.2}/sts_libs/tests/fixtures/__init__.py +0 -0
  284. {sts_libs-2.4.0 → sts_libs-2.4.2}/sts_libs/tests/fixtures/test_module_fixtures.py +0 -0
  285. {sts_libs-2.4.0 → sts_libs-2.4.2}/sts_libs/tests/fixtures/test_multipath_fixtures.py +0 -0
  286. {sts_libs-2.4.0 → sts_libs-2.4.2}/sts_libs/tests/fixtures/test_service_fixtures.py +0 -0
  287. {sts_libs-2.4.0 → sts_libs-2.4.2}/sts_libs/tests/helpers/__init__.py +0 -0
  288. {sts_libs-2.4.0 → sts_libs-2.4.2}/sts_libs/tests/helpers/test_boom_boot.py +0 -0
  289. {sts_libs-2.4.0 → sts_libs-2.4.2}/sts_libs/tests/helpers/test_root_lvm.py +0 -0
  290. {sts_libs-2.4.0 → sts_libs-2.4.2}/sts_libs/tests/helpers/test_snapm_boot.py +0 -0
  291. {sts_libs-2.4.0 → sts_libs-2.4.2}/sts_libs/tests/helpers/test_tmt_reboot.py +0 -0
  292. {sts_libs-2.4.0 → sts_libs-2.4.2}/sts_libs/tests/iscsi/__init__.py +0 -0
  293. {sts_libs-2.4.0 → sts_libs-2.4.2}/sts_libs/tests/iscsi/conftest.py +0 -0
  294. {sts_libs-2.4.0 → sts_libs-2.4.2}/sts_libs/tests/iscsi/test_config.py +0 -0
  295. {sts_libs-2.4.0 → sts_libs-2.4.2}/sts_libs/tests/iscsi/test_device.py +0 -0
  296. {sts_libs-2.4.0 → sts_libs-2.4.2}/sts_libs/tests/iscsi/test_iscsiadm.py +0 -0
  297. {sts_libs-2.4.0 → sts_libs-2.4.2}/sts_libs/tests/iscsi/test_parameters.py +0 -0
  298. {sts_libs-2.4.0 → sts_libs-2.4.2}/sts_libs/tests/iscsi/test_session.py +0 -0
  299. {sts_libs-2.4.0 → sts_libs-2.4.2}/sts_libs/tests/lvm/__init__.py +0 -0
  300. {sts_libs-2.4.0 → sts_libs-2.4.2}/sts_libs/tests/lvm/test_base.py +0 -0
  301. {sts_libs-2.4.0 → sts_libs-2.4.2}/sts_libs/tests/lvm/test_logical_volume.py +0 -0
  302. {sts_libs-2.4.0 → sts_libs-2.4.2}/sts_libs/tests/lvm/test_lvconf.py +0 -0
  303. {sts_libs-2.4.0 → sts_libs-2.4.2}/sts_libs/tests/lvm/test_options.py +0 -0
  304. {sts_libs-2.4.0 → sts_libs-2.4.2}/sts_libs/tests/lvm/test_physical_volume.py +0 -0
  305. {sts_libs-2.4.0 → sts_libs-2.4.2}/sts_libs/tests/lvm/test_reports.py +0 -0
  306. {sts_libs-2.4.0 → sts_libs-2.4.2}/sts_libs/tests/lvm/test_thin_pool.py +0 -0
  307. {sts_libs-2.4.0 → sts_libs-2.4.2}/sts_libs/tests/lvm/test_volume_group.py +0 -0
  308. {sts_libs-2.4.0 → sts_libs-2.4.2}/sts_libs/tests/network/__init__.py +0 -0
  309. {sts_libs-2.4.0 → sts_libs-2.4.2}/sts_libs/tests/network/test_interface.py +0 -0
  310. {sts_libs-2.4.0 → sts_libs-2.4.2}/sts_libs/tests/network/test_nm.py +0 -0
  311. {sts_libs-2.4.0 → sts_libs-2.4.2}/sts_libs/tests/snapm/__init__.py +0 -0
  312. {sts_libs-2.4.0 → sts_libs-2.4.2}/sts_libs/tests/snapm/test_base.py +0 -0
  313. {sts_libs-2.4.0 → sts_libs-2.4.2}/sts_libs/tests/snapm/test_plugin.py +0 -0
  314. {sts_libs-2.4.0 → sts_libs-2.4.2}/sts_libs/tests/snapm/test_schedule.py +0 -0
  315. {sts_libs-2.4.0 → sts_libs-2.4.2}/sts_libs/tests/snapm/test_snapset.py +0 -0
  316. {sts_libs-2.4.0 → sts_libs-2.4.2}/sts_libs/tests/snapm/test_snapshot.py +0 -0
  317. {sts_libs-2.4.0 → sts_libs-2.4.2}/sts_libs/tests/stratis/__init__.py +0 -0
  318. {sts_libs-2.4.0 → sts_libs-2.4.2}/sts_libs/tests/stratis/test_base.py +0 -0
  319. {sts_libs-2.4.0 → sts_libs-2.4.2}/sts_libs/tests/stratis/test_filesystem.py +0 -0
  320. {sts_libs-2.4.0 → sts_libs-2.4.2}/sts_libs/tests/stratis/test_pool.py +0 -0
  321. {sts_libs-2.4.0 → sts_libs-2.4.2}/sts_libs/tests/test_ahci.py +0 -0
  322. {sts_libs-2.4.0 → sts_libs-2.4.2}/sts_libs/tests/test_base.py +0 -0
  323. {sts_libs-2.4.0 → sts_libs-2.4.2}/sts_libs/tests/test_block_fixtures.py +0 -0
  324. {sts_libs-2.4.0 → sts_libs-2.4.2}/sts_libs/tests/test_blockdevice.py +0 -0
  325. {sts_libs-2.4.0 → sts_libs-2.4.2}/sts_libs/tests/test_cmdline.py +0 -0
  326. {sts_libs-2.4.0 → sts_libs-2.4.2}/sts_libs/tests/test_fc.py +0 -0
  327. {sts_libs-2.4.0 → sts_libs-2.4.2}/sts_libs/tests/test_hdparm.py +0 -0
  328. {sts_libs-2.4.0 → sts_libs-2.4.2}/sts_libs/tests/test_marks.py +0 -0
  329. {sts_libs-2.4.0 → sts_libs-2.4.2}/sts_libs/tests/test_md.py +0 -0
  330. {sts_libs-2.4.0 → sts_libs-2.4.2}/sts_libs/tests/test_models.py +0 -0
  331. {sts_libs-2.4.0 → sts_libs-2.4.2}/sts_libs/tests/test_module_fixtures.py +0 -0
  332. {sts_libs-2.4.0 → sts_libs-2.4.2}/sts_libs/tests/test_multipath.py +0 -0
  333. {sts_libs-2.4.0 → sts_libs-2.4.2}/sts_libs/tests/test_multipath_report.py +0 -0
  334. {sts_libs-2.4.0 → sts_libs-2.4.2}/sts_libs/tests/test_nbd.py +0 -0
  335. {sts_libs-2.4.0 → sts_libs-2.4.2}/sts_libs/tests/test_null_blk.py +0 -0
  336. {sts_libs-2.4.0 → sts_libs-2.4.2}/sts_libs/tests/test_nvme.py +0 -0
  337. {sts_libs-2.4.0 → sts_libs-2.4.2}/sts_libs/tests/test_packages.py +0 -0
  338. {sts_libs-2.4.0 → sts_libs-2.4.2}/sts_libs/tests/test_rdma.py +0 -0
  339. {sts_libs-2.4.0 → sts_libs-2.4.2}/sts_libs/tests/test_scsi.py +0 -0
  340. {sts_libs-2.4.0 → sts_libs-2.4.2}/sts_libs/tests/test_scsi_debug.py +0 -0
  341. {sts_libs-2.4.0 → sts_libs-2.4.2}/sts_libs/tests/test_smartctl.py +0 -0
  342. {sts_libs-2.4.0 → sts_libs-2.4.2}/sts_libs/tests/test_string_extras.py +0 -0
  343. {sts_libs-2.4.0 → sts_libs-2.4.2}/sts_libs/tests/test_syscheck.py +0 -0
  344. {sts_libs-2.4.0 → sts_libs-2.4.2}/sts_libs/tests/test_system.py +0 -0
  345. {sts_libs-2.4.0 → sts_libs-2.4.2}/sts_libs/tests/test_udisks2.py +0 -0
  346. {sts_libs-2.4.0 → sts_libs-2.4.2}/sts_libs/tests/test_vdo.py +0 -0
  347. {sts_libs-2.4.0 → sts_libs-2.4.2}/sts_libs/tests/test_version.py +0 -0
  348. {sts_libs-2.4.0 → sts_libs-2.4.2}/sts_libs/tests/test_zram.py +0 -0
  349. {sts_libs-2.4.0 → sts_libs-2.4.2}/sts_libs/tests/utils/__init__.py +0 -0
  350. {sts_libs-2.4.0 → sts_libs-2.4.2}/sts_libs/tests/utils/test_cli.py +0 -0
  351. {sts_libs-2.4.0 → sts_libs-2.4.2}/sts_libs/tests/utils/test_files.py +0 -0
  352. {sts_libs-2.4.0 → sts_libs-2.4.2}/sts_libs/tests/utils/test_fmf_markers.py +0 -0
  353. {sts_libs-2.4.0 → sts_libs-2.4.2}/sts_libs/tests/utils/test_fstab.py +0 -0
  354. {sts_libs-2.4.0 → sts_libs-2.4.2}/sts_libs/tests/utils/test_modules.py +0 -0
  355. {sts_libs-2.4.0 → sts_libs-2.4.2}/sts_libs/tests/utils/test_nfs.py +0 -0
  356. {sts_libs-2.4.0 → sts_libs-2.4.2}/sts_libs/tests/utils/test_processes.py +0 -0
  357. {sts_libs-2.4.0 → sts_libs-2.4.2}/sts_libs/tests/utils/test_size.py +0 -0
  358. {sts_libs-2.4.0 → sts_libs-2.4.2}/sts_libs/tests/utils/test_sync.py +0 -0
  359. {sts_libs-2.4.0 → sts_libs-2.4.2}/sts_libs/tests/utils/test_teststate.py +0 -0
  360. {sts_libs-2.4.0 → sts_libs-2.4.2}/sts_libs/tests/utils/test_tmt_pytest.py +0 -0
  361. {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/ahci/conftest.py +0 -0
  362. {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/ahci/main.fmf +0 -0
  363. {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/ahci/test_benchmarks.py +0 -0
  364. {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/ahci/test_detection.py +0 -0
  365. {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/ahci/test_error_recovery.py +0 -0
  366. {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/ahci/test_ncq.py +0 -0
  367. {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/ahci/test_sanity.py +0 -0
  368. {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/block/cgroup/main.fmf +0 -0
  369. {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/block/cgroup/test_blkio_throttle.py +0 -0
  370. {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/block/conftest.py +0 -0
  371. {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/block/cpu_hotplug/main.fmf +0 -0
  372. {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/block/identity/main.fmf +0 -0
  373. {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/block/identity/test_diskstats.py +0 -0
  374. {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/block/io_scheduler/main.fmf +0 -0
  375. {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/block/io_scheduler/test_scheduler_switch.py +0 -0
  376. {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/block/loop/main.fmf +0 -0
  377. {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/block/loop/test_partition_uevent.py +0 -0
  378. {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/block/main.fmf +0 -0
  379. {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/block/md/conftest.py +0 -0
  380. {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/block/md/main.fmf +0 -0
  381. {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/block/md/test_md_discard.py +0 -0
  382. {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/block/md/test_md_levels.py +0 -0
  383. {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/block/misc/main.fmf +0 -0
  384. {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/block/misc/test_scsi_state_transition.py +0 -0
  385. {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/block/nbd/main.fmf +0 -0
  386. {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/block/nbd/test_nbd_unix_socket.py +0 -0
  387. {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/block/null_blk/main.fmf +0 -0
  388. {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/block/null_blk/test_null_blk_basic.py +0 -0
  389. {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/block/null_blk/test_null_blk_configfs.py +0 -0
  390. {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/block/scsi_debug/main.fmf +0 -0
  391. {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/block/scsi_debug/test_delete_scan.py +0 -0
  392. {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/block/scsi_debug/test_dif_dix_stress.py +0 -0
  393. {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/block/scsi_debug/test_shared_host_tags.py +0 -0
  394. {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/block/scsi_debug/test_unmap.py +0 -0
  395. {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/block/zoned/main.fmf +0 -0
  396. {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/block/zoned/test_zoned_devices.py +0 -0
  397. {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/block/zram/main.fmf +0 -0
  398. {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/block/zram/test_zram_compression.py +0 -0
  399. {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/boom/boom_sanity.fmf +0 -0
  400. {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/boom/boom_sanity.py +0 -0
  401. {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/boom/snapshot_boot.fmf +0 -0
  402. {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/boom/test_boom_snapshot_boot.py +0 -0
  403. {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/boom/upgrade/main.fmf +0 -0
  404. {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/boom/upgrade/test_boom_upgrade_boot.py +0 -0
  405. {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/bootc_additional_packages/Containerfile +0 -0
  406. {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/bootc_additional_packages/Containerfile.iscsi +0 -0
  407. {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/bootc_additional_packages/Containerfile.stratis +0 -0
  408. {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/bootc_additional_packages/Containerfile.udisks2 +0 -0
  409. {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/bootc_additional_packages/common-setup.sh +0 -0
  410. {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/bootc_additional_packages/main.fmf +0 -0
  411. {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/bootc_additional_packages/runtest.sh +0 -0
  412. {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/conftest.py +0 -0
  413. {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/dm/cache/main.fmf +0 -0
  414. {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/dm/cache/test_dm_cache.py +0 -0
  415. {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/dm/delay/main.fmf +0 -0
  416. {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/dm/delay/test_dm_delay.py +0 -0
  417. {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/dm/error/main.fmf +0 -0
  418. {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/dm/error/test_dm_error.py +0 -0
  419. {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/dm/flakey/main.fmf +0 -0
  420. {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/dm/flakey/test_dm_flakey.py +0 -0
  421. {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/dm/linear/main.fmf +0 -0
  422. {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/dm/linear/test_linear_target.py +0 -0
  423. {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/dm/main.fmf +0 -0
  424. {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/dm/thinp/main.fmf +0 -0
  425. {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/dm/thinp/test_dm_thin.py +0 -0
  426. {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/dm/vdo/main.fmf +0 -0
  427. {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/dm/vdo/test_dm_vdo.py +0 -0
  428. {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/dm/zero/main.fmf +0 -0
  429. {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/dm/zero/test_dm_zero.py +0 -0
  430. {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/dmpd/cache/cache_check.fmf +0 -0
  431. {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/dmpd/cache/cache_dump.fmf +0 -0
  432. {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/dmpd/cache/cache_metadata_size.fmf +0 -0
  433. {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/dmpd/cache/cache_repair.fmf +0 -0
  434. {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/dmpd/cache/cache_restore.fmf +0 -0
  435. {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/dmpd/cache/main.fmf +0 -0
  436. {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/dmpd/cache/test_cache_check.py +0 -0
  437. {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/dmpd/cache/test_cache_dump.py +0 -0
  438. {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/dmpd/cache/test_cache_metadata_size.py +0 -0
  439. {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/dmpd/cache/test_cache_repair.py +0 -0
  440. {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/dmpd/cache/test_cache_restore.py +0 -0
  441. {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/dmpd/conftest.py +0 -0
  442. {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/dmpd/thin/conftest.py +0 -0
  443. {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/dmpd/thin/main.fmf +0 -0
  444. {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/dmpd/thin/test_thin_check.py +0 -0
  445. {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/dmpd/thin/test_thin_delta.py +0 -0
  446. {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/dmpd/thin/test_thin_dump.py +0 -0
  447. {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/dmpd/thin/test_thin_ls.py +0 -0
  448. {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/dmpd/thin/test_thin_metadata_size.py +0 -0
  449. {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/dmpd/thin/test_thin_repair.py +0 -0
  450. {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/dmpd/thin/test_thin_restore.py +0 -0
  451. {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/dmpd/thin/test_thin_trim.py +0 -0
  452. {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/dmpd/thin/thin_check.fmf +0 -0
  453. {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/dmpd/thin/thin_delta.fmf +0 -0
  454. {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/dmpd/thin/thin_ls.fmf +0 -0
  455. {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/dmpd/thin/thin_metadata_size.fmf +0 -0
  456. {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/dmpd/thin/thin_repair.fmf +0 -0
  457. {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/dmpd/thin/thin_restore.fmf +0 -0
  458. {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/dmpd/thin/thin_trim.fmf +0 -0
  459. {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/fc/conftest.py +0 -0
  460. {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/fc/full/online_offline/basic.fmf +0 -0
  461. {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/fc/full/online_offline/main.fmf +0 -0
  462. {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/fc/full/online_offline/online_offline.py +0 -0
  463. {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/fc/full/online_offline/stress.fmf +0 -0
  464. {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/fc/full/rescan_deleted_disk/main.fmf +0 -0
  465. {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/fc/full/rescan_deleted_disk/rescan_deleted_disk.py +0 -0
  466. {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/fc/main.fmf +0 -0
  467. {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/helpers/__init__.py +0 -0
  468. {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/helpers/boom_boot.py +0 -0
  469. {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/helpers/root_lvm.py +0 -0
  470. {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/helpers/snapm_boot.py +0 -0
  471. {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/helpers/stratis_pool.py +0 -0
  472. {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/helpers/tmt_reboot.py +0 -0
  473. {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/helpers/vdo.py +0 -0
  474. {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/iscsi/conftest.py +0 -0
  475. {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/iscsi/fio/conftest.py +0 -0
  476. {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/iscsi/fio/fio_basic.fmf +0 -0
  477. {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/iscsi/fio/fio_multipath_basic.fmf +0 -0
  478. {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/iscsi/fio/fio_multipath_stress.fmf +0 -0
  479. {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/iscsi/fio/fio_stress.fmf +0 -0
  480. {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/iscsi/fio/main.fmf +0 -0
  481. {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/iscsi/fio/test_fio.py +0 -0
  482. {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/iscsi/libiscsi/local/main.fmf +0 -0
  483. {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/iscsi/libiscsi/main.fmf +0 -0
  484. {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/iscsi/login-logout-stress/login-logout-stress.py +0 -0
  485. {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/iscsi/login-logout-stress/main.fmf +0 -0
  486. {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/iscsi/main.fmf +0 -0
  487. {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/iscsi/many-luns/main.fmf +0 -0
  488. {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/iscsi/parameters/main.fmf +0 -0
  489. {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/iscsi/read_debugfs/main.fmf +0 -0
  490. {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/iscsi/read_debugfs/read_debugfs.py +0 -0
  491. {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/lsm/targetd/conftest.py +0 -0
  492. {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/lsm/targetd/main.fmf +0 -0
  493. {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/lsm/targetd/test_targetd.py +0 -0
  494. {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/lsscsi/conftest.py +0 -0
  495. {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/lsscsi/core/main.fmf +0 -0
  496. {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/lsscsi/core/test_lsscsi_basic.py +0 -0
  497. {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/lsscsi/main.fmf +0 -0
  498. {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/lsscsi/nvme_detection/main.fmf +0 -0
  499. {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/lsscsi/nvme_detection/test_nvme_detection.py +0 -0
  500. {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/lvm/conftest.py +0 -0
  501. {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/lvm/thinp/bugs/test_discard_corruption.py +0 -0
  502. {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/lvm/thinp/bugs/test_stripe_blkdiscard.py +0 -0
  503. {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/lvm/thinp/bugs/test_thinpool_error_target_meta.py +0 -0
  504. {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/lvm/thinp/conftest.py +0 -0
  505. {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/lvm/thinp/main.fmf +0 -0
  506. {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/lvm/thinp/test_discard_perf.py +0 -0
  507. {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/lvm/thinp/test_lvchange_thin.py +0 -0
  508. {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/lvm/thinp/test_lvconf_thinp.py +0 -0
  509. {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/lvm/thinp/test_lvconvert_thin_lv.py +0 -0
  510. {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/lvm/thinp/test_lvconvert_thinpool.py +0 -0
  511. {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/lvm/thinp/test_lvcreate_linear.py +0 -0
  512. {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/lvm/thinp/test_lvcreate_mirror.py +0 -0
  513. {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/lvm/thinp/test_lvcreate_poolmetadataspare.py +0 -0
  514. {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/lvm/thinp/test_lvcreate_stripe.py +0 -0
  515. {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/lvm/thinp/test_lvextend.py +0 -0
  516. {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/lvm/thinp/test_lvm_thinp_misc.py +0 -0
  517. {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/lvm/thinp/test_lvm_thinp_modules.py +0 -0
  518. {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/lvm/thinp/test_lvreduce_thinp.py +0 -0
  519. {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/lvm/thinp/test_lvremove_thinp.py +0 -0
  520. {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/lvm/thinp/test_lvrename_thinp.py +0 -0
  521. {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/lvm/thinp/test_lvresize_thinp.py +0 -0
  522. {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/lvm/thinp/test_lvs_thinp.py +0 -0
  523. {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/lvm/thinp/test_lvscan_thinp.py +0 -0
  524. {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/lvm/thinp/test_pool_capacity.py +0 -0
  525. {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/lvm/thinp/test_thin_perf.py +0 -0
  526. {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/main.fmf +0 -0
  527. {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/multipath/basic.fmf +0 -0
  528. {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/multipath/service.fmf +0 -0
  529. {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/multipath/test_multipath_basic.py +0 -0
  530. {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/multipath/test_multipath_service.py +0 -0
  531. {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/pytest.ini +0 -0
  532. {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/rdma/bugs/customers/customer_1/issue_23967_verify_speed.py +0 -0
  533. {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/rdma/bugs/customers/customer_1/main.fmf +0 -0
  534. {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/rdma/bugs/customers/main.fmf +0 -0
  535. {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/rdma/bugs/main.fmf +0 -0
  536. {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/rdma/bugs/others/main.fmf +0 -0
  537. {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/rdma/bugs/others/reproducers.py +0 -0
  538. {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/rdma/main.fmf +0 -0
  539. {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/rdma/pyverbs-tests/core/main.fmf +0 -0
  540. {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/rdma/pyverbs-tests/core/pyverbs-tests.py +0 -0
  541. {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/rdma/sriov/core/main.fmf +0 -0
  542. {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/rdma/sriov/core/sriov.py +0 -0
  543. {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/scsi/conftest.py +0 -0
  544. {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/scsi/main.fmf +0 -0
  545. {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/scsi/test_hotplug.py +0 -0
  546. {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/scsi/test_io.py +0 -0
  547. {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/sg3_utils/conftest.py +0 -0
  548. {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/sg3_utils/main.fmf +0 -0
  549. {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/sg3_utils/regression/main.fmf +0 -0
  550. {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/sg3_utils/regression/test_documentation_check/main.fmf +0 -0
  551. {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/sg3_utils/regression/test_documentation_check/test_documentation_check.py +0 -0
  552. {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/sg3_utils/regression/test_rescan_deletes_dev_null/main.fmf +0 -0
  553. {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
  554. {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/sg3_utils/regression/test_rescan_ignore_rev/main.fmf +0 -0
  555. {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
  556. {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/sg3_utils/regression/test_rescan_lun_scanning/main.fmf +0 -0
  557. {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
  558. {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/sg3_utils/regression/test_rescan_removes_readds/main.fmf +0 -0
  559. {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
  560. {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/sg3_utils/regression/test_rescan_syntax_error/main.fmf +0 -0
  561. {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
  562. {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/sg3_utils/regression/test_rescan_too_many_args/main.fmf +0 -0
  563. {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
  564. {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/sg3_utils/regression/test_sg_map26_32_devices/main.fmf +0 -0
  565. {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
  566. {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/sg3_utils/regression/test_sginfo_dev_snapshot/main.fmf +0 -0
  567. {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
  568. {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/sg3_utils/sanity/main.fmf +0 -0
  569. {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/sg3_utils/sanity/test_sg3_dd/main.fmf +0 -0
  570. {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/sg3_utils/sanity/test_sg3_dd/test_sg3_dd.py +0 -0
  571. {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/sg3_utils/sanity/test_sg_get_config/main.fmf +0 -0
  572. {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
  573. {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/sg3_utils/sanity/test_sg_ident/main.fmf +0 -0
  574. {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/sg3_utils/sanity/test_sg_ident/test_sg_ident.py +0 -0
  575. {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/sg3_utils/sanity/test_sg_inq/main.fmf +0 -0
  576. {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/sg3_utils/sanity/test_sg_inq/test_sg_inq.py +0 -0
  577. {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/sg3_utils/sanity/test_sg_logs/main.fmf +0 -0
  578. {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/sg3_utils/sanity/test_sg_logs/test_sg_logs.py +0 -0
  579. {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/sg3_utils/sanity/test_sg_luns/main.fmf +0 -0
  580. {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/sg3_utils/sanity/test_sg_luns/test_sg_luns.py +0 -0
  581. {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/sg3_utils/sanity/test_sg_map/main.fmf +0 -0
  582. {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/sg3_utils/sanity/test_sg_map/test_sg_map.py +0 -0
  583. {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/sg3_utils/sanity/test_sg_modes/main.fmf +0 -0
  584. {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/sg3_utils/sanity/test_sg_modes/test_sg_modes.py +0 -0
  585. {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/sg3_utils/sanity/test_sg_opcodes/main.fmf +0 -0
  586. {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/sg3_utils/sanity/test_sg_opcodes/test_sg_opcodes.py +0 -0
  587. {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/sg3_utils/sanity/test_sg_persist/main.fmf +0 -0
  588. {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/sg3_utils/sanity/test_sg_persist/test_sg_persist.py +0 -0
  589. {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/sg3_utils/sanity/test_sg_rbuf/main.fmf +0 -0
  590. {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/sg3_utils/sanity/test_sg_rbuf/test_sg_rbuf.py +0 -0
  591. {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/sg3_utils/sanity/test_sg_read/main.fmf +0 -0
  592. {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/sg3_utils/sanity/test_sg_read/test_sg_read.py +0 -0
  593. {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/sg3_utils/sanity/test_sg_read_buffer/main.fmf +0 -0
  594. {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
  595. {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/sg3_utils/sanity/test_sg_read_long/main.fmf +0 -0
  596. {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
  597. {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/sg3_utils/sanity/test_sg_readcap/main.fmf +0 -0
  598. {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/sg3_utils/sanity/test_sg_readcap/test_sg_readcap.py +0 -0
  599. {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/sg3_utils/sanity/test_sg_safte/main.fmf +0 -0
  600. {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/sg3_utils/sanity/test_sg_safte/test_sg_safte.py +0 -0
  601. {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/sg3_utils/sanity/test_sg_sat_identify/main.fmf +0 -0
  602. {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
  603. {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/sg3_utils/sanity/test_sg_scan/main.fmf +0 -0
  604. {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/sg3_utils/sanity/test_sg_scan/test_sg_scan.py +0 -0
  605. {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/sg3_utils/sanity/test_sg_senddiag/main.fmf +0 -0
  606. {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/sg3_utils/sanity/test_sg_senddiag/test_sg_senddiag.py +0 -0
  607. {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/sg3_utils/sanity/test_sg_ses/main.fmf +0 -0
  608. {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/sg3_utils/sanity/test_sg_ses/test_sg_ses.py +0 -0
  609. {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/sg3_utils/sanity/test_sg_start/main.fmf +0 -0
  610. {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/sg3_utils/sanity/test_sg_start/test_sg_start.py +0 -0
  611. {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/sg3_utils/sanity/test_sg_sync/main.fmf +0 -0
  612. {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/sg3_utils/sanity/test_sg_sync/test_sg_sync.py +0 -0
  613. {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/sg3_utils/sanity/test_sg_turs/main.fmf +0 -0
  614. {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/sg3_utils/sanity/test_sg_turs/test_sg_turs.py +0 -0
  615. {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/sg3_utils/sanity/test_sg_verify/main.fmf +0 -0
  616. {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/sg3_utils/sanity/test_sg_verify/test_sg_verify.py +0 -0
  617. {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/sg3_utils/sanity/test_sg_vpd/main.fmf +0 -0
  618. {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/sg3_utils/sanity/test_sg_vpd/test_sg_vpd.py +0 -0
  619. {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/sg3_utils/sanity/test_sg_write_buffer/main.fmf +0 -0
  620. {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
  621. {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/sg3_utils/sanity/test_sginfo/main.fmf +0 -0
  622. {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/sg3_utils/sanity/test_sginfo/test_sginfo.py +0 -0
  623. {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/sg3_utils/sanity/version_help/main.fmf +0 -0
  624. {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/sg3_utils/sanity/version_help/test_version_help.py +0 -0
  625. {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/snapm/conftest.py +0 -0
  626. {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/snapm/snapm_sanity/conftest.py +0 -0
  627. {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/snapm/snapm_sanity/main.fmf +0 -0
  628. {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/snapm/snapm_sanity/test_snapm_diff.py +0 -0
  629. {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/snapm/snapm_sanity/test_snapm_mount.py +0 -0
  630. {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/snapm/snapm_sanity/test_snapm_sanity.py +0 -0
  631. {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/snapm/snapm_sanity/test_snapm_schedule.py +0 -0
  632. {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/snapm/snapm_sanity/test_snapm_snapset.py +0 -0
  633. {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/snapm/snapshot_boot/main.fmf +0 -0
  634. {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/snapm/snapshot_boot/test_snapm_snapshot_boot.py +0 -0
  635. {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/snapm/upgrade/main.fmf +0 -0
  636. {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/snapm/upgrade/test_snapm_upgrade.py +0 -0
  637. {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/snapm/upgrade/test_snapm_upgrade_boot.fmf +0 -0
  638. {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/snapm/upgrade/test_snapm_upgrade_boot.py +0 -0
  639. {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/stratis/basic/conftest.py +0 -0
  640. {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/stratis/basic/test_blockdev.fmf +0 -0
  641. {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/stratis/basic/test_blockdev.py +0 -0
  642. {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/stratis/basic/test_daemon.fmf +0 -0
  643. {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/stratis/basic/test_daemon.py +0 -0
  644. {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/stratis/basic/test_filesystem.fmf +0 -0
  645. {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/stratis/basic/test_filesystem.py +0 -0
  646. {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/stratis/basic/test_key.fmf +0 -0
  647. {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/stratis/basic/test_key.py +0 -0
  648. {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/stratis/basic/test_pool.fmf +0 -0
  649. {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/stratis/basic/test_pool.py +0 -0
  650. {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/stratis/basic/test_pool_advanced.fmf +0 -0
  651. {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/stratis/basic/test_pool_advanced.py +0 -0
  652. {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/stratis/basic/test_pool_encryption.fmf +0 -0
  653. {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/stratis/basic/test_pool_encryption.py +0 -0
  654. {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/stratis/basic/test_pool_operations.fmf +0 -0
  655. {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/stratis/basic/test_pool_operations.py +0 -0
  656. {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/stratis/conftest.py +0 -0
  657. {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/stratis/main.fmf +0 -0
  658. {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/stratis/multihost/main.fmf +0 -0
  659. {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/stratis/multihost/test_stratis_multihost.py +0 -0
  660. {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/stratis/persistence/main.fmf +0 -0
  661. {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/stratis/persistence/test_stratis_fstab_persistence.py +0 -0
  662. {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/stratis/upgrade/main.fmf +0 -0
  663. {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/stratis/upgrade/test_stratis_upgrade.py +0 -0
  664. {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/sts-prepare/main.fmf +0 -0
  665. {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/sts-prepare/runtest.sh +0 -0
  666. {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/target/core/backstores/backstores.py +0 -0
  667. {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/target/core/backstores/main.fmf +0 -0
  668. {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/target/core/config_mgmt/config_management.py +0 -0
  669. {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/target/core/config_mgmt/main.fmf +0 -0
  670. {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/target/core/global_config/test_auto_use_daemon.py +0 -0
  671. {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/target/core/global_config/test_global_parameters.py +0 -0
  672. {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/target/core/global_config/test_global_parameters_sanity.py +0 -0
  673. {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/target/core/iscsi/iscsi_target.py +0 -0
  674. {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/target/core/iscsi/main.fmf +0 -0
  675. {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/target/core/main.fmf +0 -0
  676. {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/target/core/target_modules/main.fmf +0 -0
  677. {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/target/core/target_modules/target_core_mod.py +0 -0
  678. {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/target/core/target_service/main.fmf +0 -0
  679. {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/target/core/target_service/target_service.py +0 -0
  680. {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/target/full/auth/chap.py +0 -0
  681. {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/target/full/auth/main.fmf +0 -0
  682. {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/target/full/loopback/main.fmf +0 -0
  683. {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/target/full/loopback/test_loopback.py +0 -0
  684. {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/target/full/main.fmf +0 -0
  685. {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/target/full/persistent-reservation/conftest.py +0 -0
  686. {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/target/full/persistent-reservation/iscsi_pr.fmf +0 -0
  687. {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/target/full/persistent-reservation/loopback_pr.fmf +0 -0
  688. {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/target/full/persistent-reservation/main.fmf +0 -0
  689. {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/target/full/persistent-reservation/test_loopback_pr.py +0 -0
  690. {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/target/full/restoreconfig/main.fmf +0 -0
  691. {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/target/full/restoreconfig/restoreconfig.py +0 -0
  692. {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/target/isns/isns-sanity.py +0 -0
  693. {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/target/isns/main.fmf +0 -0
  694. {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/target/main.fmf +0 -0
  695. {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/udisks2/core/main.fmf +0 -0
  696. {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/udisks2/core/test_block_format/main.fmf +0 -0
  697. {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/udisks2/core/test_block_format/test_block_format.py +0 -0
  698. {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/udisks2/core/test_encrypted/main.fmf +0 -0
  699. {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/udisks2/core/test_encrypted/test_encrypted.py +0 -0
  700. {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/udisks2/core/test_filesystem/main.fmf +0 -0
  701. {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/udisks2/core/test_filesystem/test_udisks2_filesystem.py +0 -0
  702. {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/udisks2/core/test_loop_dbus/main.fmf +0 -0
  703. {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/udisks2/core/test_loop_dbus/test_loop_dbus.py +0 -0
  704. {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/udisks2/core/test_manager/main.fmf +0 -0
  705. {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/udisks2/core/test_manager/test_manager.py +0 -0
  706. {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/udisks2/core/test_partition/main.fmf +0 -0
  707. {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/udisks2/core/test_partition/test_partition.py +0 -0
  708. {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/udisks2/core/test_swapspace/main.fmf +0 -0
  709. {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/udisks2/core/test_swapspace/test_swapspace.py +0 -0
  710. {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/udisks2/hardware/main.fmf +0 -0
  711. {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/udisks2/hardware/test_drive/main.fmf +0 -0
  712. {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/udisks2/hardware/test_drive/test_drive.py +0 -0
  713. {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/udisks2/main.fmf +0 -0
  714. {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/udisks2/regression/main.fmf +0 -0
  715. {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/udisks2/regression/test_block_secret_config/main.fmf +0 -0
  716. {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/udisks2/regression/test_block_secret_config/test_block_secret_config.py +0 -0
  717. {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/udisks2/regression/test_bug_regressions/main.fmf +0 -0
  718. {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/udisks2/regression/test_bug_regressions/test_bug_regressions.py +0 -0
  719. {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/udisks2/regression/test_encrypted_advanced/main.fmf +0 -0
  720. {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/udisks2/regression/test_encrypted_advanced/test_encrypted_advanced.py +0 -0
  721. {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/udisks2/regression/test_encrypted_regression/main.fmf +0 -0
  722. {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/udisks2/regression/test_encrypted_regression/test_encrypted_regression.py +0 -0
  723. {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/udisks2/regression/test_error_handling/main.fmf +0 -0
  724. {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/udisks2/regression/test_error_handling/test_error_handling.py +0 -0
  725. {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/udisks2/regression/test_filesystem_regression/main.fmf +0 -0
  726. {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/udisks2/regression/test_filesystem_regression/test_filesystem_regression.py +0 -0
  727. {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/udisks2/regression/test_luks_convert/main.fmf +0 -0
  728. {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/udisks2/regression/test_luks_convert/test_luks_convert.py +0 -0
  729. {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/udisks2/regression/test_manager_regression/main.fmf +0 -0
  730. {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/udisks2/regression/test_manager_regression/test_manager_regression.py +0 -0
  731. {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/udisks2/regression/test_vfat_capabilities/main.fmf +0 -0
  732. {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/udisks2/regression/test_vfat_capabilities/test_vfat_capabilities.py +0 -0
  733. {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/udisks2/sanity/main.fmf +0 -0
  734. {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/udisks2/sanity/test_dump/main.fmf +0 -0
  735. {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/udisks2/sanity/test_dump/test_dump.py +0 -0
  736. {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/udisks2/sanity/test_info/main.fmf +0 -0
  737. {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/udisks2/sanity/test_info/test_info.py +0 -0
  738. {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/udisks2/sanity/test_lock/main.fmf +0 -0
  739. {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/udisks2/sanity/test_lock/test_lock.py +0 -0
  740. {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/udisks2/sanity/test_loop/main.fmf +0 -0
  741. {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/udisks2/sanity/test_loop/test_loop.py +0 -0
  742. {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/udisks2/sanity/test_mount/main.fmf +0 -0
  743. {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/udisks2/sanity/test_mount/test_mount.py +0 -0
  744. {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/udisks2/sanity/test_status/main.fmf +0 -0
  745. {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/udisks2/sanity/test_status/test_status.py +0 -0
  746. {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/udisks2/sanity/version_help/main.fmf +0 -0
  747. {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/udisks2/sanity/version_help/test_udisks2_version_help.py +0 -0
  748. {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/vdo/data/main.fmf +0 -0
  749. {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/vdo/main.fmf +0 -0
  750. {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/vdo/module_signature/main.fmf +0 -0
  751. {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/vdo/module_signature/test_signatures.py +0 -0
  752. {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/vdo/multihost/main.fmf +0 -0
  753. {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/vdo/multihost/test_vdo_multihost.py +0 -0
  754. {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/vdo/upgrade/lvm_vdo.fmf +0 -0
  755. {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/vdo/upgrade/main.fmf +0 -0
  756. {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/vdo/upgrade/test_vdo_upgrade.py +0 -0
  757. {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/vdo/upgrade/vdo_manager.fmf +0 -0
  758. {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/vdo/upgrade/vdo_on_lv.fmf +0 -0
  759. {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/vdo/vdo_ack_threads/vdo_ack_threads.py +0 -0
  760. {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/vdo/vdo_calculate_size/main.fmf +0 -0
  761. {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/vdo/vdo_calculate_size/test_vdo_calculate_size.py +0 -0
  762. {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/vdo/vdo_high_memory/main.fmf +0 -0
  763. {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/vdo/vdo_high_memory/test_vdo_high_memory.py +0 -0
  764. {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/vdo/vdo_sanity/main.fmf +0 -0
  765. {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/vdo/vdo_sanity/test_vdo_sanity.py +0 -0
  766. {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/zstd/conftest.py +0 -0
  767. {sts_libs-2.4.0 → sts_libs-2.4.2}/tests/zstd/main.fmf +0 -0
  768. {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.0
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.0"
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 fully ready or does not support
76
- persistent reservations.
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.supports_pr:
84
- raise DeviceError(f'Device {self.path} does not support persistent reservations')
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.succeeded
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=f'{image_path}{lun_prefix}{n}{suffix}')
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, mock_run_with_result, mock_command_result, tmp_path) -> None:
354
- _, results = mock_run_with_result
355
- results[f'fallocate -l 512M {tmp_path / "loop0.img"}'] = mock_command_result(command='test', rc=1)
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 test_setup_raises_when_pr_unsupported(self, mock_run_with_result, mock_command_result) -> None:
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(DeviceError, match='does not support persistent reservations'):
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
- _wait_for_device_io(path)
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
- _exercise_cpu_hotplug_io(Path(brd_device.path))
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), monotonic()))
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, monotonic() + 1, events) # type: ignore[arg-type]
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=1, device_count=4, mirrors=3),
49
- LvmRaidCase(level='raid5', stripe_count=3, device_count=4),
50
- LvmRaidCase(level='raid10', stripe_count=2, device_count=4, mirrors=1),
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=3, device_count=4)
347
- wrong_layout = LVReport(segtype='raid1', stripes=3, raid_sync_action='idle')
348
- rebuilding = LVReport(segtype='raid5', stripes=3, raid_sync_action='resync')
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)