summaryrefslogtreecommitdiffstats
path: root/block/cfq-iosched.c
diff options
context:
space:
mode:
authorTejun Heo <tj@kernel.org>2015-08-18 17:54:57 -0400
committerJens Axboe <axboe@fb.com>2015-08-18 18:49:15 -0400
commit4ebc1c61d6185604c97fd0b0355ab668052044ab (patch)
tree366acca07997da745139dba40070eea624f768b9 /block/cfq-iosched.c
parent5634cc2aa9aebc77bc862992e7805469dcf83dac (diff)
cfq-iosched: simplify control flow in cfq_get_queue()
cfq_get_queue()'s control flow looks like the following. async_cfqq = NULL; cfqq = NULL; if (!is_sync) { ... async_cfqq = ...; cfqq = *async_cfqq; } if (!cfqq) cfqq = ...; if (!is_sync && !(*async_cfqq)) ...; The only thing the local variable init, the second if, and the async_cfqq test in the third if achieves is to skip cfqq creation and installation if *async_cfqq was already non-NULL. This is needlessly complicated with different tests examining the same condition. Simplify it to the following. if (!is_sync) { ... async_cfqq = ...; cfqq = *async_cfqq; if (cfqq) goto out; } cfqq = ...; if (!is_sync) ...; out: Signed-off-by: Tejun Heo <tj@kernel.org> Acked-by: Jeff Moyer <jmoyer@redhat.com> Cc: Vivek Goyal <vgoyal@redhat.com> Cc: Arianna Avanzini <avanzini.arianna@gmail.com> Signed-off-by: Jens Axboe <axboe@fb.com>
Diffstat (limited to 'block/cfq-iosched.c')
-rw-r--r--block/cfq-iosched.c13
1 files changed, 7 insertions, 6 deletions
diff --git a/block/cfq-iosched.c b/block/cfq-iosched.c
index c62bb2e650b8..e91093d0c0eb 100644
--- a/block/cfq-iosched.c
+++ b/block/cfq-iosched.c
@@ -3731,8 +3731,8 @@ cfq_get_queue(struct cfq_data *cfqd, bool is_sync, struct cfq_io_cq *cic,
3731{ 3731{
3732 int ioprio_class = IOPRIO_PRIO_CLASS(cic->ioprio); 3732 int ioprio_class = IOPRIO_PRIO_CLASS(cic->ioprio);
3733 int ioprio = IOPRIO_PRIO_DATA(cic->ioprio); 3733 int ioprio = IOPRIO_PRIO_DATA(cic->ioprio);
3734 struct cfq_queue **async_cfqq = NULL; 3734 struct cfq_queue **async_cfqq;
3735 struct cfq_queue *cfqq = NULL; 3735 struct cfq_queue *cfqq;
3736 3736
3737 if (!is_sync) { 3737 if (!is_sync) {
3738 if (!ioprio_valid(cic->ioprio)) { 3738 if (!ioprio_valid(cic->ioprio)) {
@@ -3742,19 +3742,20 @@ cfq_get_queue(struct cfq_data *cfqd, bool is_sync, struct cfq_io_cq *cic,
3742 } 3742 }
3743 async_cfqq = cfq_async_queue_prio(cfqd, ioprio_class, ioprio); 3743 async_cfqq = cfq_async_queue_prio(cfqd, ioprio_class, ioprio);
3744 cfqq = *async_cfqq; 3744 cfqq = *async_cfqq;
3745 if (cfqq)
3746 goto out;
3745 } 3747 }
3746 3748
3747 if (!cfqq) 3749 cfqq = cfq_find_alloc_queue(cfqd, is_sync, cic, bio, gfp_mask);
3748 cfqq = cfq_find_alloc_queue(cfqd, is_sync, cic, bio, gfp_mask);
3749 3750
3750 /* 3751 /*
3751 * pin the queue now that it's allocated, scheduler exit will prune it 3752 * pin the queue now that it's allocated, scheduler exit will prune it
3752 */ 3753 */
3753 if (!is_sync && !(*async_cfqq)) { 3754 if (!is_sync) {
3754 cfqq->ref++; 3755 cfqq->ref++;
3755 *async_cfqq = cfqq; 3756 *async_cfqq = cfqq;
3756 } 3757 }
3757 3758out:
3758 cfqq->ref++; 3759 cfqq->ref++;
3759 return cfqq; 3760 return cfqq;
3760} 3761}