On Fri, 2019-03-08 at 10:40 -0700, Keith Busch wrote:
> Drivers may need to know the state of their requets.
Hi Keith,
What makes you think that drivers should be able to check the state of their
requests? Please elaborate.
> diff --git a/include/linux/blkdev.h b/include/linux/blkdev.h
> index faed9d9eb84c..db113aee48bb 100644
> --- a/include/linux/blkdev.h
> +++ b/include/linux/blkdev.h
> @@ -241,6 +241,15 @@ struct request {
> struct request *next_rq;
> };
>
> +/**
> + * blk_mq_rq_state() - read the current MQ_RQ_* state of a request
> + * @rq: target request.
> + */
> +static inline enum mq_rq_state blk_mq_rq_state(struct request *rq)
> +{
> + return READ_ONCE(rq->state);
> +}
Please also explain how drivers can use this function without triggering a
race condition with the code that modifies rq->state.
Thanks,
Bart.