This patch refers to Jens Axboe's change way back in 2006:
7b14e3b52 cfq-iosched: slice expiry fixups
In this patch he fixed a potential timer race condition by delaying
idle_slice_timer by the slice_idle time value.
Today this timer is delayed by either slice_idle or group_idle time
values, which on my system, and according to
Documentation/block/cfq-iosched.txt the default value for group_idle
is 8ms.
Since the time given by group_idle is supposed to be in milliseconds
we should convert that value from milliseconds to jiffies before
adding it to jiffies variable and setting our timer.
Signed-off-by: Alexandru Moise <[email protected]>
---
V2: slice_idle not in miliseconds, convert only group_idle
block/cfq-iosched.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/block/cfq-iosched.c b/block/cfq-iosched.c
index 1f9093e..088c45d 100644
--- a/block/cfq-iosched.c
+++ b/block/cfq-iosched.c
@@ -2954,7 +2954,7 @@ static void cfq_arm_slice_timer(struct cfq_data *cfqd)
cfq_mark_cfqq_wait_request(cfqq);
if (group_idle)
- sl = cfqd->cfq_group_idle;
+ sl = msecs_to_jiffies(cfqd->cfq_group_idle);
else
sl = cfqd->cfq_slice_idle;
--
1.9.1
On 12/29/2015 01:16 PM, Alexandru Moise wrote:
> This patch refers to Jens Axboe's change way back in 2006:
> 7b14e3b52 cfq-iosched: slice expiry fixups
>
> In this patch he fixed a potential timer race condition by delaying
> idle_slice_timer by the slice_idle time value.
>
> Today this timer is delayed by either slice_idle or group_idle time
> values, which on my system, and according to
> Documentation/block/cfq-iosched.txt the default value for group_idle
> is 8ms.
>
> Since the time given by group_idle is supposed to be in milliseconds
> we should convert that value from milliseconds to jiffies before
> adding it to jiffies variable and setting our timer.
Again, the slice idle values are stored in jiffies, there's no need to
convert. I think you are missing the fact that we display the value in
msecs, and convert when displaying/storing through sysfs.
--
Jens Axboe
On Tue, Dec 29, 2015 at 01:19:57PM -0700, Jens Axboe wrote:
> On 12/29/2015 01:16 PM, Alexandru Moise wrote:
> >This patch refers to Jens Axboe's change way back in 2006:
> >7b14e3b52 cfq-iosched: slice expiry fixups
> >
> >In this patch he fixed a potential timer race condition by delaying
> >idle_slice_timer by the slice_idle time value.
> >
> >Today this timer is delayed by either slice_idle or group_idle time
> >values, which on my system, and according to
> >Documentation/block/cfq-iosched.txt the default value for group_idle
> >is 8ms.
> >
> >Since the time given by group_idle is supposed to be in milliseconds
> >we should convert that value from milliseconds to jiffies before
> >adding it to jiffies variable and setting our timer.
>
> Again, the slice idle values are stored in jiffies, there's no need
> to convert. I think you are missing the fact that we display the
> value in msecs, and convert when displaying/storing through sysfs.
>
> --
> Jens Axboe
>
Damn, yeah just saw the conversion in the STORE/SHOW_FUNCTION macros.
My bad..