summaryrefslogtreecommitdiffstats
path: root/block
diff options
context:
space:
mode:
authorDaniel Baumann <daniel.baumann@progress-linux.org>2024-06-03 19:25:32 +0000
committerDaniel Baumann <daniel.baumann@progress-linux.org>2024-06-03 19:25:32 +0000
commite8d3ef9fa6e1265bce5992d8f77414220b39d2d9 (patch)
tree09bf132380f6d9b925db951e6521776afea25d83 /block
parentReleasing progress-linux version 5.10.216-1progress6u1. (diff)
downloadlinux-e8d3ef9fa6e1265bce5992d8f77414220b39d2d9.tar.xz
linux-e8d3ef9fa6e1265bce5992d8f77414220b39d2d9.zip
Merging upstream version 5.10.218.
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'block')
-rw-r--r--block/blk-iocost.c7
1 files changed, 4 insertions, 3 deletions
diff --git a/block/blk-iocost.c b/block/blk-iocost.c
index 63a8fb456..fe5b0c79e 100644
--- a/block/blk-iocost.c
+++ b/block/blk-iocost.c
@@ -1290,7 +1290,7 @@ static bool iocg_kick_delay(struct ioc_gq *iocg, struct ioc_now *now)
{
struct ioc *ioc = iocg->ioc;
struct blkcg_gq *blkg = iocg_to_blkg(iocg);
- u64 tdelta, delay, new_delay;
+ u64 tdelta, delay, new_delay, shift;
s64 vover, vover_pct;
u32 hwa;
@@ -1305,8 +1305,9 @@ static bool iocg_kick_delay(struct ioc_gq *iocg, struct ioc_now *now)
/* calculate the current delay in effect - 1/2 every second */
tdelta = now->now - iocg->delay_at;
- if (iocg->delay)
- delay = iocg->delay >> div64_u64(tdelta, USEC_PER_SEC);
+ shift = div64_u64(tdelta, USEC_PER_SEC);
+ if (iocg->delay && shift < BITS_PER_LONG)
+ delay = iocg->delay >> shift;
else
delay = 0;