Skip to content

Zone write plugging fixes and cleanup

Damien Le Moal dm-devel linux-block 3 versions – Applied

Status from this message: Applied, thanks!

Get series with b4
b4 am [email protected]

Versions newest first · linked by author and title

  1. v3 Latest14 patches 16 repliesApplied
  2. v214 patches 2 repliesSuperseded
  3. v113 patches 19 repliesSuperseded

Changes in v3 from the cover letter

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

Patches in v3 Applied

#Subject and filesSizeRepliesApplied
1/14dm: Check that a zoned table leads to a valid mapped devicedrivers/md/dm-table.c drivers/md/dm-zone.c+59 -10 replies
2/14block: Exclude conventional zones when faking max open limitblock/blk-zoned.c+28 -101 reply
3/14block: Fix zone write plug initialization from blk_revalidate_zone_cb()block/blk-zoned.c+4 -31 reply
4/14block: Fix reference counting for zone write plugs in error stateblock/blk-zoned.c+49 -262 replies
5/14block: Hold a reference on zone write plugs to schedule submissionblock/blk-zoned.c+21 -51 reply
6/14block: Unhash a zone write plug only if neededblock/blk-zoned.c+32 -231 reply
7/14block: Do not remove zone write plugs still in useblock/blk-zoned.c+31 -82 replies
8/14block: Fix flush request sector restoreblock/blk-flush.c+2 -11 reply
9/14block: Fix handling of non-empty flush write requests to zonesblock/blk-mq.c block/blk-zoned.c block/blk.h+13 -91 reply
10/14block: Improve blk_zone_write_plug_bio_merged()block/blk-zoned.c+7 -21 reply
11/14block: Improve zone write request completion handlingblock/blk-mq.c block/blk-zoned.c block/blk.h+12 -131 reply
12/14block: Simplify blk_zone_write_plug_bio_endio()block/blk-zoned.c+1 -21 reply
13/14block: Simplify zone write plug BIO abortblock/blk-zoned.c+7 -81 reply
14/14block: Cleanup blk_revalidate_zone_cb()block/blk-zoned.c+77 -521 reply

Reviews trailers per patch

All 14 patches have a Reviewed-by or Acked-by.

PatchBenjamin MarzinskiChristoph HellwigJohannes ThumshirnHannes Reinecke
1/14R-b
2/14R-b R-b R-b
3/14R-b R-b R-b
4/14R-b R-b
5/14R-b R-b R-b
6/14R-b R-b R-b
7/14R-b R-b
8/14R-b R-b R-b
9/14R-b R-b R-b
10/14R-b R-b R-b
11/14R-b R-b R-b
12/14R-b R-b R-b
13/14R-b R-b R-b
14/14R-b

Trailers given in replies are filled; those carried in the patches from earlier versions are outlined with dashes. Scroll the table sideways for all 4 reviewers.

Read the v3 thread

Cover letter [PATCH v3 00/14] Zone write plugging fixes and cleanup

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(-)
Signature · 1 line
2.44.0