Hi Omar, On 1/17/19 11:16 AM, Omar Sandoval wrote: > On Thu, Jan 10, 2019 at 06:37:09PM +0900, Shin'ichiro Kawasaki wrote: >> The current blktests infrastucture and test cases do not support zoned block >> devices and no specific test cases exist to test these block devices special >> features (zone report and reset, sequential write constraint). This patch series >> implement this missing support. >> >> The series addresses two aspects: the first 7 patches introduce changes to the >> common scripts and configuration are introduced to allow existing test cases to >> run against a null_blk device with zone mode enabled (new ZONED config variable) >> or for these test cases to be skipped if a test declare itself as not zoned >> compliant. Helper functions are introduced to facilitate checking a device >> zone model. >> >> The second part, composed of the last 9 patches, introduce the new zbd test >> group to cover zoned block device specific test cases. All these test cases are >> implemented using the test_device() function so that target devices can be >> specified in the TEST_DEVS config variable, to cover a variety of zoned block >> devices: physical real drives, partitions and dm-linear setups on top of zoned >> block devices, etc. Furthermore, using the infrastructure changes of the first >> part, the TEST_DEVS definition can be left empty, resulting in the zbd test >> cases to be run against an automatically created null_blk device with zoned >> mode enabled. >> >> 5 test cases are added to the new zbd test group to check the kernel ioctl and >> sysfs interface, zone report operation, zone reset and write command handling. >> These tests are simple but only a start. We will in the future send more test >> cases to cover at least the regressions and bugs found and fixed in the zoned >> block device code since its introduction with kernel 4.10. >> >> Another still to be added part is support for host-managed ZBC emulation in >> scsi-debug to further improve test coverage without requiring a physical SMR >> disk. This work is ongoing and will be added to blktests once the relevant >> scsi-debug changes are accepted in the kernel. >> >> Changes from v1: >> * Fixed _test_dev_is_zoned >> * Added _have_fio_zbd_zonemode >> * Added patch 10 to move _dd to common/rc >> * Addressed various nit commented on the list >> >> Masato Suzuki (6): >> tests: Introduce zbd test group >> zbd/001: sysfs and ioctl consistency test >> zbd/002: report zone test >> zbd/003: Test sequential zones reset >> zbd/004: Check write split accross sequential zones >> zbd/005: Test write ordering >> >> Shin'ichiro Kawasaki (10): >> config: Introduce ZONED variable >> common: Introduce _test_dev_is_zoned() helper function >> common: Move set_scheduler() function definition >> common: Introduce _have_fio_zbd_zonemode() helper function >> block/004: Adjust fio conditions for zoned block device >> block/013: Skip for zoned block devices >> block/018,024: Skip when ZONED is set >> check: Introduce group_exit() function >> src: Introduce zbdioctl program >> common: Introduce _dd() helper function > > Hi, > > Thanks so much for the contribution. It'll be great to have some tests > for zoned block devices. Thank you very much for your review. > One thing I'm not a huge fan of is that setting the ZONED mode hijacks > the existing tests to be ZBD tests. When I'm doing a full test run, I'd > like to run those tests in both modes without running the rest of the > test suite twice. > > Instead, what if we added a per-test setting like CAN_BE_ZONED and a > global config RUN_ZONED_TESTS? If those are both set, we run it once in > normal mode and once in zoned mode. This also avoids having to blacklist > tests which don't support zoned mode (although we'll have to remember to > whitelist tests that would work on a zoned device). Yes, that would work too. And the CAN_BE_ZONED per-test case setting can also control if the test should be executed against a specified zoned device or not. Will make these changes. > > The functionality for falling back to null_blk if no devices are > specified is nifty. It'd be nice to have that as generic functionality > instead of specific to the zbd group. Something like a per-test > fallback_device() function which sets up the fallback test device. It'd > probably also need a cleanup_fallback_device(). Good idea. Instead of the entire group fallback device, it becomes per test case. Will make the changes. > > Let me know your thoughts. > > Thanks! > -- Best Regards, Shin'ichiro Kawasaki