Commit c787f1ba authored by Mike Christie's avatar Mike Christie Committed by Martin K. Petersen

block: Add PR callouts for read keys and reservation

Add callouts for reading keys and reservations. This allows LIO to support
the READ_KEYS and READ_RESERVATION commands so it can export devices to
VMs for software like windows clustering.
Signed-off-by: default avatarMike Christie <michael.christie@oracle.com>
Link: https://lore.kernel.org/r/20230407200551.12660-2-michael.christie@oracle.comReviewed-by: default avatarChaitanya Kulkarni <kch@nvidia.com>
Reviewed-by: default avatarChristoph Hellwig <hch@lst.de>
Reviewed-by: default avatarBart Van Assche <bvanassche@acm.org>
Reviewed-by: default avatarHannes Reinecke <hare@suse.de>
Signed-off-by: default avatarMartin K. Petersen <martin.petersen@oracle.com>
parent fe15c26e
......@@ -4,6 +4,18 @@
#include <uapi/linux/pr.h>
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,19 @@ 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 pr_keys->num_keys must be set to the
* number of keys the array can hold. If there are more 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);
int (*pr_read_reservation)(struct block_device *bdev,
struct pr_held_reservation *rsv);
};
#endif /* LINUX_PR_H */
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment