mbox series

[v3,00/14] Zone write plugging fixes and cleanup

Message ID 20240501110907.96950-1-dlemoal@kernel.org (mailing list archive)
Headers show
Series Zone write plugging fixes and cleanup | expand

Message

Damien Le Moal May 1, 2024, 11:08 a.m. UTC
Jens, Mike,

With more testing of zone write plugging on more device setups,
including weird/test setups (with scsi debug and null_blk), several
issues were identified. This patch series addresses them and cleanup the
code a little to try to make it more obvious.

The first patch is a DM modification to not expose zoned devices
composed solely of conventional zones as zoned block devices. The second
patch is a fix partly related to this to expose a correct max open zones
limit for devices with no limits (which DM devices are as the max
open/active limit is not propagated to the mapped device as there is no
easy way to do that).

Patches 3 to 9 are bug fixes. The most serious problem among theses was
detected with tests using scsi_debug zoned devices and is fixed in
patch 7.

Patches 10 to 14 improve and cleanup the code.

Changes from v2:
 - Fixed comment in patch 1
 - Addressed Christoph's suggestion in patch 2 (mempool_resize call).
 - Added review tags

Changes from v1:
 - Changed patch 4 as suggested by Christoph
 - Added additional comments in patch 7 to clarify the check for the
   zone write plug reference count in disk_should_remove_zone_wplug()
 - Added patch 14
 - Added review tags

Damien Le Moal (14):
  dm: Check that a zoned table leads to a valid mapped device
  block: Exclude conventional zones when faking max open limit
  block: Fix zone write plug initialization from blk_revalidate_zone_cb()
  block: Fix reference counting for zone write plugs in error state
  block: Hold a reference on zone write plugs to schedule submission
  block: Unhash a zone write plug only if needed
  block: Do not remove zone write plugs still in use
  block: Fix flush request sector restore
  block: Fix handling of non-empty flush write requests to zones
  block: Improve blk_zone_write_plug_bio_merged()
  block: Improve zone write request completion handling
  block: Simplify blk_zone_write_plug_bio_endio()
  block: Simplify zone write plug BIO abort
  block: Cleanup blk_revalidate_zone_cb()

 block/blk-flush.c     |   3 +-
 block/blk-mq.c        |  12 +-
 block/blk-zoned.c     | 403 +++++++++++++++++++++++++++---------------
 block/blk.h           |  12 +-
 drivers/md/dm-table.c |   3 +-
 drivers/md/dm-zone.c  |  57 ++++++
 6 files changed, 335 insertions(+), 155 deletions(-)

Comments

Jens Axboe May 1, 2024, 2:08 p.m. UTC | #1
On Wed, 01 May 2024 20:08:53 +0900, Damien Le Moal wrote:
> Jens, Mike,
> 
> With more testing of zone write plugging on more device setups,
> including weird/test setups (with scsi debug and null_blk), several
> issues were identified. This patch series addresses them and cleanup the
> code a little to try to make it more obvious.
> 
> [...]

Applied, thanks!

[01/14] dm: Check that a zoned table leads to a valid mapped device
        commit: 44cccb3027d4719c9229203233250d73d3192bf9
[02/14] block: Exclude conventional zones when faking max open limit
        commit: 6b7593b5fb9eb73be92f78a1abfa502f05ff5e15
[03/14] block: Fix zone write plug initialization from blk_revalidate_zone_cb()
        commit: 74b7ae5f48e6f9518a32f50926619eba54be44de
[04/14] block: Fix reference counting for zone write plugs in error state
        commit: 19aad274c22b96fc4c0113d87cc8a083c87c467e
[05/14] block: Hold a reference on zone write plugs to schedule submission
        commit: 9e78c38ab30b14c1d6a07c61d57ac5e2f12fa568
[06/14] block: Unhash a zone write plug only if needed
        commit: 79ae35a4233df5909f8bea0b64eadbebde870de2
[07/14] block: Do not remove zone write plugs still in use
        commit: 7b295187287e0006dd1b0b95f995f00878e436c5
[08/14] block: Fix flush request sector restore
        commit: af147b740f111730c2e387ee6c0ac3ada7d51117
[09/14] block: Fix handling of non-empty flush write requests to zones
        commit: 096bc7ea335bc5dfbaed1d005ff27f008ec9d710
[10/14] block: Improve blk_zone_write_plug_bio_merged()
        commit: c4c3ffdab2e26780f6f7c9959a473b2c652f4d13
[11/14] block: Improve zone write request completion handling
        commit: 347bde9da10f410b8134a82d6096105cad44e1c1
[12/14] block: Simplify blk_zone_write_plug_bio_endio()
        commit: b5a64ec2ea2be2a7f7eb73c243c2381e9fc1c71b
[13/14] block: Simplify zone write plug BIO abort
        commit: c9c8aea03c4ac2ea902bc7dd5ba14f5d78af8ece
[14/14] block: Cleanup blk_revalidate_zone_cb()
        commit: d7580149efc5c86c4e72f9263b97c062616a84dd

Best regards,