Re: [PATCH v3] dm: error: Add support for zoned block devices

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

 



On Thu, Oct 26 2023 at  1:12P -0400,
Damien Le Moal <dlemoal@xxxxxxxxxx> wrote:

> dm-error is used in several test cases in the xfstests test suite to
> check the handling of IO errors in file systems. However, with several
> file systems getting native support for zoned block devices (e.g. btrfs
> and f2fs), dm-error lack of zoned block device support creates problems
> as the file system attempt executing zone commands (e.g. a zone append
> operation) against a dm-error non-zoned block device, which causes
> various issues in the block layer (e.g. WARN_ON triggers).
> 
> This patch adds supports for zoned block devices to dm-error, allowing
> an md device table containing an error target to be exposed as a zoned
> block device (if all targets have a compatible zoned model support and
> mapping). This is done as follows:
> 1) Allow passing 2 arguments to an error target, similarly to dm-linear:
>    a backing device and a start sector. These arguments are optional and
>    dm-error retains its characteristics if the arguments are not
>    specified.
> 2) Implement the iterate_devices method so that dm-core can normally
>    check the zone support and restrictions (e.g. zone alignment of the
>    targets). When the backing device arguments are not specified, the
>    iterate_devices method never calls the fn() argument.
> When no backing device is specified, as before, we assume that the DM
> device is not zoned. When the backing devie arguments are specified, the
> zoned model of the DM device will depend on the backing device type:
>  - If the backing device is zoned and its model and mapping is
>    compatible with other targets of the device, the resulting device
>    will be zoned, with the dm-error mapped portion always returning
>    errors (similarly to the default non-zoned case).
>  - If the backing devie is not zoned, then the DM device will not be
>    either.
> 
> This zone support for dm-error requires the definition of a functional
> report_zones operation so that dm_revalidate_zones() can operate
> correctly and resources for emulating zone append operations
> initialized. This is necessary for cases where dm-error is used to
> partially map a device and have an overall correct handling of zone
> append. This means that dm-error does not fail report zones operations.
> 
> Two changes that are not obvious are included to avoid issues:
> 1) dm_table_supports_zoned_model() is changed to directly check if
>    the backing device of a wildcard target (= dm-error target) is zoned.
>    Otherwise, when the invalid setup of dm-error being set without a
>    backing device (non zoned case) and combined with zoned targets
>    cannot be cought.
> 2) dm_table_supports_dax() is modified to return false if the wildcard
>    target is found. Otherwise, when dm-error is set without a backing
>    device, we end up with a NULL pointer dereference in
>    set_dax_synchronous dax_dev is NULL. This is consistent with the
>    current behavior because dm_table_supports_dax() always returned fals
>    for targets that do not define the iterate_devices method.
> 
> Signed-off-by: Damien Le Moal <dlemoal@xxxxxxxxxx>

I've picked this up.  But fixed various typos and such in the commit header.

Also some typos in code comments and bumped the target version to 1.7.

Please see: https://git.kernel.org/pub/scm/linux/kernel/git/device-mapper/linux-dm.git/commit/?h=dm-6.7&id=c85b4fb8b8edbd915283f6ab3537f2c3b95e7c85

Thanks,
Mike




[Index of Archives]     [DM Crypt]     [Fedora Desktop]     [ATA RAID]     [Fedora Marketing]     [Fedora Packaging]     [Fedora SELinux]     [Yosemite Discussion]     [KDE Users]     [Fedora Docs]

  Powered by Linux