dm: Forbid requeue of writes to zones
authorDamien Le Moal <damien.lemoal@wdc.com>
Tue, 25 May 2021 21:24:58 +0000 (06:24 +0900)
committerMike Snitzer <snitzer@redhat.com>
Fri, 4 Jun 2021 16:07:33 +0000 (12:07 -0400)
commitbf14e2b250e4ff94392bbe87c523effdec687b0b
treecebe42a2e93b8e2ef4154d9f5c440c85b98785bb
parent912e887505a07123917e537b657859723ce5d472
dm: Forbid requeue of writes to zones

A target map method requesting the requeue of a bio with
DM_MAPIO_REQUEUE or completing it with DM_ENDIO_REQUEUE can cause
unaligned write errors if the bio is a write operation targeting a
sequential zone. If a zoned target request such a requeue, warn about
it and kill the IO.

The function dm_is_zone_write() is introduced to detect write operations
to zoned targets.

This change does not affect the target drivers supporting zoned devices
and exposing a zoned device, namely dm-crypt, dm-linear and dm-flakey as
none of these targets ever request a requeue.

Signed-off-by: Damien Le Moal <damien.lemoal@wdc.com>
Reviewed-by: Hannes Reinecke <hare@suse.de>
Reviewed-by: Himanshu Madhani <himanshu.madhani@oracle.com>
Signed-off-by: Mike Snitzer <snitzer@redhat.com>
drivers/md/dm-zone.c
drivers/md/dm.c
drivers/md/dm.h