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
next prev 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: 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.