linux-fsdevel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Jan Kara <jack@suse.cz>
To: Christian Brauner <brauner@kernel.org>
Cc: <linux-fsdevel@vger.kernel.org>, <linux-block@vger.kernel.org>,
	Christoph Hellwig <hch@infradead.org>, Jan Kara <jack@suse.cz>,
	xen-devel@lists.xenproject.org, Christoph Hellwig <hch@lst.de>
Subject: [PATCH 07/29] xen/blkback: Convert to bdev_open_by_dev()
Date: Wed, 27 Sep 2023 11:34:13 +0200	[thread overview]
Message-ID: <20230927093442.25915-7-jack@suse.cz> (raw)
In-Reply-To: <20230818123232.2269-1-jack@suse.cz>

Convert xen/blkback to use bdev_open_by_dev() and pass the
handle around.

CC: xen-devel@lists.xenproject.org
Acked-by: Christoph Hellwig <hch@lst.de>
Acked-by: Christian Brauner <brauner@kernel.org>
Signed-off-by: Jan Kara <jack@suse.cz>
---
 drivers/block/xen-blkback/blkback.c |  4 +--
 drivers/block/xen-blkback/common.h  |  4 +--
 drivers/block/xen-blkback/xenbus.c  | 40 +++++++++++++++--------------
 3 files changed, 25 insertions(+), 23 deletions(-)

diff --git a/drivers/block/xen-blkback/blkback.c b/drivers/block/xen-blkback/blkback.c
index c362f4ad80ab..4defd7f387c7 100644
--- a/drivers/block/xen-blkback/blkback.c
+++ b/drivers/block/xen-blkback/blkback.c
@@ -465,7 +465,7 @@ static int xen_vbd_translate(struct phys_req *req, struct xen_blkif *blkif,
 	}
 
 	req->dev  = vbd->pdevice;
-	req->bdev = vbd->bdev;
+	req->bdev = vbd->bdev_handle->bdev;
 	rc = 0;
 
  out:
