On Fri, 2018-01-12 at 18:17 -0500, Mike Snitzer wrote:
> @@ -1570,7 +1570,10 @@ static int multipath_end_io(struct dm_target *ti, 
> struct request *clone,
>       if (error && blk_path_error(error)) {
>               struct multipath *m = ti->private;
>  
> -             r = DM_ENDIO_REQUEUE;
> +             if (r == BLK_STS_RESOURCE)
> +                     r = DM_ENDIO_DELAY_REQUEUE;
> +             else
> +                     r = DM_ENDIO_REQUEUE;

Did you perhaps intend "error == BLK_STS_RESOURCE"?

> diff --git a/include/linux/device-mapper.h b/include/linux/device-mapper.h
> index 9ba8453..da83f64 100644
> --- a/include/linux/device-mapper.h
> +++ b/include/linux/device-mapper.h
> @@ -550,6 +550,7 @@ struct dm_table *dm_swap_table(struct mapped_device *md,
>  #define DM_ENDIO_DONE                0
>  #define DM_ENDIO_INCOMPLETE  1
>  #define DM_ENDIO_REQUEUE     2
> +#define DM_ENDIO_DELAY_REQUEUE       3
>  
>  /*
>   * Definitions of return values from target map function.
> @@ -557,7 +558,7 @@ struct dm_table *dm_swap_table(struct mapped_device *md,
>  #define DM_MAPIO_SUBMITTED   0
>  #define DM_MAPIO_REMAPPED    1
>  #define DM_MAPIO_REQUEUE     DM_ENDIO_REQUEUE
> -#define DM_MAPIO_DELAY_REQUEUE       3
> +#define DM_MAPIO_DELAY_REQUEUE       DM_ENDIO_DELAY_REQUEUE
>  #define DM_MAPIO_KILL                4
>  
>  #define dm_sector_div64(x, y)( \

Please consider to introduce enumeration types for the DM_ENDIO_* and the
DM_MAPIO_* constants such that the compiler can catch what I reported above.
Otherwise this patch looks fine to me.

Thanks,

Bart.

Reply via email to