All of lore.kernel.org
 help / color / mirror / Atom feed
From: Mike Christie <michael.christie@oracle.com>
To: linux-block@vger.kernel.org, dm-devel@redhat.com,
	snitzer@kernel.org, hch@lst.de, axboe@kernel.dk,
	martin.petersen@oracle.com,
	james.bottomley@hansenpartnership.com,
	linux-scsi@vger.kernel.org, target-devel@vger.kernel.org
Cc: Mike Christie <michael.christie@oracle.com>
Subject: [PATCH 06/11] dm: Add support for block PR read keys/reservation.
Date: Fri,  3 Jun 2022 01:55:31 -0500	[thread overview]
Message-ID: <20220603065536.5641-7-michael.christie@oracle.com> (raw)
In-Reply-To: <20220603065536.5641-1-michael.christie@oracle.com>

This adds support in dm for the block PR read keys and read reservation
callouts.

Signed-off-by: Mike Christie <michael.christie@oracle.com>
---
 drivers/md/dm.c | 44 ++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 44 insertions(+)

diff --git a/drivers/md/dm.c b/drivers/md/dm.c
index 82957bd460e8..ca544dfc3210 100644
--- a/drivers/md/dm.c
+++ b/drivers/md/dm.c
@@ -3114,12 +3114,56 @@ static int dm_pr_clear(struct block_device *bdev, u64 key)
 	return r;
 }
 
+static int dm_pr_read_keys(struct block_device *bdev, struct pr_keys *keys,
+			   int keys_data_len)
+{
+	struct mapped_device *md = bdev->bd_disk->private_data;
+	const struct pr_ops *ops;
+	int r, srcu_idx;
+
+	r = dm_prepare_ioctl(md, &srcu_idx, &bdev);
+	if (r < 0)
+		goto out;
+
+	ops = bdev->bd_disk->fops->pr_ops;
+	if (ops && ops->pr_read_keys)
+		r = ops->pr_read_keys(bdev, keys, keys_data_len);
+	else
+		r = -EOPNOTSUPP;
+out:
+	dm_unprepare_ioctl(md, srcu_idx);
+	return r;
+}
+
+static int dm_pr_read_reservation(struct block_device *bdev,
+				  struct pr_held_reservation *rsv)
+{
+	struct mapped_device *md = bdev->bd_disk->private_data;
+	const struct pr_ops *ops;
+	int r, srcu_idx;
+
+	r = dm_prepare_ioctl(md, &srcu_idx, &bdev);
+	if (r < 0)
+		goto out;
+
+	ops = bdev->bd_disk->fops->pr_ops;
+	if (ops && ops->pr_read_reservation)
+		r = ops->pr_read_reservation(bdev, rsv);
+	else
+		r = -EOPNOTSUPP;
+out:
+	dm_unprepare_ioctl(md, srcu_idx);
+	return r;
+}
+
 static const struct pr_ops dm_pr_ops = {
 	.pr_register	= dm_pr_register,
 	.pr_reserve	= dm_pr_reserve,
 	.pr_release	= dm_pr_release,
 	.pr_preempt	= dm_pr_preempt,
 	.pr_clear	= dm_pr_clear,
+	.pr_read_keys	= dm_pr_read_keys,
+	.pr_read_reservation = dm_pr_read_reservation,
 };
 
 static const struct block_device_operations dm_blk_dops = {
-- 
2.25.1


WARNING: multiple messages have this Message-ID (diff)
From: Mike Christie <michael.christie@oracle.com>
To: linux-block@vger.kernel.org, dm-devel@redhat.com,
	snitzer@kernel.org, hch@lst.de, axboe@kernel.dk,
	martin.petersen@oracle.com,
	james.bottomley@hansenpartnership.com,
	linux-scsi@vger.kernel.org, target-devel@vger.kernel.org
Cc: Mike Christie <michael.christie@oracle.com>
Subject: [dm-devel] [PATCH 06/11] dm: Add support for block PR read keys/reservation.
Date: Fri,  3 Jun 2022 01:55:31 -0500	[thread overview]
Message-ID: <20220603065536.5641-7-michael.christie@oracle.com> (raw)
In-Reply-To: <20220603065536.5641-1-michael.christie@oracle.com>

This adds support in dm for the block PR read keys and read reservation
callouts.

Signed-off-by: Mike Christie <michael.christie@oracle.com>
---
 drivers/md/dm.c | 44 ++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 44 insertions(+)

diff --git a/drivers/md/dm.c b/drivers/md/dm.c
index 82957bd460e8..ca544dfc3210 100644
--- a/drivers/md/dm.c
+++ b/drivers/md/dm.c
@@ -3114,12 +3114,56 @@ static int dm_pr_clear(struct block_device *bdev, u64 key)
 	return r;
 }
 
