* [PATCH v2 0/3] block/blk-throttle: Fix throttle slice time for SSDs
@ 2025-11-14 23:54 Khazhismel Kumykov
2025-11-14 23:54 ` [PATCH v2 1/3] " Khazhismel Kumykov
` (3 more replies)
0 siblings, 4 replies; 8+ messages in thread
From: Khazhismel Kumykov @ 2025-11-14 23:54 UTC (permalink / raw)
To: Tejun Heo, Josef Bacik, Jens Axboe
Cc: cgroups, linux-block, linux-kernel, Khazhismel Kumykov
Since commit bf20ab538c81 ("blk-throttle: remove CONFIG_BLK_DEV_THROTTLING_LOW"),
the throttle slice time differs between SSD and non-SSD devices. This
causes test failures with slow throttle speeds on SSD devices.
The first patch in the series fixes the problem by restoring the throttle
slice time to a fixed value, matching behavior seen prior to above
mentioned revert. The remaining patches clean up unneeeded code after removing
CONFIG_BLK_DEV_THROTTLING_LOW.
Guenter Roeck (3):
block/blk-throttle: Fix throttle slice time for SSDs
block/blk-throttle: drop unneeded blk_stat_enable_accounting
block/blk-throttle: Remove throtl_slice from struct throtl_data
block/blk-throttle.c | 45 ++++++++++++++------------------------------
1 file changed, 14 insertions(+), 31 deletions(-)
--
v2: block accounting fix into separate patch
2.52.0.rc1.455.g30608eb744-goog
^ permalink raw reply [flat|nested] 8+ messages in thread* [PATCH v2 1/3] block/blk-throttle: Fix throttle slice time for SSDs 2025-11-14 23:54 [PATCH v2 0/3] block/blk-throttle: Fix throttle slice time for SSDs Khazhismel Kumykov @ 2025-11-14 23:54 ` Khazhismel Kumykov 2025-11-15 15:51 ` Yu Kuai 2025-11-14 23:54 ` [PATCH v2 2/3] block/blk-throttle: drop unneeded blk_stat_enable_accounting Khazhismel Kumykov ` (2 subsequent siblings) 3 siblings, 1 reply; 8+ messages in thread From: Khazhismel Kumykov @ 2025-11-14 23:54 UTC (permalink / raw) To: Tejun Heo, Josef Bacik, Jens Axboe Cc: cgroups, linux-block, linux-kernel, Guenter Roeck, Yu Kuai, Khazhismel Kumykov From: Guenter Roeck <linux@roeck-us.net> Commit d61fcfa4bb18 ("blk-throttle: choose a small throtl_slice for SSD") introduced device type specific throttle slices if BLK_DEV_THROTTLING_LOW was enabled. Commit bf20ab538c81 ("blk-throttle: remove CONFIG_BLK_DEV_THROTTLING_LOW") removed support for BLK_DEV_THROTTLING_LOW, but left the device type specific throttle slices in place. This effectively changed throttling behavior on systems with SSD which now use a different and non-configurable slice time compared to non-SSD devices. Practical impact is that throughput tests with low configured throttle values (65536 bps) experience less than expected throughput on SSDs, presumably due to rounding errors associated with the small throttle slice time used for those devices. The same tests pass when setting the throttle values to 65536 * 4 = 262144 bps. The original code sets the throttle slice time to DFL_THROTL_SLICE_HD if CONFIG_BLK_DEV_THROTTLING_LOW is disabled. Restore that code to fix the problem. With that, DFL_THROTL_SLICE_SSD is no longer necessary. Revert to the original code and re-introduce DFL_THROTL_SLICE to replace both DFL_THROTL_SLICE_HD and DFL_THROTL_SLICE_SSD. This effectively reverts commit d61fcfa4bb18 ("blk-throttle: choose a small throtl_slice for SSD"). While at it, also remove MAX_THROTL_SLICE since it is not used anymore. Fixes: bf20ab538c81 ("blk-throttle: remove CONFIG_BLK_DEV_THROTTLING_LOW") Cc: Yu Kuai <yukuai@kernel.org> Cc: Tejun Heo <tj@kernel.org> Signed-off-by: Guenter Roeck <linux@roeck-us.net> Signed-off-by: Khazhismel Kumykov <khazhy@google.com> --- block/blk-throttle.c | 9 ++------- 1 file changed, 2 insertions(+), 7 deletions(-) diff --git a/block/blk-throttle.c b/block/blk-throttle.c index 2c5b64b1a724..c19d052a8f2f 100644 --- a/block/blk-throttle.c +++ b/block/blk-throttle.c @@ -22,9 +22,7 @@ #define THROTL_QUANTUM 32 /* Throttling is performed over a slice and after that slice is renewed */ -#define DFL_THROTL_SLICE_HD (HZ / 10) -#define DFL_THROTL_SLICE_SSD (HZ / 50) -#define MAX_THROTL_SLICE (HZ) +#define DFL_THROTL_SLICE (HZ / 10) /* A workqueue to queue throttle related work */ static struct workqueue_struct *kthrotld_workqueue; @@ -1341,10 +1339,7 @@ static int blk_throtl_init(struct gendisk *disk) goto out; } - if (blk_queue_nonrot(q)) - td->throtl_slice = DFL_THROTL_SLICE_SSD; - else - td->throtl_slice = DFL_THROTL_SLICE_HD; + td->throtl_slice = DFL_THROTL_SLICE; td->track_bio_latency = !queue_is_mq(q); if (!td->track_bio_latency) blk_stat_enable_accounting(q); -- 2.52.0.rc1.455.g30608eb744-goog ^ permalink raw reply related [flat|nested] 8+ messages in thread
* Re: [PATCH v2 1/3] block/blk-throttle: Fix throttle slice time for SSDs 2025-11-14 23:54 ` [PATCH v2 1/3] " Khazhismel Kumykov @ 2025-11-15 15:51 ` Yu Kuai 0 siblings, 0 replies; 8+ messages in thread From: Yu Kuai @ 2025-11-15 15:51 UTC (permalink / raw) To: Khazhismel Kumykov, Tejun Heo, Josef Bacik, Jens Axboe Cc: cgroups, linux-block, linux-kernel, Guenter Roeck, Yu Kuai, Khazhismel Kumykov 在 2025/11/15 7:54, Khazhismel Kumykov 写道: > From: Guenter Roeck<linux@roeck-us.net> > > Commit d61fcfa4bb18 ("blk-throttle: choose a small throtl_slice for SSD") > introduced device type specific throttle slices if BLK_DEV_THROTTLING_LOW > was enabled. Commit bf20ab538c81 ("blk-throttle: remove > CONFIG_BLK_DEV_THROTTLING_LOW") removed support for BLK_DEV_THROTTLING_LOW, > but left the device type specific throttle slices in place. This > effectively changed throttling behavior on systems with SSD which now use > a different and non-configurable slice time compared to non-SSD devices. > Practical impact is that throughput tests with low configured throttle > values (65536 bps) experience less than expected throughput on SSDs, > presumably due to rounding errors associated with the small throttle slice > time used for those devices. The same tests pass when setting the throttle > values to 65536 * 4 = 262144 bps. > > The original code sets the throttle slice time to DFL_THROTL_SLICE_HD if > CONFIG_BLK_DEV_THROTTLING_LOW is disabled. Restore that code to fix the > problem. With that, DFL_THROTL_SLICE_SSD is no longer necessary. Revert to > the original code and re-introduce DFL_THROTL_SLICE to replace both > DFL_THROTL_SLICE_HD and DFL_THROTL_SLICE_SSD. This effectively reverts > commit d61fcfa4bb18 ("blk-throttle: choose a small throtl_slice for SSD"). > > While at it, also remove MAX_THROTL_SLICE since it is not used anymore. > > Fixes: bf20ab538c81 ("blk-throttle: remove CONFIG_BLK_DEV_THROTTLING_LOW") > Cc: Yu Kuai<yukuai@kernel.org> > Cc: Tejun Heo<tj@kernel.org> > Signed-off-by: Guenter Roeck<linux@roeck-us.net> > Signed-off-by: Khazhismel Kumykov<khazhy@google.com> > --- > block/blk-throttle.c | 9 ++------- > 1 file changed, 2 insertions(+), 7 deletions(-) LGTM Reviewed-by: Yu Kuai <yukuai@fnnas.com> -- Thanks Kuai ^ permalink raw reply [flat|nested] 8+ messages in thread
* [PATCH v2 2/3] block/blk-throttle: drop unneeded blk_stat_enable_accounting 2025-11-14 23:54 [PATCH v2 0/3] block/blk-throttle: Fix throttle slice time for SSDs Khazhismel Kumykov 2025-11-14 23:54 ` [PATCH v2 1/3] " Khazhismel Kumykov @ 2025-11-14 23:54 ` Khazhismel Kumykov 2025-11-15 15:53 ` Yu Kuai 2025-11-14 23:54 ` [PATCH v2 3/3] block/blk-throttle: Remove throtl_slice from struct throtl_data Khazhismel Kumykov 2025-11-17 16:42 ` [PATCH v2 0/3] block/blk-throttle: Fix throttle slice time for SSDs Jens Axboe 3 siblings, 1 reply; 8+ messages in thread From: Khazhismel Kumykov @ 2025-11-14 23:54 UTC (permalink / raw) To: Tejun Heo, Josef Bacik, Jens Axboe Cc: cgroups, linux-block, linux-kernel, Guenter Roeck, Yu Kuai, Khazhismel Kumykov From: Guenter Roeck <linux@roeck-us.net> After the removal of CONFIG_BLK_DEV_THROTTLING_LOW, it is no longer necessary to enable block accounting, so remove the call to blk_stat_enable_accounting(). With that, the track_bio_latency variable is no longer used and can be deleted from struct throtl_data. Also, including blk-stat.h is no longer necessary. Fixes: bf20ab538c81 ("blk-throttle: remove CONFIG_BLK_DEV_THROTTLING_LOW") Cc: Yu Kuai <yukuai@kernel.org> Cc: Tejun Heo <tj@kernel.org> Signed-off-by: Guenter Roeck <linux@roeck-us.net> Signed-off-by: Khazhismel Kumykov <khazhy@google.com> --- block/blk-throttle.c | 6 ------ 1 file changed, 6 deletions(-) diff --git a/block/blk-throttle.c b/block/blk-throttle.c index c19d052a8f2f..041bcf7b2c7c 100644 --- a/block/blk-throttle.c +++ b/block/blk-throttle.c @@ -12,7 +12,6 @@ #include <linux/blktrace_api.h> #include "blk.h" #include "blk-cgroup-rwstat.h" -#include "blk-stat.h" #include "blk-throttle.h" /* Max dispatch from a group in 1 round */ @@ -43,8 +42,6 @@ struct throtl_data /* Work for dispatching throttled bios */ struct work_struct dispatch_work; - - bool track_bio_latency; }; static void throtl_pending_timer_fn(struct timer_list *t); @@ -1340,9 +1337,6 @@ static int blk_throtl_init(struct gendisk *disk) } td->throtl_slice = DFL_THROTL_SLICE; - td->track_bio_latency = !queue_is_mq(q); - if (!td->track_bio_latency) - blk_stat_enable_accounting(q); out: blk_mq_unquiesce_queue(disk->queue); -- 2.52.0.rc1.455.g30608eb744-goog ^ permalink raw reply related [flat|nested] 8+ messages in thread
* Re: [PATCH v2 2/3] block/blk-throttle: drop unneeded blk_stat_enable_accounting 2025-11-14 23:54 ` [PATCH v2 2/3] block/blk-throttle: drop unneeded blk_stat_enable_accounting Khazhismel Kumykov @ 2025-11-15 15:53 ` Yu Kuai 0 siblings, 0 replies; 8+ messages in thread From: Yu Kuai @ 2025-11-15 15:53 UTC (permalink / raw) To: Khazhismel Kumykov, Tejun Heo, Josef Bacik, Jens Axboe Cc: cgroups, linux-block, linux-kernel, Guenter Roeck, Yu Kuai, Khazhismel Kumykov 在 2025/11/15 7:54, Khazhismel Kumykov 写道: > From: Guenter Roeck<linux@roeck-us.net> > > After the removal of CONFIG_BLK_DEV_THROTTLING_LOW, it is no longer > necessary to enable block accounting, so remove the call to > blk_stat_enable_accounting(). With that, the track_bio_latency variable > is no longer used and can be deleted from struct throtl_data. Also, > including blk-stat.h is no longer necessary. > > Fixes: bf20ab538c81 ("blk-throttle: remove CONFIG_BLK_DEV_THROTTLING_LOW") > Cc: Yu Kuai<yukuai@kernel.org> > Cc: Tejun Heo<tj@kernel.org> > Signed-off-by: Guenter Roeck<linux@roeck-us.net> > Signed-off-by: Khazhismel Kumykov<khazhy@google.com> > --- > block/blk-throttle.c | 6 ------ > 1 file changed, 6 deletions(-) LGTM Reviewed-by: Yu Kuai <yukuai@fnnas.com> -- Thanks Kuai ^ permalink raw reply [flat|nested] 8+ messages in thread
* [PATCH v2 3/3] block/blk-throttle: Remove throtl_slice from struct throtl_data 2025-11-14 23:54 [PATCH v2 0/3] block/blk-throttle: Fix throttle slice time for SSDs Khazhismel Kumykov 2025-11-14 23:54 ` [PATCH v2 1/3] " Khazhismel Kumykov 2025-11-14 23:54 ` [PATCH v2 2/3] block/blk-throttle: drop unneeded blk_stat_enable_accounting Khazhismel Kumykov @ 2025-11-14 23:54 ` Khazhismel Kumykov 2025-11-15 15:56 ` Yu Kuai 2025-11-17 16:42 ` [PATCH v2 0/3] block/blk-throttle: Fix throttle slice time for SSDs Jens Axboe 3 siblings, 1 reply; 8+ messages in thread From: Khazhismel Kumykov @ 2025-11-14 23:54 UTC (permalink / raw) To: Tejun Heo, Josef Bacik, Jens Axboe Cc: cgroups, linux-block, linux-kernel, Guenter Roeck, Yu Kuai, Khazhismel Kumykov From: Guenter Roeck <linux@roeck-us.net> throtl_slice is now a constant. Remove the variable and use the constant directly where needed. Cc: Yu Kuai <yukuai@kernel.org> Cc: Tejun Heo <tj@kernel.org> Signed-off-by: Guenter Roeck <linux@roeck-us.net> Signed-off-by: Khazhismel Kumykov <khazhy@google.com> --- block/blk-throttle.c | 32 +++++++++++++------------------- 1 file changed, 13 insertions(+), 19 deletions(-) diff --git a/block/blk-throttle.c b/block/blk-throttle.c index 041bcf7b2c7c..97188a795848 100644 --- a/block/blk-throttle.c +++ b/block/blk-throttle.c @@ -38,8 +38,6 @@ struct throtl_data /* Total Number of queued bios on READ and WRITE lists */ unsigned int nr_queued[2]; - unsigned int throtl_slice; - /* Work for dispatching throttled bios */ struct work_struct dispatch_work; }; @@ -446,7 +444,7 @@ static void throtl_dequeue_tg(struct throtl_grp *tg) static void throtl_schedule_pending_timer(struct throtl_service_queue *sq, unsigned long expires) { - unsigned long max_expire = jiffies + 8 * sq_to_td(sq)->throtl_slice; + unsigned long max_expire = jiffies + 8 * DFL_THROTL_SLICE; /* * Since we are adjusting the throttle limit dynamically, the sleep @@ -514,7 +512,7 @@ static inline void throtl_start_new_slice_with_credit(struct throtl_grp *tg, if (time_after(start, tg->slice_start[rw])) tg->slice_start[rw] = start; - tg->slice_end[rw] = jiffies + tg->td->throtl_slice; + tg->slice_end[rw] = jiffies + DFL_THROTL_SLICE; throtl_log(&tg->service_queue, "[%c] new slice with credit start=%lu end=%lu jiffies=%lu", rw == READ ? 'R' : 'W', tg->slice_start[rw], @@ -529,7 +527,7 @@ static inline void throtl_start_new_slice(struct throtl_grp *tg, bool rw, tg->io_disp[rw] = 0; } tg->slice_start[rw] = jiffies; - tg->slice_end[rw] = jiffies + tg->td->throtl_slice; + tg->slice_end[rw] = jiffies + DFL_THROTL_SLICE; throtl_log(&tg->service_queue, "[%c] new slice start=%lu end=%lu jiffies=%lu", @@ -540,7 +538,7 @@ static inline void throtl_start_new_slice(struct throtl_grp *tg, bool rw, static inline void throtl_set_slice_end(struct throtl_grp *tg, bool rw, unsigned long jiffy_end) { - tg->slice_end[rw] = roundup(jiffy_end, tg->td->throtl_slice); + tg->slice_end[rw] = roundup(jiffy_end, DFL_THROTL_SLICE); } static inline void throtl_extend_slice(struct throtl_grp *tg, bool rw, @@ -671,12 +669,12 @@ static inline void throtl_trim_slice(struct throtl_grp *tg, bool rw) * sooner, then we need to reduce slice_end. A high bogus slice_end * is bad because it does not allow new slice to start. */ - throtl_set_slice_end(tg, rw, jiffies + tg->td->throtl_slice); + throtl_set_slice_end(tg, rw, jiffies + DFL_THROTL_SLICE); time_elapsed = rounddown(jiffies - tg->slice_start[rw], - tg->td->throtl_slice); + DFL_THROTL_SLICE); /* Don't trim slice until at least 2 slices are used */ - if (time_elapsed < tg->td->throtl_slice * 2) + if (time_elapsed < DFL_THROTL_SLICE * 2) return; /* @@ -687,7 +685,7 @@ static inline void throtl_trim_slice(struct throtl_grp *tg, bool rw) * lower rate than expected. Therefore, other than the above rounddown, * one extra slice is preserved for deviation. */ - time_elapsed -= tg->td->throtl_slice; + time_elapsed -= DFL_THROTL_SLICE; bytes_trim = throtl_trim_bps(tg, rw, time_elapsed); io_trim = throtl_trim_iops(tg, rw, time_elapsed); if (!bytes_trim && !io_trim) @@ -697,7 +695,7 @@ static inline void throtl_trim_slice(struct throtl_grp *tg, bool rw) throtl_log(&tg->service_queue, "[%c] trim slice nr=%lu bytes=%lld io=%d start=%lu end=%lu jiffies=%lu", - rw == READ ? 'R' : 'W', time_elapsed / tg->td->throtl_slice, + rw == READ ? 'R' : 'W', time_elapsed / DFL_THROTL_SLICE, bytes_trim, io_trim, tg->slice_start[rw], tg->slice_end[rw], jiffies); } @@ -768,7 +766,7 @@ static unsigned long tg_within_iops_limit(struct throtl_grp *tg, struct bio *bio jiffy_elapsed = jiffies - tg->slice_start[rw]; /* Round up to the next throttle slice, wait time must be nonzero */ - jiffy_elapsed_rnd = roundup(jiffy_elapsed + 1, tg->td->throtl_slice); + jiffy_elapsed_rnd = roundup(jiffy_elapsed + 1, DFL_THROTL_SLICE); io_allowed = calculate_io_allowed(iops_limit, jiffy_elapsed_rnd); if (io_allowed > 0 && tg->io_disp[rw] + 1 <= io_allowed) return 0; @@ -794,9 +792,9 @@ static unsigned long tg_within_bps_limit(struct throtl_grp *tg, struct bio *bio, /* Slice has just started. Consider one slice interval */ if (!jiffy_elapsed) - jiffy_elapsed_rnd = tg->td->throtl_slice; + jiffy_elapsed_rnd = DFL_THROTL_SLICE; - jiffy_elapsed_rnd = roundup(jiffy_elapsed_rnd, tg->td->throtl_slice); + jiffy_elapsed_rnd = roundup(jiffy_elapsed_rnd, DFL_THROTL_SLICE); bytes_allowed = calculate_bytes_allowed(bps_limit, jiffy_elapsed_rnd); /* Need to consider the case of bytes_allowed overflow. */ if ((bytes_allowed > 0 && tg->bytes_disp[rw] + bio_size <= bytes_allowed) @@ -848,7 +846,7 @@ static void tg_update_slice(struct throtl_grp *tg, bool rw) sq_queued(&tg->service_queue, rw) == 0) throtl_start_new_slice(tg, rw, true); else - throtl_extend_slice(tg, rw, jiffies + tg->td->throtl_slice); + throtl_extend_slice(tg, rw, jiffies + DFL_THROTL_SLICE); } static unsigned long tg_dispatch_bps_time(struct throtl_grp *tg, struct bio *bio) @@ -1333,12 +1331,8 @@ static int blk_throtl_init(struct gendisk *disk) if (ret) { q->td = NULL; kfree(td); - goto out; } - td->throtl_slice = DFL_THROTL_SLICE; - -out: blk_mq_unquiesce_queue(disk->queue); blk_mq_unfreeze_queue(disk->queue, memflags); -- 2.52.0.rc1.455.g30608eb744-goog ^ permalink raw reply related [flat|nested] 8+ messages in thread
* Re: [PATCH v2 3/3] block/blk-throttle: Remove throtl_slice from struct throtl_data 2025-11-14 23:54 ` [PATCH v2 3/3] block/blk-throttle: Remove throtl_slice from struct throtl_data Khazhismel Kumykov @ 2025-11-15 15:56 ` Yu Kuai 0 siblings, 0 replies; 8+ messages in thread From: Yu Kuai @ 2025-11-15 15:56 UTC (permalink / raw) To: Khazhismel Kumykov, Tejun Heo, Josef Bacik, Jens Axboe Cc: cgroups, linux-block, linux-kernel, Guenter Roeck, Yu Kuai, Khazhismel Kumykov 在 2025/11/15 7:54, Khazhismel Kumykov 写道: > From: Guenter Roeck<linux@roeck-us.net> > > throtl_slice is now a constant. Remove the variable and use the constant > directly where needed. > > Cc: Yu Kuai<yukuai@kernel.org> > Cc: Tejun Heo<tj@kernel.org> > Signed-off-by: Guenter Roeck<linux@roeck-us.net> > Signed-off-by: Khazhismel Kumykov<khazhy@google.com> > --- > block/blk-throttle.c | 32 +++++++++++++------------------- > 1 file changed, 13 insertions(+), 19 deletions(-) LGTM Reviewed-by: Yu Kuai <yukuai@fnnas.com> -- Thanks Kuai ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH v2 0/3] block/blk-throttle: Fix throttle slice time for SSDs 2025-11-14 23:54 [PATCH v2 0/3] block/blk-throttle: Fix throttle slice time for SSDs Khazhismel Kumykov ` (2 preceding siblings ...) 2025-11-14 23:54 ` [PATCH v2 3/3] block/blk-throttle: Remove throtl_slice from struct throtl_data Khazhismel Kumykov @ 2025-11-17 16:42 ` Jens Axboe 3 siblings, 0 replies; 8+ messages in thread From: Jens Axboe @ 2025-11-17 16:42 UTC (permalink / raw) To: Tejun Heo, Josef Bacik, Khazhismel Kumykov Cc: cgroups, linux-block, linux-kernel, Khazhismel Kumykov On Fri, 14 Nov 2025 15:54:31 -0800, Khazhismel Kumykov wrote: > Since commit bf20ab538c81 ("blk-throttle: remove CONFIG_BLK_DEV_THROTTLING_LOW"), > the throttle slice time differs between SSD and non-SSD devices. This > causes test failures with slow throttle speeds on SSD devices. > > The first patch in the series fixes the problem by restoring the throttle > slice time to a fixed value, matching behavior seen prior to above > mentioned revert. The remaining patches clean up unneeeded code after removing > CONFIG_BLK_DEV_THROTTLING_LOW. > > [...] Applied, thanks! [1/3] block/blk-throttle: Fix throttle slice time for SSDs commit: f76581f9f1d29e32e120b0242974ba266e79de58 [2/3] block/blk-throttle: drop unneeded blk_stat_enable_accounting commit: 20d0b359c73d15b25abea04066ef4cdbc6a8738d [3/3] block/blk-throttle: Remove throtl_slice from struct throtl_data commit: 6483faa3938bfbd2c9f8ae090f647635f3bd2877 Best regards, -- Jens Axboe ^ permalink raw reply [flat|nested] 8+ messages in thread
end of thread, other threads:[~2025-11-17 16:42 UTC | newest] Thread overview: 8+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2025-11-14 23:54 [PATCH v2 0/3] block/blk-throttle: Fix throttle slice time for SSDs Khazhismel Kumykov 2025-11-14 23:54 ` [PATCH v2 1/3] " Khazhismel Kumykov 2025-11-15 15:51 ` Yu Kuai 2025-11-14 23:54 ` [PATCH v2 2/3] block/blk-throttle: drop unneeded blk_stat_enable_accounting Khazhismel Kumykov 2025-11-15 15:53 ` Yu Kuai 2025-11-14 23:54 ` [PATCH v2 3/3] block/blk-throttle: Remove throtl_slice from struct throtl_data Khazhismel Kumykov 2025-11-15 15:56 ` Yu Kuai 2025-11-17 16:42 ` [PATCH v2 0/3] block/blk-throttle: Fix throttle slice time for SSDs Jens Axboe
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox