diff mbox

Block: blk-throttle: skip wait time calculation if not asked

Message ID 1531250129-18354-1-git-send-email-bo.liu@linux.alibaba.com (mailing list archive)
State New, archived
Headers show

Commit Message

Liu Bo July 10, 2018, 7:15 p.m. UTC
tg_may_dispatch() uses @wait to retrieve how long the next bio can be
dispatched, but if it doesn't ask for that, it's OK for
tg_with_in_{bps,iops}_limit() to return immediately.

Signed-off-by: Liu Bo <bo.liu@linux.alibaba.com>
---
 block/blk-throttle.c | 12 ++++++++----
 1 file changed, 8 insertions(+), 4 deletions(-)
diff mbox

Patch

diff --git a/block/blk-throttle.c b/block/blk-throttle.c
index 423551f92b2c..c70aa396a793 100644
--- a/block/blk-throttle.c
+++ b/block/blk-throttle.c
@@ -954,6 +954,9 @@  static bool tg_with_in_iops_limit(struct throtl_grp *tg, struct bio *bio,
 		return true;
 	}
 
+	if (!wait)
+		return false;
+
 	/* Calc approx time to dispatch */
 	jiffy_wait = ((tg->io_disp[rw] + 1) * HZ) / tg_iops_limit(tg, rw) + 1;
 
@@ -962,8 +965,7 @@  static bool tg_with_in_iops_limit(struct throtl_grp *tg, struct bio *bio,
 	else
 		jiffy_wait = 1;
 
-	if (wait)
-		*wait = jiffy_wait;
+	*wait = jiffy_wait;
 	return false;
 }
 
@@ -995,6 +997,9 @@  static bool tg_with_in_bps_limit(struct throtl_grp *tg, struct bio *bio,
 		return true;
 	}
 
+	if (!wait)
+		return false;
+
 	/* Calc approx time to dispatch */
 	extra_bytes = tg->bytes_disp[rw] + bio_size - bytes_allowed;
 	jiffy_wait = div64_u64(extra_bytes * HZ, tg_bps_limit(tg, rw));
@@ -1007,8 +1012,7 @@  static bool tg_with_in_bps_limit(struct throtl_grp *tg, struct bio *bio,
 	 * up we did. Add that time also.
 	 */
 	jiffy_wait = jiffy_wait + (jiffy_elapsed_rnd - jiffy_elapsed);
-	if (wait)
-		*wait = jiffy_wait;
+	*wait = jiffy_wait;
 	return false;
 }