Files
linux/include/uapi/linux
Damien Le Moal 01584c1e23 scsi: block: Improve ioprio value validity checks
The introduction of the macro IOPRIO_PRIO_LEVEL() in commit eca2040972
("scsi: block: ioprio: Clean up interface definition") results in an
iopriority level to always be masked using the macro IOPRIO_LEVEL_MASK, and
thus to the kernel always seeing an acceptable value for an I/O priority
level when checked in ioprio_check_cap().  Before this patch, this function
would return an error for some (but not all) invalid values for a level
valid range of [0..7].

Restore and improve the detection of invalid priority levels by introducing
the inline function ioprio_value() to check an ioprio class, level and hint
value before combining these fields into a single value to be used with
ioprio_set() or AIOs. If an invalid value for the class, level or hint of
an ioprio is detected, ioprio_value() returns an ioprio using the class
IOPRIO_CLASS_INVALID, indicating an invalid value and causing
ioprio_check_cap() to return -EINVAL.

Fixes: 6c91325722 ("scsi: block: Introduce ioprio hints")
Fixes: eca2040972 ("scsi: block: ioprio: Clean up interface definition")
Signed-off-by: Damien Le Moal <dlemoal@kernel.org>
Link: https://lore.kernel.org/r/20230608095556.124001-1-dlemoal@kernel.org
Reviewed-by: Niklas Cassel <niklas.cassel@wdc.com>
Reviewed-by: Linus Walleij <linus.walleij@linaro.org>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
2023-06-16 12:04:30 -04:00
..
2022-09-15 09:08:09 +02:00
2022-04-19 13:13:47 +01:00
2021-11-01 13:36:08 +00:00
2022-08-11 10:31:19 -07:00
2022-06-07 10:20:42 -07:00
2021-11-26 16:48:59 +01:00
2023-04-22 14:41:30 -07:00
2023-01-20 09:33:22 +00:00
2023-03-06 15:49:07 -06:00
2022-04-04 08:55:23 +02:00
2023-01-18 17:12:37 -08:00
2023-03-16 21:20:32 -07:00
2021-10-07 13:51:11 +02:00
2022-08-10 13:49:50 +01:00
2022-03-11 08:28:05 -08:00
2021-11-15 07:53:10 -08:00
2022-06-03 20:09:27 +08:00
2022-09-20 09:13:38 +02:00
2023-03-23 17:25:46 +01:00
2022-12-01 20:06:06 -08:00
2023-04-27 19:15:11 -06:00
2023-03-16 21:20:32 -07:00
2022-09-07 16:46:03 +02:00
2022-09-20 09:13:38 +02:00
2023-01-26 10:52:18 +01:00
2022-11-17 11:04:23 -08:00
2022-09-27 17:29:09 -07:00
2023-03-23 17:25:46 +01:00
2023-02-20 19:26:56 -05:00
2023-04-15 09:11:30 +01:00
2022-12-05 10:30:47 +01:00