Re: [PATCH v3 2/3] fs: Convert kiocb rw_hint from enum to u16

From: Jens Axboe
Date: Wed May 09 2018 - 10:23:08 EST


On 5/9/18 7:34 AM, Theodore Y. Ts'o wrote:
> On Tue, May 08, 2018 at 10:42:01AM -0700, adam.manzanares@xxxxxxx wrote:
>> diff --git a/include/linux/fs.h b/include/linux/fs.h
>> index 760d8da1b6c7..7a90ce387e00 100644
>> --- a/include/linux/fs.h
>> +++ b/include/linux/fs.h
>> @@ -284,6 +284,8 @@ enum rw_hint {
>> WRITE_LIFE_EXTREME = RWH_WRITE_LIFE_EXTREME,
>> };
>>
>> +#define MAX_KI_HINT ((1 << 16) - 1) /* ki_hint type is u16 */
>> +
>
> Do we really think there will be *ever* be a need for more than 16 I/O
> priority levels? I would much rather use the low four bits of KI_HINT
> for the priority level, and reserve the rest of the 16 bits in KI_HINT
> for some future use. (For example, we might want to use some number
> of bits for a stream ID.)

Streams is essentially the only thing ki_hint is currently used for,
with the write life time hints mapping to a stream. The idea for the
user side API was to have other things than just write life time hints.

Since Adam wants to do priorities, he'd either need to pack into the
existing ki_hint, or do this patch does, which is make it smaller and
add a new member. I think the latter is cleaner.

--
Jens Axboe