All of lore.kernel.org
 help / color / mirror / Atom feed
From: Christoph Hellwig <hch@lst.de>
To: Jens Axboe <axboe@kernel.dk>
Cc: Paolo Bonzini <pbonzini@redhat.com>,
	Stefan Hajnoczi <stefanha@redhat.com>,
	Damien Le Moal <dlemoal@kernel.org>,
	"Martin K. Petersen" <martin.petersen@oracle.com>,
	dm-devel@lists.linux.dev, linux-kernel@vger.kernel.org,
	virtualization@lists.linux.dev, linux-nvme@lists.infradead.org,
	linux-scsi@vger.kernel.org, linux-btrfs@vger.kernel.org,
	linux-f2fs-devel@lists.sourceforge.net
Subject: [PATCH 2/5] virtio_blk: remove the broken zone revalidation support
Date: Sun, 17 Dec 2023 17:53:56 +0100	[thread overview]
Message-ID: <20231217165359.604246-3-hch@lst.de> (raw)
In-Reply-To: <20231217165359.604246-1-hch@lst.de>

virtblk_revalidate_zones is called unconditionally from
virtblk_config_changed_work from the virtio config_changed callback.

virtblk_revalidate_zones is a bit odd in that it re-clears the zoned
state for host aware or non-zoned devices, which isn't needed unless the
zoned mode changed - but a zone mode change to a host managed model isn't
handled at all, and virtio_blk also doesn't handle any other config
change except for a capacity change is handled (and even if it was
the upper layers above virtio_blk wouldn't handle it very well).

But even the useful case of a size change that would add or remove
zones isn't handled properly as blk_revalidate_disk_zones expects the
device capacity to cover all zones, but the capacity is only updated
after virtblk_revalidate_zones.

As this code appears to be entirely untested and is getting in the way
remove it for now, but it can be readded in a fixed version with
proper test coverage if needed.

Fixes: 95bfec41bd3d ("virtio-blk: add support for zoned block devices")
Fixes: f1ba4e674feb ("virtio-blk: fix to match virtio spec")
Signed-off-by: Christoph Hellwig <hch@lst.de>
---
 drivers/block/virtio_blk.c | 26 --------------------------
 1 file changed, 26 deletions(-)

diff --git a/drivers/block/virtio_blk.c b/drivers/block/virtio_blk.c
index aeead732a24dc9..a28f1687066bb4 100644
--- a/drivers/block/virtio_blk.c
+++ b/drivers/block/virtio_blk.c
@@ -722,27 +722,6 @@ static int virtblk_report_zones(struct gendisk *disk, sector_t sector,
 	return ret;
 }
 
-static void virtblk_revalidate_zones(struct virtio_blk *vblk)
-{
-	u8 model;
-
-	virtio_cread(vblk->vdev, struct virtio_blk_config,
-		     zoned.model, &model);
-	switch (model) {
-	default:
-		dev_err(&vblk->vdev->dev, "unknown zone model %d\n", model);
-		fallthrough;
-	case VIRTIO_BLK_Z_NONE:
-	case VIRTIO_BLK_Z_HA:
-		disk_set_zoned(vblk->disk, BLK_ZONED_NONE);
-		return;
-	case VIRTIO_BLK_Z_HM:
-		WARN_ON_ONCE(!vblk->zone_sectors);
-		if (!blk_revalidate_disk_zones(vblk->disk, NULL))
-			set_capacity_and_notify(vblk->disk, 0);
-	}
-}
-
 static int virtblk_probe_zoned_device(struct virtio_device *vdev,
 				       struct virtio_blk *vblk,
 				       struct request_queue *q)
@@ -823,10 +802,6 @@ static int virtblk_probe_zoned_device(struct virtio_device *vdev,
  */
 #define virtblk_report_zones       NULL
 
-static inline void virtblk_revalidate_zones(struct virtio_blk *vblk)
-{
-}
-
 static inline int virtblk_probe_zoned_device(struct virtio_device *vdev,
 			struct virtio_blk *vblk, struct request_queue *q)
 {
@@ -982,7 +957,6 @@ static void virtblk_config_changed_work(struct work_struct *work)
 	struct virtio_blk *vblk =
 		container_of(work, struct virtio_blk, config_work);
 
-	virtblk_revalidate_zones(vblk);
 	virtblk_update_capacity(vblk, true);
 }
 
-- 
2.39.2


WARNING: multiple messages have this Message-ID (diff)
From: Christoph Hellwig <hch@lst.de>
To: Jens Axboe <axboe@kernel.dk>
Cc: dm-devel@lists.linux.dev, linux-scsi@vger.kernel.org,
	"Martin K. Petersen" <martin.petersen@oracle.com>,
	linux-kernel@vger.kernel.org, linux-nvme@lists.infradead.org,
	virtualization@lists.linux.dev,
	Damien Le Moal <dlemoal@kernel.org>,
	Stefan Hajnoczi <stefanha@redhat.com>,
	Paolo Bonzini <pbonzini@redhat.com>,
	linux-f2fs-devel@lists.sourceforge.net,
	linux-btrfs@vger.kernel.org
Subject: [f2fs-dev] [PATCH 2/5] virtio_blk: remove the broken zone revalidation support
Date: Sun, 17 Dec 2023 17:53:56 +0100	[thread overview]
Message-ID: <20231217165359.604246-3-hch@lst.de> (raw)
In-Reply-To: <20231217165359.604246-1-hch@lst.de>

virtblk_revalidate_zones is called unconditionally from
virtblk_config_changed_work from the virtio config_changed callback.

virtblk_revalidate_zones is a bit odd in that it re-clears the zoned
state for host aware or non-zoned devices, which isn't needed unless the
zoned mode changed - but a zone mode change to a host managed model isn't
handled at all, and virtio_blk also doesn't handle any other config
change except for a capacity change is handled (and even if it was
the upper layers above virtio_blk wouldn't handle it very well).

But even the useful case of a size change that would add or remove
zones isn't handled properly as blk_revalidate_disk_zones expects the
device capacity to cover all zones, but the capacity is only updated
after virtblk_revalidate_zones.

As this code appears to be entirely untested and is getting in the way
remove it for now, but it can be readded in a fixed version with
proper test coverage if needed.

Fixes: 95bfec41bd3d ("virtio-blk: add support for zoned block devices")
Fixes: f1ba4e674feb ("virtio-blk: fix to match virtio spec")
Signed-off-by: Christoph Hellwig <hch@lst.de>
---
 drivers/block/virtio_blk.c | 26 --------------------------
 1 file changed, 26 deletions(-)

diff --git a/drivers/block/virtio_blk.c b/drivers/block/virtio_blk.c
index aeead732a24dc9..a28f1687066bb4 100644
--- a/drivers/block/virtio_blk.c
+++ b/drivers/block/virtio_blk.c
@@ -722,27 +722,6 @@ static int virtblk_report_zones(struct gendisk *disk, sector_t sector,
 	return ret;
 }
 
-static void virtblk_revalidate_zones(struct virtio_blk *vblk)
-{
-	u8 model;
-
-	virtio_cread(vblk->vdev, struct virtio_blk_config,
-		     zoned.model, &model);
-	switch (model) {
-	default:
-		dev_err(&vblk->vdev->dev, "unknown zone model %d\n", model);
-		fallthrough;
-	case VIRTIO_BLK_Z_NONE:
-	case VIRTIO_BLK_Z_HA:
-		disk_set_zoned(vblk->disk, BLK_ZONED_NONE);
-		return;
-	case VIRTIO_BLK_Z_HM:
-		WARN_ON_ONCE(!vblk->zone_sectors);
-		if (!blk_revalidate_disk_zones(vblk->disk, NULL))
-			set_capacity_and_notify(vblk->disk, 0);
-	}
-}
-
 static int virtblk_probe_zoned_device(struct virtio_device *vdev,
 				       struct virtio_blk *vblk,
 				       struct request_queue *q)
@@ -823,10 +802,6 @@ static int virtblk_probe_zoned_device(struct virtio_device *vdev,
  */
 #define virtblk_report_zones       NULL
 
-static inline void virtblk_revalidate_zones(struct virtio_blk *vblk)
-{
-}
-
 static inline int virtblk_probe_zoned_device(struct virtio_device *vdev,
 			struct virtio_blk *vblk, struct request_queue *q)
 {
@@ -982,7 +957,6 @@ static void virtblk_config_changed_work(struct work_struct *work)
 	struct virtio_blk *vblk =
 		container_of(work, struct virtio_blk, config_work);
 
-	virtblk_revalidate_zones(vblk);
 	virtblk_update_capacity(vblk, true);
 }
 
-- 
2.39.2



_______________________________________________
Linux-f2fs-devel mailing list
Linux-f2fs-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/linux-f2fs-devel

  parent reply	other threads:[~2023-12-17 16:54 UTC|newest]

Thread overview: 47+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-12-17 16:53 remove support for the host aware zoned model Christoph Hellwig
2023-12-17 16:53 ` [f2fs-dev] " Christoph Hellwig
2023-12-17 16:53 ` [PATCH 1/5] virtio_blk: cleanup zoned device probing Christoph Hellwig
2023-12-17 16:53   ` [f2fs-dev] " Christoph Hellwig
2023-12-18  9:35   ` Damien Le Moal
2023-12-18  9:35     ` [f2fs-dev] " Damien Le Moal
2023-12-18 15:13   ` Stefan Hajnoczi
2024-01-16 19:02   ` [f2fs-dev] " patchwork-bot+f2fs
2024-01-16 19:02     ` patchwork-bot+f2fs
2023-12-17 16:53 ` Christoph Hellwig [this message]
2023-12-17 16:53   ` [f2fs-dev] [PATCH 2/5] virtio_blk: remove the broken zone revalidation support Christoph Hellwig
2023-12-18  9:37   ` Damien Le Moal
2023-12-18  9:37     ` [f2fs-dev] " Damien Le Moal
2023-12-18 15:15   ` Stefan Hajnoczi
2023-12-17 16:53 ` [PATCH 3/5] block: remove support for the host aware zone model Christoph Hellwig
2023-12-17 16:53   ` [f2fs-dev] " Christoph Hellwig
2023-12-18  6:15   ` Ed Tsai (蔡宗軒)
2023-12-18  6:53     ` Damien Le Moal
2023-12-18  6:53       ` [f2fs-dev] " Damien Le Moal
2023-12-18  8:21       ` Ed Tsai (蔡宗軒)
2023-12-18  9:33         ` Damien Le Moal
2023-12-18  9:33           ` [f2fs-dev] " Damien Le Moal
2023-12-19  7:16         ` Naohiro Aota
2023-12-19  7:16           ` [f2fs-dev] " Naohiro Aota via Linux-f2fs-devel
2023-12-19  8:08           ` Ed Tsai (蔡宗軒)
2023-12-19  8:12             ` Damien Le Moal
2023-12-19  8:12               ` [f2fs-dev] " Damien Le Moal
2023-12-19 10:38               ` hch
2023-12-19 10:38                 ` [f2fs-dev] " hch
2023-12-19 12:16                 ` hch
2023-12-19 12:16                   ` [f2fs-dev] " hch
2023-12-18  9:48   ` Damien Le Moal
2023-12-18  9:48     ` [f2fs-dev] " Damien Le Moal
2023-12-18 14:33     ` Christoph Hellwig
2023-12-18 14:33       ` [f2fs-dev] " Christoph Hellwig
2023-12-17 16:53 ` [PATCH 4/5] block: simplify disk_set_zoned Christoph Hellwig
2023-12-17 16:53   ` [f2fs-dev] " Christoph Hellwig
2023-12-18  9:50   ` Damien Le Moal
2023-12-18  9:50     ` [f2fs-dev] " Damien Le Moal
2023-12-17 16:53 ` [PATCH 5/5] sd: only call disk_clear_zoned when needed Christoph Hellwig
2023-12-17 16:53   ` [f2fs-dev] " Christoph Hellwig
2023-12-18  9:51   ` Damien Le Moal
2023-12-18  9:51     ` [f2fs-dev] " Damien Le Moal
2023-12-19  2:16 ` remove support for the host aware zoned model Martin K. Petersen
2023-12-19  2:16   ` [f2fs-dev] " Martin K. Petersen
2023-12-20  3:18 ` Jens Axboe
2023-12-20  3:18   ` [f2fs-dev] " Jens Axboe

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=20231217165359.604246-3-hch@lst.de \
    --to=hch@lst.de \
    --cc=axboe@kernel.dk \
    --cc=dlemoal@kernel.org \
    --cc=dm-devel@lists.linux.dev \
    --cc=linux-btrfs@vger.kernel.org \
    --cc=linux-f2fs-devel@lists.sourceforge.net \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-nvme@lists.infradead.org \
    --cc=linux-scsi@vger.kernel.org \
    --cc=martin.petersen@oracle.com \
    --cc=pbonzini@redhat.com \
    --cc=stefanha@redhat.com \
    --cc=virtualization@lists.linux.dev \
    /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.