From: Mike Christie <michael.christie@oracle.com> To: bvanassche@acm.org, hch@lst.de, martin.petersen@oracle.com, linux-scsi@vger.kernel.org, james.bottomley@hansenpartnership.com, linux-block@vger.kernel.org, dm-devel@redhat.com, snitzer@kernel.org, axboe@kernel.dk, linux-nvme@lists.infradead.org, chaitanyak@nvidia.com, kbusch@kernel.org, target-devel@vger.kernel.org Cc: Mike Christie <michael.christie@oracle.com> Subject: [PATCH v3 03/19] scsi: Move sd_pr_type to header to share Date: Wed, 26 Oct 2022 18:19:29 -0500 [thread overview] Message-ID: <20221026231945.6609-4-michael.christie@oracle.com> (raw) In-Reply-To: <20221026231945.6609-1-michael.christie@oracle.com> LIO is going to want to do the same block to/from SCSI pr types as sd.c so this moves the sd_pr_type helper to a new file. The next patch will then also add a helper to go from the SCSI value to the block one for use with PERSISTENT_RESERVE_IN commands. Signed-off-by: Mike Christie <michael.christie@oracle.com> Reviewed-by: Christoph Hellwig <hch@lst.de> --- drivers/scsi/sd.c | 31 +++++++------------------------ include/scsi/scsi_block_pr.h | 36 ++++++++++++++++++++++++++++++++++++ 2 files changed, 43 insertions(+), 24 deletions(-) create mode 100644 include/scsi/scsi_block_pr.h diff --git a/drivers/scsi/sd.c b/drivers/scsi/sd.c index 4dc5c932fbd3..ad9374b07585 100644 --- a/drivers/scsi/sd.c +++ b/drivers/scsi/sd.c @@ -67,6 +67,7 @@ #include <scsi/scsi_host.h> #include <scsi/scsi_ioctl.h> #include <scsi/scsicam.h> +#include <scsi/scsi_block_pr.h> #include "sd.h" #include "scsi_priv.h" @@ -1694,28 +1695,8 @@ static int sd_get_unique_id(struct gendisk *disk, u8 id[16], return ret; } -static char sd_pr_type(enum pr_type type) -{ - switch (type) { - case PR_WRITE_EXCLUSIVE: - return 0x01; - case PR_EXCLUSIVE_ACCESS: - return 0x03; - case PR_WRITE_EXCLUSIVE_REG_ONLY: - return 0x05; - case PR_EXCLUSIVE_ACCESS_REG_ONLY: - return 0x06; - case PR_WRITE_EXCLUSIVE_ALL_REGS: - return 0x07; - case PR_EXCLUSIVE_ACCESS_ALL_REGS: - return 0x08; - default: - return 0; - } -}; - static int sd_pr_out_command(struct block_device *bdev, u8 sa, - u64 key, u64 sa_key, u8 type, u8 flags) + u64 key, u64 sa_key, enum scsi_pr_type type, u8 flags) { struct scsi_disk *sdkp = scsi_disk(bdev->bd_disk); struct scsi_device *sdev = sdkp->device; @@ -1778,19 +1759,21 @@ static int sd_pr_reserve(struct block_device *bdev, u64 key, enum pr_type type, { if (flags) return -EOPNOTSUPP; - return sd_pr_out_command(bdev, 0x01, key, 0, sd_pr_type(type), 0); + return sd_pr_out_command(bdev, 0x01, key, 0, + block_pr_type_to_scsi(type), 0); } static int sd_pr_release(struct block_device *bdev, u64 key, enum pr_type type) { - return sd_pr_out_command(bdev, 0x02, key, 0, sd_pr_type(type), 0); + return sd_pr_out_command(bdev, 0x02, key, 0, + block_pr_type_to_scsi(type), 0); } static int sd_pr_preempt(struct block_device *bdev, u64 old_key, u64 new_key, enum pr_type type, bool abort) { return sd_pr_out_command(bdev, abort ? 0x05 : 0x04, old_key, new_key, - sd_pr_type(type), 0); + block_pr_type_to_scsi(type), 0); } static int sd_pr_clear(struct block_device *bdev, u64 key) diff --git a/include/scsi/scsi_block_pr.h b/include/scsi/scsi_block_pr.h new file mode 100644 index 000000000000..6e99f844330d --- /dev/null +++ b/include/scsi/scsi_block_pr.h @@ -0,0 +1,36 @@ +/* SPDX-License-Identifier: GPL-2.0 */ +#ifndef _SCSI_BLOCK_PR_H +#define _SCSI_BLOCK_PR_H + +#include <uapi/linux/pr.h> + +enum scsi_pr_type { + SCSI_PR_WRITE_EXCLUSIVE = 0x01, + SCSI_PR_EXCLUSIVE_ACCESS = 0x03, + SCSI_PR_WRITE_EXCLUSIVE_REG_ONLY = 0x05, + SCSI_PR_EXCLUSIVE_ACCESS_REG_ONLY = 0x06, + SCSI_PR_WRITE_EXCLUSIVE_ALL_REGS = 0x07, + SCSI_PR_EXCLUSIVE_ACCESS_ALL_REGS = 0x08, +}; + +static inline enum scsi_pr_type block_pr_type_to_scsi(enum pr_type type) +{ + switch (type) { + case PR_WRITE_EXCLUSIVE: + return SCSI_PR_WRITE_EXCLUSIVE; + case PR_EXCLUSIVE_ACCESS: + return SCSI_PR_EXCLUSIVE_ACCESS; + case PR_WRITE_EXCLUSIVE_REG_ONLY: + return SCSI_PR_WRITE_EXCLUSIVE_REG_ONLY; + case PR_EXCLUSIVE_ACCESS_REG_ONLY: + return SCSI_PR_EXCLUSIVE_ACCESS_REG_ONLY; + case PR_WRITE_EXCLUSIVE_ALL_REGS: + return SCSI_PR_WRITE_EXCLUSIVE_ALL_REGS; + case PR_EXCLUSIVE_ACCESS_ALL_REGS: + return SCSI_PR_EXCLUSIVE_ACCESS_ALL_REGS; + default: + return 0; + } +}; + +#endif -- 2.25.1
WARNING: multiple messages have this Message-ID (diff)
From: Mike Christie <michael.christie@oracle.com> To: bvanassche@acm.org, hch@lst.de, martin.petersen@oracle.com, linux-scsi@vger.kernel.org, james.bottomley@hansenpartnership.com, linux-block@vger.kernel.org, dm-devel@redhat.com, snitzer@kernel.org, axboe@kernel.dk, linux-nvme@lists.infradead.org, chaitanyak@nvidia.com, kbusch@kernel.org, target-devel@vger.kernel.org Cc: Mike Christie <michael.christie@oracle.com> Subject: [dm-devel] [PATCH v3 03/19] scsi: Move sd_pr_type to header to share Date: Wed, 26 Oct 2022 18:19:29 -0500 [thread overview] Message-ID: <20221026231945.6609-4-michael.christie@oracle.com> (raw) In-Reply-To: <20221026231945.6609-1-michael.christie@oracle.com> LIO is going to want to do the same block to/from SCSI pr types as sd.c so this moves the sd_pr_type helper to a new file. The next patch will then also add a helper to go from the SCSI value to the block one for use with PERSISTENT_RESERVE_IN commands. Signed-off-by: Mike Christie <michael.christie@oracle.com> Reviewed-by: Christoph Hellwig <hch@lst.de> --- drivers/scsi/sd.c | 31 +++++++------------------------ include/scsi/scsi_block_pr.h | 36 ++++++++++++++++++++++++++++++++++++ 2 files changed, 43 insertions(+), 24 deletions(-) create mode 100644 include/scsi/scsi_block_pr.h diff --git a/drivers/scsi/sd.c b/drivers/scsi/sd.c index 4dc5c932fbd3..ad9374b07585 100644 --- a/drivers/scsi/sd.c +++ b/drivers/scsi/sd.c @@ -67,6 +67,7 @@ #include <scsi/scsi_host.h> #include <scsi/scsi_ioctl.h> #include <scsi/scsicam.h> +#include <scsi/scsi_block_pr.h> #include "sd.h" #include "scsi_priv.h" @@ -1694,28 +1695,8 @@ static int sd_get_unique_id(struct gendisk *disk, u8 id[16], return ret; } -static char sd_pr_type(enum pr_type type) -{ - switch (type) { - case PR_WRITE_EXCLUSIVE: - return 0x01; - case PR_EXCLUSIVE_ACCESS: - return 0x03; - case PR_WRITE_EXCLUSIVE_REG_ONLY: - return 0x05; - case PR_EXCLUSIVE_ACCESS_REG_ONLY: - return 0x06; - case PR_WRITE_EXCLUSIVE_ALL_REGS: - return 0x07; - case PR_EXCLUSIVE_ACCESS_ALL_REGS: - return 0x08; - default: - return 0; - } -}; - static int sd_pr_out_command(struct block_device *bdev, u8 sa, - u64 key, u64 sa_key, u8 type, u8 flags) + u64 key, u64 sa_key, enum scsi_pr_type type, u8 flags) { struct scsi_disk *sdkp = scsi_disk(bdev->bd_disk); struct scsi_device *sdev = sdkp->device; @@ -1778,19 +1759,21 @@ static int sd_pr_reserve(struct block_device *bdev, u64 key, enum pr_type type, { if (flags) return -EOPNOTSUPP; - return sd_pr_out_command(bdev, 0x01, key, 0, sd_pr_type(type), 0); + return sd_pr_out_command(bdev, 0x01, key, 0, + block_pr_type_to_scsi(type), 0); } static int sd_pr_release(struct block_device *bdev, u64 key, enum pr_type type) { - return sd_pr_out_command(bdev, 0x02, key, 0, sd_pr_type(type), 0); + return sd_pr_out_command(bdev, 0x02, key, 0, + block_pr_type_to_scsi(type), 0); } static int sd_pr_preempt(struct block_device *bdev, u64 old_key, u64 new_key, enum pr_type type, bool abort) { return sd_pr_out_command(bdev, abort ? 0x05 : 0x04, old_key, new_key, - sd_pr_type(type), 0); + block_pr_type_to_scsi(type), 0); } static int sd_pr_clear(struct block_device *bdev, u64 key) diff --git a/include/scsi/scsi_block_pr.h b/include/scsi/scsi_block_pr.h new file mode 100644 index 000000000000..6e99f844330d --- /dev/null +++ b/include/scsi/scsi_block_pr.h @@ -0,0 +1,36 @@ +/* SPDX-License-Identifier: GPL-2.0 */ +#ifndef _SCSI_BLOCK_PR_H +#define _SCSI_BLOCK_PR_H + +#include <uapi/linux/pr.h> + +enum scsi_pr_type { + SCSI_PR_WRITE_EXCLUSIVE = 0x01, + SCSI_PR_EXCLUSIVE_ACCESS = 0x03, + SCSI_PR_WRITE_EXCLUSIVE_REG_ONLY = 0x05, + SCSI_PR_EXCLUSIVE_ACCESS_REG_ONLY = 0x06, + SCSI_PR_WRITE_EXCLUSIVE_ALL_REGS = 0x07, + SCSI_PR_EXCLUSIVE_ACCESS_ALL_REGS = 0x08, +}; + +static inline enum scsi_pr_type block_pr_type_to_scsi(enum pr_type type) +{ + switch (type) { + case PR_WRITE_EXCLUSIVE: + return SCSI_PR_WRITE_EXCLUSIVE; + case PR_EXCLUSIVE_ACCESS: + return SCSI_PR_EXCLUSIVE_ACCESS; + case PR_WRITE_EXCLUSIVE_REG_ONLY: + return SCSI_PR_WRITE_EXCLUSIVE_REG_ONLY; + case PR_EXCLUSIVE_ACCESS_REG_ONLY: + return SCSI_PR_EXCLUSIVE_ACCESS_REG_ONLY; + case PR_WRITE_EXCLUSIVE_ALL_REGS: + return SCSI_PR_WRITE_EXCLUSIVE_ALL_REGS; + case PR_EXCLUSIVE_ACCESS_ALL_REGS: + return SCSI_PR_EXCLUSIVE_ACCESS_ALL_REGS; + default: + return 0; + } +}; + +#endif -- 2.25.1 -- dm-devel mailing list dm-devel@redhat.com https://listman.redhat.com/mailman/listinfo/dm-devel
next prev parent reply other threads:[~2022-10-26 23:23 UTC|newest] Thread overview: 114+ messages / expand[flat|nested] mbox.gz Atom feed top 2022-10-26 23:19 [PATCH v3 00/19] Use block pr_ops in LIO Mike Christie 2022-10-26 23:19 ` [dm-devel] " Mike Christie 2022-10-26 23:19 ` [PATCH v3 01/19] block: Add PR callouts for read keys and reservation Mike Christie 2022-10-26 23:19 ` [dm-devel] " Mike Christie 2022-11-02 22:50 ` Bart Van Assche 2022-11-02 22:50 ` [dm-devel] " Bart Van Assche 2022-11-03 1:54 ` Mike Christie 2022-11-03 1:54 ` [dm-devel] " Mike Christie 2022-11-02 22:53 ` Bart Van Assche 2022-11-02 22:53 ` [dm-devel] " Bart Van Assche 2022-11-03 2:25 ` Mike Christie 2022-11-03 2:25 ` [dm-devel] " Mike Christie 2022-10-26 23:19 ` [PATCH v3 02/19] scsi: Rename sd_pr_command Mike Christie 2022-10-26 23:19 ` [dm-devel] " Mike Christie 2022-11-01 5:33 ` Chaitanya Kulkarni 2022-11-01 5:33 ` [dm-devel] " Chaitanya Kulkarni 2022-10-26 23:19 ` Mike Christie [this message] 2022-10-26 23:19 ` [dm-devel] [PATCH v3 03/19] scsi: Move sd_pr_type to header to share Mike Christie 2022-11-01 5:43 ` Chaitanya Kulkarni 2022-11-01 5:43 ` [dm-devel] " Chaitanya Kulkarni 2022-11-01 16:43 ` Mike Christie 2022-11-01 16:43 ` [dm-devel] " Mike Christie 2022-11-02 22:47 ` Bart Van Assche 2022-11-02 22:47 ` [dm-devel] " Bart Van Assche 2022-11-03 2:13 ` Mike Christie 2022-11-03 2:13 ` [dm-devel] " Mike Christie 2022-11-03 18:14 ` Bart Van Assche 2022-11-03 18:14 ` [dm-devel] " Bart Van Assche 2022-10-26 23:19 ` [PATCH v3 04/19] scsi: Add support for block PR read keys/reservation Mike Christie 2022-10-26 23:19 ` [dm-devel] " Mike Christie 2022-10-27 6:08 ` kernel test robot 2022-10-27 6:08 ` [dm-devel] " kernel test robot 2022-10-27 7:59 ` kernel test robot 2022-10-27 7:59 ` [dm-devel] " kernel test robot 2022-10-27 10:41 ` kernel test robot 2022-10-27 10:41 ` [dm-devel] " kernel test robot 2022-11-01 5:45 ` Chaitanya Kulkarni 2022-11-01 5:45 ` [dm-devel] " Chaitanya Kulkarni 2022-11-02 22:54 ` Bart Van Assche 2022-11-02 22:54 ` [dm-devel] " Bart Van Assche 2022-10-26 23:19 ` [PATCH v3 05/19] dm: " Mike Christie 2022-10-26 23:19 ` [dm-devel] " Mike Christie 2022-10-26 23:19 ` [PATCH v3 06/19] nvme: Fix reservation status related structs Mike Christie 2022-10-26 23:19 ` [dm-devel] " Mike Christie 2022-10-27 17:04 ` Keith Busch 2022-10-27 17:04 ` [dm-devel] " Keith Busch 2022-10-26 23:19 ` [PATCH v3 07/19] nvme: Don't hardcode the data len for pr commands Mike Christie 2022-10-26 23:19 ` [dm-devel] " Mike Christie 2022-10-27 17:05 ` Keith Busch 2022-10-27 17:05 ` [dm-devel] " Keith Busch 2022-11-01 5:29 ` Chaitanya Kulkarni 2022-11-01 5:29 ` [dm-devel] " Chaitanya Kulkarni 2022-10-26 23:19 ` [PATCH v3 08/19] nvme: Move pr code to it's own file Mike Christie 2022-10-26 23:19 ` [dm-devel] " Mike Christie 2022-10-27 17:06 ` Keith Busch 2022-10-27 17:06 ` [dm-devel] " Keith Busch 2022-10-28 16:06 ` Mike Christie 2022-10-28 16:06 ` [dm-devel] " Mike Christie 2022-10-28 16:38 ` Keith Busch 2022-10-28 16:38 ` [dm-devel] " Keith Busch 2022-10-30 8:06 ` Christoph Hellwig 2022-10-30 8:06 ` [dm-devel] " Christoph Hellwig 2022-11-01 5:25 ` Chaitanya Kulkarni 2022-11-01 5:25 ` [dm-devel] " Chaitanya Kulkarni 2022-10-26 23:19 ` [PATCH v3 09/19] nvme: Add pr_ops read_keys support Mike Christie 2022-10-26 23:19 ` [dm-devel] " Mike Christie 2022-10-30 8:17 ` Christoph Hellwig 2022-10-30 8:17 ` [dm-devel] " Christoph Hellwig 2022-10-30 20:47 ` Mike Christie 2022-10-30 20:47 ` [dm-devel] " Mike Christie 2022-10-26 23:19 ` [PATCH v3 10/19] nvme: Move NVMe and Block PR types to an array Mike Christie 2022-10-26 23:19 ` [dm-devel] " Mike Christie 2022-10-27 15:18 ` Keith Busch 2022-10-27 15:18 ` [dm-devel] " Keith Busch 2022-10-27 17:06 ` Mike Christie 2022-10-27 17:06 ` [dm-devel] " Mike Christie 2022-10-27 17:13 ` michael.christie 2022-10-27 17:13 ` [dm-devel] " michael.christie 2022-10-27 17:16 ` Keith Busch 2022-10-27 17:16 ` [dm-devel] " Keith Busch 2022-10-28 16:05 ` Mike Christie 2022-10-28 16:05 ` [dm-devel] " Mike Christie 2022-10-26 23:19 ` [PATCH v3 11/19] nvme: Add pr_ops read_reservation support Mike Christie 2022-10-26 23:19 ` [dm-devel] " Mike Christie 2022-10-30 8:18 ` Christoph Hellwig 2022-10-30 8:18 ` [dm-devel] " Christoph Hellwig 2022-10-30 20:54 ` Mike Christie 2022-10-30 20:54 ` [dm-devel] " Mike Christie 2022-10-26 23:19 ` [PATCH v3 12/19] block,nvme,scsi,dm: Add blk_status to pr_ops callouts Mike Christie 2022-10-26 23:19 ` [dm-devel] [PATCH v3 12/19] block, nvme, scsi, dm: " Mike Christie 2022-10-30 8:20 ` [PATCH v3 12/19] block,nvme,scsi,dm: " Christoph Hellwig 2022-10-30 8:20 ` [dm-devel] [PATCH v3 12/19] block, nvme, scsi, dm: " Christoph Hellwig 2022-10-30 23:05 ` [PATCH v3 12/19] block,nvme,scsi,dm: " Mike Christie 2022-10-30 23:05 ` [dm-devel] [PATCH v3 12/19] block, nvme, scsi, dm: " Mike Christie 2022-11-01 10:15 ` [PATCH v3 12/19] block,nvme,scsi,dm: " Christoph Hellwig 2022-11-01 10:15 ` [dm-devel] [PATCH v3 12/19] block, nvme, scsi, dm: " Christoph Hellwig 2022-11-05 18:36 ` [PATCH v3 12/19] block,nvme,scsi,dm: " Mike Christie 2022-11-05 18:36 ` [dm-devel] [PATCH v3 12/19] block, nvme, scsi, dm: " Mike Christie 2022-11-07 9:16 ` [PATCH v3 12/19] block,nvme,scsi,dm: " Christoph Hellwig 2022-11-07 9:16 ` [dm-devel] [PATCH v3 12/19] block, nvme, scsi, dm: " Christoph Hellwig 2022-10-26 23:19 ` [PATCH v3 13/19] nvme: Have NVMe pr_ops return a blk_status_t Mike Christie 2022-10-26 23:19 ` [dm-devel] " Mike Christie 2022-10-26 23:19 ` [PATCH v3 14/19] scsi: Export scsi_result_to_blk_status Mike Christie 2022-10-26 23:19 ` [dm-devel] " Mike Christie 2022-10-26 23:19 ` [PATCH v3 15/19] scsi: Have sd pr_ops return a blk_status_t Mike Christie 2022-10-26 23:19 ` [dm-devel] " Mike Christie 2022-10-26 23:19 ` [PATCH v3 16/19] scsi: target: Rename sbc_ops to exec_cmd_ops Mike Christie 2022-10-26 23:19 ` [dm-devel] " Mike Christie 2022-10-26 23:19 ` [PATCH v3 17/19] scsi: target: Allow backends to hook into PR handling Mike Christie 2022-10-26 23:19 ` [dm-devel] " Mike Christie 2022-10-26 23:19 ` [PATCH v3 18/19] scsi: target: Don't support SCSI-2 RESERVE/RELEASE Mike Christie 2022-10-26 23:19 ` [dm-devel] " Mike Christie 2022-10-26 23:19 ` [PATCH v3 19/19] scsi: target: Add block PR support to iblock Mike Christie 2022-10-26 23:19 ` [dm-devel] " Mike Christie
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=20221026231945.6609-4-michael.christie@oracle.com \ --to=michael.christie@oracle.com \ --cc=axboe@kernel.dk \ --cc=bvanassche@acm.org \ --cc=chaitanyak@nvidia.com \ --cc=dm-devel@redhat.com \ --cc=hch@lst.de \ --cc=james.bottomley@hansenpartnership.com \ --cc=kbusch@kernel.org \ --cc=linux-block@vger.kernel.org \ --cc=linux-nvme@lists.infradead.org \ --cc=linux-scsi@vger.kernel.org \ --cc=martin.petersen@oracle.com \ --cc=snitzer@kernel.org \ --cc=target-devel@vger.kernel.org \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: linkBe sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.