]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
nvme: add reservation command's defines
authorGuixin Liu <kanie@linux.alibaba.com>
Wed, 6 Nov 2024 07:34:45 +0000 (15:34 +0800)
committerKeith Busch <kbusch@kernel.org>
Thu, 7 Nov 2024 19:48:46 +0000 (11:48 -0800)
This is a preparation patch for NVMeOF target reservation
commands implantation.
Add the defines of reservation command, such as reservation log
and sub operations.

Signed-off-by: Guixin Liu <kanie@linux.alibaba.com>
Tested-by: Chaitanya Kulkarni <kch@nvidia.com>
Reviewed-by: Chaitanya Kulkarni <kch@nvidia.com>
Reviewed-by: Christoph Hellwig <hch@lst.de>
Signed-off-by: Keith Busch <kbusch@kernel.org>
include/linux/nvme.h

index b58d9405d65e013e6e25371379ae6ae1419c0bd3..44d048d68503e71a984dd1f7515f2e21ac6f4733 100644 (file)
@@ -2037,4 +2037,72 @@ struct nvme_completion {
 #define NVME_MINOR(ver)                (((ver) >> 8) & 0xff)
 #define NVME_TERTIARY(ver)     ((ver) & 0xff)
 
+enum {
+       NVME_AEN_RESV_LOG_PAGE_AVALIABLE        = 0x00,
+};
+
+enum {
+       NVME_PR_LOG_EMPTY_LOG_PAGE                      = 0x00,
+       NVME_PR_LOG_REGISTRATION_PREEMPTED              = 0x01,
+       NVME_PR_LOG_RESERVATION_RELEASED                = 0x02,
+       NVME_PR_LOG_RESERVATOPM_PREEMPTED               = 0x03,
+};
+
+enum {
+       NVME_PR_NOTIFY_BIT_REG_PREEMPTED                = 1,
+       NVME_PR_NOTIFY_BIT_RESV_RELEASED                = 2,
+       NVME_PR_NOTIFY_BIT_RESV_PREEMPTED               = 3,
+};
+
+struct nvme_pr_log {
+       __le64                  count;
+       __u8                    type;
+       __u8                    nr_pages;
+       __u8                    rsvd1[2];
+       __le32                  nsid;
+       __u8                    rsvd2[48];
+};
+
+struct nvmet_pr_register_data {
+       __le64  crkey;
+       __le64  nrkey;
+};
+
+struct nvmet_pr_acquire_data {
+       __le64  crkey;
+       __le64  prkey;
+};
+
+struct nvmet_pr_release_data {
+       __le64  crkey;
+};
+
+enum nvme_pr_capabilities {
+       NVME_PR_SUPPORT_PTPL                            = 1,
+       NVME_PR_SUPPORT_WRITE_EXCLUSIVE                 = 1 << 1,
+       NVME_PR_SUPPORT_EXCLUSIVE_ACCESS                = 1 << 2,
+       NVME_PR_SUPPORT_WRITE_EXCLUSIVE_REG_ONLY        = 1 << 3,
+       NVME_PR_SUPPORT_EXCLUSIVE_ACCESS_REG_ONLY       = 1 << 4,
+       NVME_PR_SUPPORT_WRITE_EXCLUSIVE_ALL_REGS        = 1 << 5,
+       NVME_PR_SUPPORT_EXCLUSIVE_ACCESS_ALL_REGS       = 1 << 6,
+       NVME_PR_SUPPORT_IEKEY_VER_1_3_DEF               = 1 << 7,
+};
+
+enum nvme_pr_register_action {
+       NVME_PR_REGISTER_ACT_REG                = 0,
+       NVME_PR_REGISTER_ACT_UNREG              = 1,
+       NVME_PR_REGISTER_ACT_REPLACE            = 1 << 1,
+};
+
+enum nvme_pr_acquire_action {
+       NVME_PR_ACQUIRE_ACT_ACQUIRE             = 0,
+       NVME_PR_ACQUIRE_ACT_PREEMPT             = 1,
+       NVME_PR_ACQUIRE_ACT_PREEMPT_AND_ABORT   = 1 << 1,
+};
+
+enum nvme_pr_release_action {
+       NVME_PR_RELEASE_ACT_RELEASE             = 0,
+       NVME_PR_RELEASE_ACT_CLEAR               = 1,
+};
+
 #endif /* _LINUX_NVME_H */