blk-throttle: Fix IO hang for a corner case

It can not scale up in throtl_adjusted_limit() if we set bps or iops is
1, which will cause IO hang when enable low limit. Thus we should treat
1 as a illegal value to avoid this issue.

Signed-off-by: Baolin Wang <baolin.wang@linux.alibaba.com>
Signed-off-by: Jens Axboe <axboe@kernel.dk>
This commit is contained in:
Baolin Wang 2020-10-08 11:52:25 +08:00 committed by Jens Axboe
parent b185efa78b
commit 5b7048b897

View File

@ -1687,13 +1687,13 @@ static ssize_t tg_set_limit(struct kernfs_open_file *of,
goto out_finish; goto out_finish;
ret = -EINVAL; ret = -EINVAL;
if (!strcmp(tok, "rbps")) if (!strcmp(tok, "rbps") && val > 1)
v[0] = val; v[0] = val;
else if (!strcmp(tok, "wbps")) else if (!strcmp(tok, "wbps") && val > 1)
v[1] = val; v[1] = val;
else if (!strcmp(tok, "riops")) else if (!strcmp(tok, "riops") && val > 1)
v[2] = min_t(u64, val, UINT_MAX); v[2] = min_t(u64, val, UINT_MAX);
else if (!strcmp(tok, "wiops")) else if (!strcmp(tok, "wiops") && val > 1)
v[3] = min_t(u64, val, UINT_MAX); v[3] = min_t(u64, val, UINT_MAX);
else if (off == LIMIT_LOW && !strcmp(tok, "idle")) else if (off == LIMIT_LOW && !strcmp(tok, "idle"))
idle_time = val; idle_time = val;