All of lore.kernel.org
 help / color / mirror / Atom feed
From: Christoph Hellwig <hch@infradead.org>
To: "Wang Jianchao (Kuaishou)" <jianchao.wan9@gmail.com>
Cc: Jens Axboe <axboe@kernel.dk>, Josef Bacik <jbacik@fb.com>,
	Tejun Heo <tj@kernel.org>, Bart Van Assche <bvanassche@acm.org>,
	linux-block@vger.kernel.org, linux-kernel@vger.kernel.org
Subject: Re: [RFC V4 1/6] blk: prepare to make blk-rq-qos pluggable and modular
Date: Thu, 17 Feb 2022 00:48:43 -0800	[thread overview]
Message-ID: <Yg4L67f96aQ2q5uy@infradead.org> (raw)
In-Reply-To: <20220217031349.98561-2-jianchao.wan9@gmail.com>

>  {
>  	struct request_queue *q = rqos->q;
> -	const char *dir_name = rq_qos_id_to_name(rqos->id);
> +	const char *dir_name;
> +
> +	dir_name = rqos->ops->name ? rqos->ops->name : rq_qos_id_to_name(rqos->id);

Overly long line here.  And it would be much more readable if you used
a good old if/else.

> +static DEFINE_IDA(rq_qos_ida);
> +static int nr_rqos_blkcg_pols;
> +static DEFINE_MUTEX(rq_qos_mutex);
> +static LIST_HEAD(rq_qos_list);

Please use an allocating xarray instead of an IDA plus list.

> +	/*
> +	 * queue must have been unregistered here, it is safe to iterate
> +	 * the list w/o lock
> +	 */

Please capitalize multi-line comments.

> + * After the pluggable blk-qos, rqos's life cycle become complicated,
> + * as we may modify the rqos list there. Except for the places where
> + * queue is not registered, there are following places may access rqos
> + * list concurrently:

Code comments are not the place to explain history.  PLease explain the
current situation.

> +struct rq_qos *rq_qos_get(struct request_queue *q, int id)
> +{
> +	struct rq_qos *rqos;
> +
> +	spin_lock_irq(&q->queue_lock);

Please don't use the grab all queue_lock for new code.  It badly needs
to be split and documented, and new code is the best place to start
that.

Also with all the new code please add a new config option that is
selected by all rq-pos implementations so that blk-rq-qos.c only gets
built when actually needed.

> +static inline struct rq_qos *rq_qos_by_id(struct request_queue *q, int id)
> +{
> +	struct rq_qos *rqos;
> +
> +	WARN_ON(!mutex_is_locked(&q->sysfs_lock) && !spin_is_locked(&q->queue_lock));

Another overly long line.  And in doubt split this into two helpers
so that you cna use lockdep_assert_held instead of doing the incorrect
asserts.

  reply	other threads:[~2022-02-17  8:48 UTC|newest]

Thread overview: 32+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-02-17  3:13 [RFC V4 0/6] blk: make blk-rq-qos policies pluggable and modular Wang Jianchao (Kuaishou)
2022-02-17  3:13 ` [RFC V4 1/6] blk: prepare to make blk-rq-qos " Wang Jianchao (Kuaishou)
2022-02-17  8:48   ` Christoph Hellwig [this message]
2022-02-18  3:34     ` Wang Jianchao
2022-02-22 17:19   ` Tejun Heo
2022-02-23  3:08     ` Wang Jianchao
2022-02-23  3:10       ` Wang Jianchao
2022-02-23 21:37         ` Tejun Heo
2022-02-24  1:51           ` Wang Jianchao
2022-02-24  2:07             ` Tejun Heo
2022-02-24  2:50               ` Wang Jianchao
2022-02-24 16:53                 ` Tejun Heo
2022-02-25  2:02                   ` Wang Jianchao
2022-02-17  3:13 ` [RFC V4 2/6] blk-wbt: make wbt pluggable Wang Jianchao (Kuaishou)
2022-02-17  8:50   ` Christoph Hellwig
2022-02-18  3:41     ` Wang Jianchao
2022-02-22  8:12       ` Christoph Hellwig
2022-02-17  3:13 ` [RFC V4 3/6] blk-iolatency: make iolatency pluggable Wang Jianchao (Kuaishou)
2022-02-17  8:51   ` Christoph Hellwig
2022-02-18  3:42     ` Wang Jianchao
2022-02-17  3:13 ` [RFC V4 4/6] blk-iocost: make iocost pluggable Wang Jianchao (Kuaishou)
2022-02-17  8:52   ` Christoph Hellwig
2022-02-18  3:43     ` Wang Jianchao
2022-02-17  3:13 ` [RFC V4 5/6] blk-ioprio: make ioprio pluggable and modular Wang Jianchao (Kuaishou)
2022-02-17  8:54   ` Christoph Hellwig
2022-02-17  3:13 ` [RFC V4 6/6] blk: export the sysfs for switching qos Wang Jianchao (Kuaishou)
2022-02-17  8:55   ` Christoph Hellwig
2022-02-18  3:43     ` Wang Jianchao
2022-02-17  3:21 ` [RFC V4 0/6] blk: make blk-rq-qos policies pluggable and modular Jens Axboe
2022-02-17  3:53   ` Wang Jianchao
2022-02-17  8:43 ` Christoph Hellwig
2022-02-18  3:22   ` Wang Jianchao

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=Yg4L67f96aQ2q5uy@infradead.org \
    --to=hch@infradead.org \
    --cc=axboe@kernel.dk \
    --cc=bvanassche@acm.org \
    --cc=jbacik@fb.com \
    --cc=jianchao.wan9@gmail.com \
    --cc=linux-block@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=tj@kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.