@@ -969,7 +969,7 @@ static int dispatch_discard_io(struct xen_blkif_ring *ring,
 	int err = 0;
 	int status = BLKIF_RSP_OKAY;
 	struct xen_blkif *blkif = ring->blkif;
-	struct block_device *bdev = blkif->vbd.bdev;
+	struct block_device *bdev = blkif->vbd.bdev_handle->bdev;
 	struct phys_req preq;
 
 	xen_blkif_get(blkif);
diff --git a/drivers/block/xen-blkback/common.h b/drivers/block/xen-blkback/common.h
index 40f67bfc052d..5ff50e76cee5 100644
--- a/drivers/block/xen-blkback/common.h
+++ b/drivers/block/xen-blkback/common.h
@@ -221,7 +221,7 @@ struct xen_vbd {
 	unsigned char		type;
 	/* phys device that this vbd maps to. */
 	u32			pdevice;
-	struct block_device	*bdev;
+	struct bdev_handle	*bdev_handle;
 	/* Cached size parameter. */
 	sector_t		size;
 	unsigned int		flush_support:1;
@@ -360,7 +360,7 @@ struct pending_req {
 };
 
 
-#define vbd_sz(_v)	bdev_nr_sectors((_v)->bdev)
+#define vbd_sz(_v)	bdev_nr_sectors((_v)->bdev_handle->bdev)
 
 #define xen_blkif_get(_b) (atomic_inc(&(_b)->refcnt))
 #define xen_blkif_put(_b)				\
diff --git a/drivers/block/xen-blkback/xenbus.c b/drivers/block/xen-blkback/xenbus.c
index bb66178c432b..e34219ea2b05 100644
--- a/drivers/block/xen-blkback/xenbus.c
+++ b/drivers/block/xen-blkback/xenbus.c
@@ -81,7 +81,7 @@ static void xen_update_blkif_status(struct xen_blkif *blkif)
 	int i;
 
 	/* Not ready to connect? */
-	if (!blkif->rings || !blkif->rings[0].irq || !blkif->vbd.bdev)
+	if (!blkif->rings || !blkif->rings[0].irq || !blkif->vbd.bdev_handle)
 		return;
 
 	/* Already connected? */
@@ -99,12 +99,13 @@ static void xen_update_blkif_status(struct xen_blkif *blkif)
 		return;
 	}
 
-	err = sync_blockdev(blkif->vbd.bdev);
+	err = sync_blockdev(blkif->vbd.bdev_handle->bdev);
 	if (err) {
 		xenbus_dev_error(blkif->be->dev, err, "block flush");
 		return;
 	}
-	invalidate_inode_pages2(blkif->vbd.bdev->bd_inode->i_mapping);
+	invalidate_inode_pages2(
+			blkif->vbd.bdev_handle->bdev->bd_inode->i_mapping);
 
 	for (i = 0; i < blkif->nr_rings; i++) {
 		ring = &blkif->rings[i];
@@ -472,9 +473,9 @@ static void xenvbd_sysfs_delif(struct xenbus_device *dev)
 
 static void xen_vbd_free(struct xen_vbd *vbd)
 {
-	if (vbd->bdev)
-		blkdev_put(vbd->bdev, NULL);
-	vbd->bdev = NULL;
+	if (vbd->bdev_handle)
+		bdev_release(vbd->bdev_handle);
+	vbd->bdev_handle = NULL;
 }
 
 static int xen_vbd_create(struct xen_blkif *blkif, blkif_vdev_t handle,
@@ -482,7 +483,7 @@ static int xen_vbd_create(struct xen_blkif *blkif, blkif_vdev_t handle,
 			  int cdrom)
 {
 	struct xen_vbd *vbd;
-	struct block_device *bdev;
+	struct bdev_handle *bdev_handle;
 
 	vbd = &blkif->vbd;
 	vbd->handle   = handle;
@@ -491,17 +492,17 @@ static int xen_vbd_create(struct xen_blkif *blkif, blkif_vdev_t handle,
 
 	vbd->pdevice  = MKDEV(major, minor);
 
-	bdev = blkdev_get_by_dev(vbd->pdevice, vbd->readonly ?
+	bdev_handle = bdev_open_by_dev(vbd->pdevice, vbd->readonly ?
 				 BLK_OPEN_READ : BLK_OPEN_WRITE, NULL, NULL);
 
-	if (IS_ERR(bdev)) {
+	if (IS_ERR(bdev_handle)) {
 		pr_warn("xen_vbd_create: device %08x could not be opened\n",
 			vbd->pdevice);
 		return -ENOENT;
 	}
 
-	vbd->bdev = bdev;
-	if (vbd->bdev->bd_disk == NULL) {
+	vbd->bdev_handle = bdev_handle;
+	if (vbd->bdev_handle->bdev->bd_disk == NULL) {
 		pr_warn("xen_vbd_create: device %08x doesn't exist\n",
 			vbd->pdevice);
 		xen_vbd_free(vbd);
@@ -509,14 +510,14 @@ static int xen_vbd_create(struct xen_blkif *blkif, blkif_vdev_t handle,
 	}
 	vbd->size = vbd_sz(vbd);
 
-	if (cdrom || disk_to_cdi(vbd->bdev->bd_disk))
+	if (cdrom || disk_to_cdi(vbd->bdev_handle->bdev->bd_disk))
 		vbd->type |= VDISK_CDROM;
-	if (vbd->bdev->bd_disk->flags & GENHD_FL_REMOVABLE)
+	if (vbd->bdev_handle->bdev->bd_disk->flags & GENHD_FL_REMOVABLE)
 		vbd->type |= VDISK_REMOVABLE;
 
-	if (bdev_write_cache(bdev))
+	if (bdev_write_cache(bdev_handle->bdev))
 		vbd->flush_support = true;
-	if (bdev_max_secure_erase_sectors(bdev))
+	if (bdev_max_secure_erase_sectors(bdev_handle->bdev))
 		vbd->discard_secure = true;
 
 	pr_debug("Successful creation of handle=%04x (dom=%u)\n",
@@ -569,7 +570,7 @@ static void xen_blkbk_discard(struct xenbus_transaction xbt, struct backend_info
 	struct xen_blkif *blkif = be->blkif;
 	int err;
 	int state = 0;
-	struct block_device *bdev = be->blkif->vbd.bdev;
+	struct block_device *bdev = be->blkif->vbd.bdev_handle->bdev;
 
 	if (!xenbus_read_unsigned(dev->nodename, "discard-enable", 1))
 		return;
@@ -930,15 +931,16 @@ static void connect(struct backend_info *be)
 		goto abort;
 	}
 	err = xenbus_printf(xbt, dev->nodename, "sector-size", "%lu",
-			    (unsigned long)
-			    bdev_logical_block_size(be->blkif->vbd.bdev));
+			    (unsigned long)bdev_logical_block_size(
+					be->blkif->vbd.bdev_handle->bdev));
 	if (err) {
 		xenbus_dev_fatal(dev, err, "writing %s/sector-size",
 				 dev->nodename);
 		goto abort;
 	}
 	err = xenbus_printf(xbt, dev->nodename, "physical-sector-size", "%u",
-			    bdev_physical_block_size(be->blkif->vbd.bdev));
+			    bdev_physical_block_size(
+					be->blkif->vbd.bdev_handle->bdev));
 	if (err)
 		xenbus_dev_error(dev, err, "writing %s/physical-sector-size",
 				 dev->nodename);
-- 
2.35.3


  parent reply	other threads:[~2023-09-27  9:35 UTC|newest]

Thread overview: 111+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-08-23 10:48 [PATCH v3 0/29] block: Make blkdev_get_by_*() return handle Jan Kara
2023-08-23 10:48 ` [PATCH 01/29] block: Provide bdev_open_* functions Jan Kara
2023-08-25 11:44   ` Christian Brauner
2023-08-23 10:48 ` [PATCH 02/29] block: Use bdev_open_by_dev() in blkdev_open() Jan Kara
2023-08-25  2:28   ` Al Viro
2023-08-25  9:45     ` Jan Kara
2023-08-25 13:29       ` Christian Brauner
2023-08-28 16:46         ` Jan Kara
2023-08-29 11:03           ` Christian Brauner
2023-08-23 10:48 ` [PATCH 03/29] block: Use bdev_open_by_dev() in disk_scan_partitions() and blkdev_bszset() Jan Kara
2023-08-25 11:45   ` Christian Brauner
2023-08-23 10:48 ` [PATCH 04/29] drdb: Convert to use bdev_open_by_path() Jan Kara
2023-08-25 11:47   ` Christian Brauner
2023-08-23 10:48 ` [PATCH 05/29] pktcdvd: Convert to bdev_open_by_dev() Jan Kara
2023-08-25 11:53   ` Christian Brauner
2023-08-23 10:48 ` [PATCH 06/29] rnbd-srv: Convert to use bdev_open_by_path() Jan Kara
2023-08-25 11:55   ` Christian Brauner
2023-08-23 10:48 ` [PATCH 07/29] xen/blkback: Convert to bdev_open_by_dev() Jan Kara
2023-08-25 11:56   ` Christian Brauner
2023-08-23 10:48 ` [PATCH 08/29] zram: Convert to use bdev_open_by_dev() Jan Kara
2023-08-25 11:57   ` Christian Brauner
2023-08-23 10:48 ` [PATCH 09/29] bcache: Convert to bdev_open_by_path() Jan Kara
2023-08-25 12:06   ` Christian Brauner
2023-08-23 10:48 ` [PATCH 10/29] dm: Convert to bdev_open_by_dev() Jan Kara
2023-08-25 12:08   ` Christian Brauner
2023-08-23 10:48 ` [PATCH 11/29] md: " Jan Kara
2023-08-25 12:09   ` Christian Brauner
2023-08-23 10:48 ` [PATCH 12/29] mtd: block2mtd: Convert to bdev_open_by_dev/path() Jan Kara
2023-08-25 12:11   ` Christian Brauner
2023-08-23 10:48 ` [PATCH 13/29] nvmet: Convert to bdev_open_by_path() Jan Kara
2023-08-23 19:36   ` Chaitanya Kulkarni
2023-08-25 12:12   ` Christian Brauner
2023-08-23 10:48 ` [PATCH 14/29] s390/dasd: " Jan Kara
2023-08-25 12:14   ` Christian Brauner
2023-09-27 21:43   ` Stefan Haberland
2023-10-02 11:24     ` Jan Kara
2023-08-23 10:48 ` [PATCH 15/29] scsi: target: " Jan Kara
2023-08-25 12:15   ` Christian Brauner
2023-08-23 10:48 ` [PATCH 16/29] PM: hibernate: Convert to bdev_open_by_dev() Jan Kara
2023-08-25 12:17   ` Christian Brauner
2023-08-23 10:48 ` [PATCH 17/29] PM: hibernate: Drop unused snapshot_test argument Jan Kara
2023-08-25 12:18   ` Christian Brauner
2023-08-23 10:48 ` [PATCH 18/29] mm/swap: Convert to use bdev_open_by_dev() Jan Kara
2023-08-25 12:19   ` Christian Brauner
2023-08-23 10:48 ` [PATCH 19/29] fs: Convert to bdev_open_by_dev() Jan Kara
2023-08-25 12:20   ` Christian Brauner
2023-08-23 10:48 ` [PATCH 20/29] btrfs: Convert to bdev_open_by_path() Jan Kara
2023-08-25 12:26   ` Christian Brauner
2023-08-23 10:48 ` [PATCH 21/29] erofs: Convert to use bdev_open_by_path() Jan Kara
2023-08-25 12:27   ` Christian Brauner
2023-08-23 10:48 ` [PATCH 22/29] ext4: Convert to bdev_open_by_dev() Jan Kara
2023-08-25 12:29   ` Christian Brauner
2023-08-23 10:48 ` [PATCH 23/29] f2fs: Convert to bdev_open_by_dev/path() Jan Kara
2023-08-25 12:30   ` Christian Brauner
2023-08-28 12:57   ` Chao Yu
2023-08-28 16:35     ` Jan Kara
2023-08-23 10:48 ` [PATCH 24/29] jfs: Convert to bdev_open_by_dev() Jan Kara
2023-08-25 12:31   ` Christian Brauner
2023-08-23 10:48 ` [PATCH 25/29] nfs/blocklayout: Convert to use bdev_open_by_dev/path() Jan Kara
2023-08-25 12:33   ` Christian Brauner
2023-08-23 10:48 ` [PATCH 26/29] ocfs2: Convert to use bdev_open_by_dev() Jan Kara
2023-08-25 12:34   ` Christian Brauner
2023-08-23 10:48 ` [PATCH 27/29] reiserfs: Convert to bdev_open_by_dev/path() Jan Kara
2023-08-25 12:35   ` Christian Brauner
2023-08-23 10:48 ` [PATCH 28/29] xfs: Convert to bdev_open_by_path() Jan Kara
2023-08-23 22:11   ` Dave Chinner
2023-08-24 10:28     ` Jan Kara
2023-08-24 20:29       ` Jan Kara
2023-08-24 23:06         ` Dave Chinner
2023-08-25 12:38         ` Christian Brauner
2023-08-23 10:48 ` [PATCH 29/29] block: Remove blkdev_get_by_*() functions Jan Kara
2023-08-25 12:42   ` Christian Brauner
2023-08-25 13:32 ` [PATCH v3 0/29] block: Make blkdev_get_by_*() return handle Christian Brauner
2023-08-28 17:07   ` Jan Kara
2023-08-29 11:02     ` Christian Brauner
2023-09-27  9:34 ` [PATCH v4 " Jan Kara
2023-09-27  9:34 ` [PATCH 01/29] block: Provide bdev_open_* functions Jan Kara
2023-09-27  9:34 ` [PATCH 02/29] block: Use bdev_open_by_dev() in blkdev_open() Jan Kara
2023-09-27  9:34 ` [PATCH 03/29] block: Use bdev_open_by_dev() in disk_scan_partitions() and blkdev_bszset() Jan Kara
2023-09-27  9:34 ` [PATCH 04/29] drdb: Convert to use bdev_open_by_path() Jan Kara
2023-09-27  9:34 ` [PATCH 05/29] pktcdvd: Convert to bdev_open_by_dev() Jan Kara
2023-09-27  9:34 ` [PATCH 06/29] rnbd-srv: Convert to use bdev_open_by_path() Jan Kara
2023-09-27  9:34 ` Jan Kara [this message]
2023-09-27  9:34 ` [PATCH 08/29] zram: Convert to use bdev_open_by_dev() Jan Kara
2023-09-27  9:34 ` [PATCH 09/29] bcache: Convert to bdev_open_by_path() Jan Kara
2023-09-27  9:34 ` [PATCH 10/29] dm: Convert to bdev_open_by_dev() Jan Kara
2023-09-27  9:34 ` [PATCH 11/29] md: " Jan Kara
2023-09-27  9:34 ` [PATCH 12/29] mtd: block2mtd: Convert to bdev_open_by_dev/path() Jan Kara
2023-09-27  9:34 ` [PATCH 13/29] nvmet: Convert to bdev_open_by_path() Jan Kara
2023-09-27  9:34 ` [PATCH 14/29] s390/dasd: " Jan Kara
2023-09-27  9:34 ` [PATCH 15/29] scsi: target: " Jan Kara
2023-09-27 15:36   ` Martin K. Petersen
2023-09-27  9:34 ` [PATCH 16/29] PM: hibernate: Convert to bdev_open_by_dev() Jan Kara
2023-09-27  9:34 ` [PATCH 17/29] PM: hibernate: Drop unused snapshot_test argument Jan Kara
2023-09-27  9:34 ` [PATCH 18/29] mm/swap: Convert to use bdev_open_by_dev() Jan Kara
2023-09-27  9:34 ` [PATCH 19/29] fs: Convert to bdev_open_by_dev() Jan Kara
2023-09-27  9:34 ` [PATCH 20/29] btrfs: Convert to bdev_open_by_path() Jan Kara
2023-09-27  9:34 ` [PATCH 21/29] erofs: Convert to use bdev_open_by_path() Jan Kara
2023-09-27  9:34 ` [PATCH 22/29] ext4: Convert to bdev_open_by_dev() Jan Kara
2023-09-27  9:34 ` [PATCH 23/29] f2fs: Convert to bdev_open_by_dev/path() Jan Kara
2023-09-27  9:34 ` [PATCH 24/29] jfs: Convert to bdev_open_by_dev() Jan Kara
2023-09-27  9:34 ` [PATCH 25/29] nfs/blocklayout: Convert to use bdev_open_by_dev/path() Jan Kara
2023-09-27  9:34 ` [PATCH 26/29] ocfs2: Convert to use bdev_open_by_dev() Jan Kara
2023-09-27  9:34 ` [PATCH 27/29] reiserfs: Convert to bdev_open_by_dev/path() Jan Kara
2023-09-27  9:34 ` [PATCH 28/29] xfs: Convert to bdev_open_by_path() Jan Kara
2023-09-27 15:40   ` Darrick J. Wong
2023-09-27  9:34 ` [PATCH 29/29] block: Remove blkdev_get_by_*() functions Jan Kara
2023-09-27 14:19 ` [PATCH v4 0/29] block: Make blkdev_get_by_*() return handle Jens Axboe
2023-09-27 16:21 ` Christian Brauner
2023-10-02  7:57   ` Jan Kara
  -- strict thread matches above, loose matches on Subject: below --
2023-08-11 11:04 [PATCH v2 " Jan Kara
2023-08-11 11:04 ` [PATCH 07/29] xen/blkback: Convert to bdev_open_by_dev() Jan Kara

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=20230927093442.25915-7-jack@suse.cz \
    --to=jack@suse.cz \
    --cc=brauner@kernel.org \
    --cc=hch@infradead.org \
    --cc=hch@lst.de \
    --cc=linux-block@vger.kernel.org \
    --cc=linux-fsdevel@vger.kernel.org \
    --cc=xen-devel@lists.xenproject.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).