This patch series fixes various problems with fio zbd support discovered with extensive testing on various test targets (null_blk, iscsi/tcmu device, SMR disk, partition devices, etc). In more details: * Patch 1 fixes the discovery of a block device zone model to correctly handle block devices that are partitions. * Patch 2 addresses a problem with the SG engine and devices not supporting the READ CAPACITY(10) command. * Patch 3 cleans up the SG engine code with helper functions to handle big-endian SCSI cdb fields. * Patch 4 to 6 fix the zbd support tests to avoid incorrect failures reports. * Patch 7 and 8 fix zone locking handling to avoid write command reordering with multi-jobs workloads with asynchronous I/O engines. These changes do have a significant impact on the performance reported for very small (test) devices with a high number of jobs. The worst degradation observed result in libaio performance being equal to that of the synchronous psync engine. There is however no noticeable performance degradation with real disks as the large number of zones with these drives do not cause excessive zone lock contention. * Patch 9 introduces a new zbd test case 46 to test asynchronous muli-job writes. All these fixes are necessary for correctly running blktests with different target devices, and to also implement further blktests zbd test group to improve test coverage. As always, comments are very welcome. Changes from v1: * Addressed Bart's comments for SG engine changes (added patch 3) * Fixed patch 5 as suggested by Bart Damien Le Moal (4): t/zbd: Fix test 2 and 3 result handling zbd: Fix zone locking for async I/O engines zbd: Avoid async I/O multi-job workload deadlock t/zbd: Add multi-job libaio test Dmitry Fomichev (2): sg: Avoid READ CAPACITY failures sg: Clean up handling of big endian data fields Shin'ichiro Kawasaki (3): zbd: Fix partition block device handling t/zbd: Fix handling of partition devices t/zbd: Default to using blkzone tool engines/sg.c | 127 ++++++++++++++++++++++------------------ io_u.c | 10 +--- io_u.h | 17 +++++- ioengines.c | 6 +- os/os.h | 24 ++++++++ t/zbd/functions | 25 ++++++-- t/zbd/test-zbd-support | 34 ++++++++--- zbd.c | 129 +++++++++++++++++++++++++++++++++++------ zbd.h | 22 +++++++ 9 files changed, 289 insertions(+), 105 deletions(-) -- 2.20.1