On Wed, Jun 17, 2026 at 2:12 PM <[email protected]> wrote:
>
> From: Cao Guanghui <[email protected]>
>
> era_ctr() replaces the actual error codes returned by dm_get_device()
> and dm_set_target_max_io_len() with hardcoded -EINVAL, discarding
> the real reason for the failure (e.g. -ENODEV, -ENOMEM).  This makes
> it harder for users to diagnose problems and is inconsistent with
> other dm targets (dm-thin, dm-verity, dm-flakey, dm-ebs) which
> propagate the original error.
>
> Fix all three sites to return 'r' instead of -EINVAL.
>
> Signed-off-by: Cao Guanghui <[email protected]>

Thanks!

Reviewed-by: Ming-Hung Tsai <[email protected]>

> ---
>  drivers/md/dm-era-target.c | 6 +++---
>  1 file changed, 3 insertions(+), 3 deletions(-)
>
> diff --git a/drivers/md/dm-era-target.c b/drivers/md/dm-era-target.c
> index 08ce96e8cf4f..4eb1c4f90e1b 100644
> --- a/drivers/md/dm-era-target.c
> +++ b/drivers/md/dm-era-target.c
> @@ -1488,7 +1488,7 @@ static int era_ctr(struct dm_target *ti, unsigned int 
> argc, char **argv)
>         if (r) {
>                 ti->error = "Error opening metadata device";
>                 era_destroy(era);
> -               return -EINVAL;
> +               return r;
>         }
>
>         r = dm_get_device(ti, argv[1], BLK_OPEN_READ | BLK_OPEN_WRITE,
> @@ -1496,7 +1496,7 @@ static int era_ctr(struct dm_target *ti, unsigned int 
> argc, char **argv)
>         if (r) {
>                 ti->error = "Error opening data device";
>                 era_destroy(era);
> -               return -EINVAL;
> +               return r;
>         }
>
>         r = sscanf(argv[2], "%u%c", &era->sectors_per_block, &dummy);
> @@ -1510,7 +1510,7 @@ static int era_ctr(struct dm_target *ti, unsigned int 
> argc, char **argv)
>         if (r) {
>                 ti->error = "could not set max io len";
>                 era_destroy(era);
> -               return -EINVAL;
> +               return r;
>         }
>
>         if (!valid_block_size(era->sectors_per_block)) {
> --
> 2.25.1
>
>


Reply via email to