+static int dm_pr_read_keys(struct block_device *bdev, struct pr_keys *keys,
+			   int keys_data_len)
+{
+	struct mapped_device *md = bdev->bd_disk->private_data;
+	const struct pr_ops *ops;
+	int r, srcu_idx;
+
+	r = dm_prepare_ioctl(md, &srcu_idx, &bdev);
+	if (r < 0)
+		goto out;
+
+	ops = bdev->bd_disk->fops->pr_ops;
+	if (ops && ops->pr_read_keys)
+		r = ops->pr_read_keys(bdev, keys, keys_data_len);
+	else
+		r = -EOPNOTSUPP;
+out:
+	dm_unprepare_ioctl(md, srcu_idx);
+	return r;
+}
+
+static int dm_pr_read_reservation(struct block_device *bdev,
+				  struct pr_held_reservation *rsv)
+{
+	struct mapped_device *md = bdev->bd_disk->private_data;
+	const struct pr_ops *ops;
+	int r, srcu_idx;
+
+	r = dm_prepare_ioctl(md, &srcu_idx, &bdev);
+	if (r < 0)
+		goto out;
+
+	ops = bdev->bd_disk->fops->pr_ops;
+	if (ops && ops->pr_read_reservation)
+		r = ops->pr_read_reservation(bdev, rsv);
+	else
+		r = -EOPNOTSUPP;
+out:
+	dm_unprepare_ioctl(md, srcu_idx);
+	return r;
+}
+
 static const struct pr_ops dm_pr_ops = {
 	.pr_register	= dm_pr_register,
 	.pr_reserve	= dm_pr_reserve,
 	.pr_release	= dm_pr_release,
 	.pr_preempt	= dm_pr_preempt,
 	.pr_clear	= dm_pr_clear,
+	.pr_read_keys	= dm_pr_read_keys,
+	.pr_read_reservation = dm_pr_read_reservation,
 };
 
 static const struct block_device_operations dm_blk_dops = {
-- 
2.25.1

--
dm-devel mailing list
dm-devel@redhat.com
https://listman.redhat.com/mailman/listinfo/dm-devel


  parent reply	other threads:[~2022-06-03  6:56 UTC|newest]

Thread overview: 66+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-06-03  6:55 [PATCH 0/8] Use block pr_ops in LIO Mike Christie
2022-06-03  6:55 ` [dm-devel] " Mike Christie
2022-06-03  6:55 ` [PATCH 01/11] scsi: target: Rename sbc_ops to exec_cmd_ops Mike Christie
2022-06-03  6:55   ` [dm-devel] " Mike Christie
2022-06-20  7:12   ` Christoph Hellwig
2022-06-20  7:12     ` [dm-devel] " Christoph Hellwig
2022-06-03  6:55 ` [PATCH 02/11] scsi: Rename sd_pr_command Mike Christie
2022-06-03  6:55   ` [dm-devel] " Mike Christie
2022-06-20  7:13   ` Christoph Hellwig
2022-06-20  7:13     ` [dm-devel] " Christoph Hellwig
2022-06-03  6:55 ` [PATCH 03/11] scsi: Move sd_pr_type to header to share Mike Christie
2022-06-03  6:55   ` [dm-devel] " Mike Christie
2022-06-05  3:58   ` Bart Van Assche
2022-06-05  3:58     ` [dm-devel] " Bart Van Assche
2022-06-20  7:13   ` Christoph Hellwig
2022-06-20  7:13     ` [dm-devel] " Christoph Hellwig
2022-06-03  6:55 ` [PATCH 04/11] block: Add PR callouts for read keys and reservation Mike Christie
2022-06-03  6:55   ` [dm-devel] " Mike Christie
2022-06-20  7:14   ` Christoph Hellwig
2022-06-20  7:14     ` [dm-devel] " Christoph Hellwig
2022-06-03  6:55 ` [PATCH 05/11] scsi: Add support for block PR read keys/reservation Mike Christie
2022-06-03  6:55   ` [dm-devel] " Mike Christie
2022-06-03  6:55 ` Mike Christie [this message]
2022-06-03  6:55   ` [dm-devel] [PATCH 06/11] dm: " Mike Christie
2022-06-03  6:55 ` [PATCH 07/11] scsi: target: Allow backends to hook into PR handling Mike Christie
2022-06-03  6:55   ` [dm-devel] " Mike Christie
2022-06-20  7:15   ` Christoph Hellwig
2022-06-20  7:15     ` [dm-devel] " Christoph Hellwig
2022-06-03  6:55 ` [PATCH 08/11] scsi: target: Add block PR support to iblock Mike Christie
2022-06-03  6:55   ` [dm-devel] " Mike Christie
2022-06-20  7:18   ` Christoph Hellwig
2022-06-20  7:18     ` [dm-devel] " Christoph Hellwig
2022-06-03  6:55 ` [PATCH 09/11] block, nvme: Add error for reservation conflicts Mike Christie
2022-06-03  6:55   ` [dm-devel] " Mike Christie
2022-06-03 19:45   ` Keith Busch
2022-06-03 19:45     ` [dm-devel] " Keith Busch
2022-06-03 23:08     ` Mike Christie
2022-06-03 23:08       ` [dm-devel] " Mike Christie
2022-06-04  7:38     ` Hannes Reinecke
2022-06-04  7:38       ` [dm-devel] " Hannes Reinecke
2022-06-04 17:13       ` michael.christie
2022-06-04 17:13         ` [dm-devel] " michael.christie
2022-06-05  9:42         ` Hannes Reinecke
2022-06-05  9:42           ` [dm-devel] " Hannes Reinecke
2022-06-20  7:23           ` Christoph Hellwig
2022-06-20  7:23             ` [dm-devel] " Christoph Hellwig
2022-06-05  4:00   ` Bart Van Assche
2022-06-05  4:00     ` Bart Van Assche
2022-06-03  6:55 ` [PATCH 10/11] scsi: Use BLK_STS_RSV_CONFLICT " Mike Christie
2022-06-03  6:55   ` [dm-devel] " Mike Christie
2022-06-03  6:55 ` [PATCH 11/11] scsi: target: Handle BLK_STS_RSV_CONFLICT Mike Christie
2022-06-03  6:55   ` [dm-devel] " Mike Christie
2022-06-03 11:46 ` [PATCH 0/8] Use block pr_ops in LIO Christoph Hellwig
2022-06-03 11:46   ` [dm-devel] " Christoph Hellwig
2022-06-03 17:55   ` Mike Christie
2022-06-03 17:55     ` [dm-devel] " Mike Christie
2022-06-20  7:12     ` Christoph Hellwig
2022-06-20  7:12       ` [dm-devel] " Christoph Hellwig
2022-06-05  4:01 ` Bart Van Assche
2022-06-05  4:01   ` Bart Van Assche
2022-06-05 16:55   ` Mike Christie
2022-06-05 16:55     ` Mike Christie
2022-06-05 18:15     ` Bart Van Assche
2022-06-05 18:15       ` Bart Van Assche
2022-06-06 16:38       ` Mike Christie
2022-06-06 16:38         ` 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=20220603065536.5641-7-michael.christie@oracle.com \
    --to=michael.christie@oracle.com \
    --cc=axboe@kernel.dk \
    --cc=dm-devel@redhat.com \
    --cc=hch@lst.de \
    --cc=james.bottomley@hansenpartnership.com \
    --cc=linux-block@vger.kernel.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: link
Be 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.