From: Jan Kara <jack@suse.cz>
To: axboe@kernel.dk
Cc: Tejun Heo <tj@kernel.org>,
linux-kernel@vger.kernel.org, Jeff Moyer <jmoyer@redhat.com>,
Jan Kara <jack@suse.com>
Subject: [PATCH 2/5] cfq-iosched: Reorder checks in cfq_should_preempt()
Date: Tue, 12 Jan 2016 16:24:16 +0100 [thread overview]
Message-ID: <1452612259-5480-3-git-send-email-jack@suse.cz> (raw)
In-Reply-To: <1452612259-5480-1-git-send-email-jack@suse.cz>
From: Jan Kara <jack@suse.com>
Move check for preemption by rt class up. There is no functional change
but it makes arguing about conditions simpler since we can be sure both
cfq queues are from the same ioprio class.
Acked-by: Tejun Heo <tj@kernel.org>
Signed-off-by: Jan Kara <jack@suse.com>
---
block/cfq-iosched.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/block/cfq-iosched.c b/block/cfq-iosched.c
index 0a6a70a9bca8..2544c219c00c 100644
--- a/block/cfq-iosched.c
+++ b/block/cfq-iosched.c
@@ -3959,6 +3959,13 @@ cfq_should_preempt(struct cfq_data *cfqd, struct cfq_queue *new_cfqq,
if (cfq_slice_used(cfqq))
return true;
+ /*
+ * Allow an RT request to pre-empt an ongoing non-RT cfqq timeslice.
+ */
+ if (cfq_class_rt(new_cfqq) && !cfq_class_rt(cfqq))
+ return true;
+
+ WARN_ON_ONCE(cfqq->ioprio_class != new_cfqq->ioprio_class);
/* Allow preemption only if we are idling on sync-noidle tree */
if (cfqd->serving_wl_type == SYNC_NOIDLE_WORKLOAD &&
cfqq_type(new_cfqq) == SYNC_NOIDLE_WORKLOAD &&
@@ -3973,12 +3980,6 @@ cfq_should_preempt(struct cfq_data *cfqd, struct cfq_queue *new_cfqq,
if ((rq->cmd_flags & REQ_PRIO) && !cfqq->prio_pending)
return true;
- /*
- * Allow an RT request to pre-empt an ongoing non-RT cfqq timeslice.
- */
- if (cfq_class_rt(new_cfqq) && !cfq_class_rt(cfqq))
- return true;
-
/* An idle queue should not be idle now for some reason */
if (RB_EMPTY_ROOT(&cfqq->sort_list) && !cfq_should_idle(cfqd, cfqq))
return true;
--
2.6.2
next prev parent reply other threads:[~2016-01-12 15:24 UTC|newest]
Thread overview: 12+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-01-12 15:24 [PATCH 0/5 v3] SYNC_NOIDLE preemption for ancestor cgroups Jan Kara
2016-01-12 15:24 ` [PATCH 1/5] cfq-iosched: Don't group_idle if cfqq has big thinktime Jan Kara
2016-01-12 16:17 ` Tejun Heo
2016-01-12 15:24 ` Jan Kara [this message]
2016-01-12 15:24 ` [PATCH 3/5] cfq-iosched: Allow sync noidle workloads to preempt each other Jan Kara
2016-01-12 15:24 ` [PATCH 4/5] cgroup: Export cgroup_is_descendant() Jan Kara
2016-01-12 15:24 ` [PATCH 5/5] cfq-iosched: Allow parent cgroup to preempt its child Jan Kara
2016-01-12 17:10 ` [PATCH 0/5 v3] SYNC_NOIDLE preemption for ancestor cgroups Jens Axboe
2016-02-04 16:43 ` Jan Kara
2016-02-04 16:47 ` Jens Axboe
-- strict thread matches above, loose matches on Subject: below --
2016-01-07 15:28 [PATCH 0/5 v2] " Jan Kara
2016-01-07 15:28 ` [PATCH 2/5] cfq-iosched: Reorder checks in cfq_should_preempt() Jan Kara
2016-01-08 16:59 ` Tejun Heo
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=1452612259-5480-3-git-send-email-jack@suse.cz \
--to=jack@suse.cz \
--cc=axboe@kernel.dk \
--cc=jack@suse.com \
--cc=jmoyer@redhat.com \
--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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
Powered by JetHome