summaryrefslogtreecommitdiffstats
path: root/block/blk-throttle.c
diff options
context:
space:
mode:
authorDavid S. Miller <davem@davemloft.net>2016-10-03 03:17:07 +0200
committerDavid S. Miller <davem@davemloft.net>2016-10-03 04:20:41 +0200
commitb50afd203a5ef1998c18d6519ad2b2c546d6af22 (patch)
tree608e6845e78a4ffe623c7cdf6581e29e2d9be0a9 /block/blk-throttle.c
parentnet: Use ns_capable_noaudit() when determining net sysctl permissions (diff)
parentLinux 4.8 (diff)
downloadlinux-b50afd203a5ef1998c18d6519ad2b2c546d6af22.tar.xz
linux-b50afd203a5ef1998c18d6519ad2b2c546d6af22.zip
Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net
Three sets of overlapping changes. Nothing serious. Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'block/blk-throttle.c')
-rw-r--r--block/blk-throttle.c6
1 files changed, 4 insertions, 2 deletions
diff --git a/block/blk-throttle.c b/block/blk-throttle.c
index f1aba26f4719..a3ea8260c94c 100644
--- a/block/blk-throttle.c
+++ b/block/blk-throttle.c
@@ -780,9 +780,11 @@ static bool tg_may_dispatch(struct throtl_grp *tg, struct bio *bio,
/*
* If previous slice expired, start a new one otherwise renew/extend
* existing slice to make sure it is at least throtl_slice interval
- * long since now.
+ * long since now. New slice is started only for empty throttle group.
+ * If there is queued bio, that means there should be an active
+ * slice and it should be extended instead.
*/
- if (throtl_slice_used(tg, rw))
+ if (throtl_slice_used(tg, rw) && !(tg->service_queue.nr_queued[rw]))
throtl_start_new_slice(tg, rw);
else {
if (time_before(tg->slice_end[rw], jiffies + throtl_slice))