[PATCH v3 01/19] block: Add PR callouts for read keys and reservation
Mike Christie
michael.christie at oracle.com
Wed Nov 2 18:54:02 PDT 2022
On 11/2/22 5:50 PM, Bart Van Assche wrote:
> On 10/26/22 16:19, Mike Christie wrote:
>> +struct pr_keys {
>> + u32 generation;
>> + u32 num_keys;
>> + u64 keys[];
>> +};
>> +
>> +struct pr_held_reservation {
>> + u64 key;
>> + u32 generation;
>> + enum pr_type type;
>> +};
>> +
>> struct pr_ops {
>> int (*pr_register)(struct block_device *bdev, u64 old_key, u64 new_key,
>> u32 flags);
>> @@ -14,6 +26,18 @@ struct pr_ops {
>> int (*pr_preempt)(struct block_device *bdev, u64 old_key, u64 new_key,
>> enum pr_type type, bool abort);
>> int (*pr_clear)(struct block_device *bdev, u64 key);
>> + /*
>> + * pr_read_keys - Read the registered keys and return them in the
>> + * pr_keys->keys array. The keys array will have been allocated at the
>> + * end of the pr_keys struct and is keys_len bytes. If there are more
>> + * keys than can fit in the array, success will still be returned and
>> + * pr_keys->num_keys will reflect the total number of keys the device
>> + * contains, so the caller can retry with a larger array.
>> + */
>> + int (*pr_read_keys)(struct block_device *bdev,
>> + struct pr_keys *keys_info, u32 keys_len);
>> + int (*pr_read_reservation)(struct block_device *bdev,
>> + struct pr_held_reservation *rsv);
>> };
>
> Is there any pr_read_keys() implementation that won't have to divide @keys_len by 8? How about leaving out that argument and making callers store the number of elements in the keys[] array in the num_keys member before calling pr_read_keys()?
That seems ok to me.
More information about the Linux-nvme
mailing list