Re: [PATCH 05/11] blk-throttle: simpfy low limit reached check in throtl_tg_can_upgrade
From: Tejun Heo <tj@kernel.org>
Date: 2022-11-23 18:27:22
Also in:
linux-block, lkml
From: Tejun Heo <tj@kernel.org>
Date: 2022-11-23 18:27:22
Also in:
linux-block, lkml
On Wed, Nov 23, 2022 at 02:03:55PM +0800, Kemeng Shi wrote:
-static bool throtl_tg_can_upgrade(struct throtl_grp *tg)
+static bool throtl_tg_reach_low_limit(struct throtl_grp *tg, int rw)
{
struct throtl_service_queue *sq = &tg->service_queue;
- bool read_limit, write_limit;
+ bool limit = tg->bps[rw][LIMIT_LOW] || tg->iops[rw][LIMIT_LOW];
/*
* if cgroup reaches low limit (if low limit is 0, the cgroup always
* reaches), it's ok to upgrade to next limit
*/
- read_limit = tg->bps[READ][LIMIT_LOW] || tg->iops[READ][LIMIT_LOW];
- write_limit = tg->bps[WRITE][LIMIT_LOW] || tg->iops[WRITE][LIMIT_LOW];
- if (!read_limit && !write_limit)
- return true;
- if (read_limit && sq->nr_queued[READ] &&
- (!write_limit || sq->nr_queued[WRITE]))
- return true;
- if (write_limit && sq->nr_queued[WRITE] &&
- (!read_limit || sq->nr_queued[READ]))
+ return !limit || sq->nr_queued[rw].
+}
+
+static bool throtl_tg_can_upgrade(struct throtl_grp *tg)
+{
+ if (throtl_tg_reach_low_limit(tg, READ) &&
+ throtl_tg_reach_low_limit(tg, WRITE))Are the conditions being checked actually equivalent? If so, can you explicitly explain that these are equivalent conditions? If not, what are we changing exactly? Thanks. -- tejun