[PATCH v5 00/13] zbd: fix unaligned block size issue and verify issues

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



When zonemode is zbd and block size is not divisor of zone size, write target
zone selection does not work as expected. First four patches in this series fix
the issue by introducing zone finish operation. First three patches do
preparation and the 4th patch does the fix.

This series also fix four more issues related to verify with zonemode zbd. The
first issue is that verify is allowed only when block size is divisor of zone
size. The 5th patch removes this limitation. The second and third issue are
caused by zone reset, which erases data pattern for verify. The 6th and 7th
patches adjust verify and zone reset timing to avoid verify errors by the erased
data pattern. The last issue is experimental verify, which does not work with
zonemode=zbd. The 8th patch checks options to error out when experimental
verify is specified together with zonemode=zbd.

Five more patches follow to make test cases in t/zbd match with the fixes.

Of note is that the new test case #59 added by 11th patch may fail, when libzbc
IO engine is specified to t/zbd/test-zbd-support script with -l option. For SAS
ZBC drive, use latest libzbc with fix to avoid the faliure [1]. For SATA ZAC
drive, use kernel with a fix posted to linux-ide list recently [2].

[1] https://github.com/westerndigitalcorporation/libzbc/commit/6de6869acbe7c3a12758b1f42c9da47bb873e621
[2] https://lore.kernel.org/linux-ide/20221107040229.1548793-1-shinichiro.kawasaki@xxxxxxx/


Changes from v4:
* 7th patch: improved fix for test case #34 failure found with 16MB zone size
* 10th patch: improved the test case #34 to trigger the failure found with 16MB
              zone size

Changes from v3:
* 6th patch: fixed get_next_verify() call and rand_seed check condition
* 11th patch: improved to cover four types of workloads

Changes from v2:
* Improved commit message and block comment in 3rd patch
* Fixed a comment typo in last patch
* Added Tested-by and Reviewed-by tags

Changes from v1:
* Separated zbd_zone_remainder() addition to 3rd patch and added suggested hunks
* Added last 13th patch for a new test case to test experimental_verify option
* Reflected other comments on the list
* Added Tested-by and Reviewed-by tags


Shin'ichiro Kawasaki (13):
  oslib: blkzoned: add blkzoned_finish_zone() helper function
  engines/libzbc: add libzbc_finish_zone() helper function
  zbd: add zbd_zone_remainder() helper function
  zbd: finish zones with remainder smaller than minimum write block size
  zbd: allow block size not divisor of zone size
  zbd, verify: verify before zone reset for
    zone_reset_threshold/frequency
  zbd: fix zone reset condition for verify
  zbd: prevent experimental verify with zonemode=zbd
  t/zbd: fix test case #33 for block size unaligned to zone size
  t/zbd: modify test case #34 for block size unaligned to zone size
  t/zbd: add test case to check zone_reset_threshold/frequency with
    verify
  t/zbd: remove experimental_verify option from test case #54
  t/zbd: add test case to check experimental_verify option

 engines/libzbc.c       |  34 ++++++++
 ioengines.h            |   2 +
 oslib/blkzoned.h       |   8 ++
 oslib/linux-blkzoned.c |  37 +++++++++
 t/zbd/test-zbd-support |  60 +++++++++++---
 verify.c               |   6 +-
 zbd.c                  | 175 +++++++++++++++++++++++++++--------------
 zbd.h                  |   2 -
 8 files changed, 250 insertions(+), 74 deletions(-)

-- 
2.37.1




[Index of Archives]     [Linux Kernel]     [Linux SCSI]     [Linux IDE]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux SCSI]

  Powered by Linux