[Devel] [PATCH VZ10 4/7] drivers/vhost/blk: improve vhostblk_vq_err() usage

Andrey Zhadchenko andrey.zhadchenko at virtuozzo.com
Mon Jun 15 17:55:32 MSK 2026


As this triggers vq->error_ctx eventfd, we should be a bit more
careful.
 - do not call this if we get unsupported request, just set the
error via request status
 - move it from vhost_blk_set_status() to vhost_blk_handle_host_kick()
to avoid triggering it twice if on vhost_blk_handle_guest_kick()->
vhost_blk_req_handle()->vhost_blk_set_status() path, as
vhost_blk_handle_guest_kick() will already report it

https://virtuozzo.atlassian.net/browse/VSTOR-134034
Signed-off-by: Andrey Zhadchenko <andrey.zhadchenko at virtuozzo.com>
---
 drivers/vhost/blk.c | 8 +++-----
 1 file changed, 3 insertions(+), 5 deletions(-)

diff --git a/drivers/vhost/blk.c b/drivers/vhost/blk.c
index ef0f6f77bfada..029e92b3105bc 100644
--- a/drivers/vhost/blk.c
+++ b/drivers/vhost/blk.c
@@ -141,10 +141,8 @@ static inline int vhost_blk_set_status(struct vhost_blk_req *req, u8 status)
 
 	iov_iter_init(&iter, ITER_DEST, req->status, ARRAY_SIZE(req->status), sizeof(status));
 	ret = copy_to_iter(&status, sizeof(status), &iter);
-	if (ret != sizeof(status)) {
-		vhostblk_vq_err(req->blk, &req->blk_vq->vq, "Failed to write status\n");
+	if (ret != sizeof(status))
 		return -EFAULT;
-	}
 
 	return 0;
 }
@@ -490,7 +488,6 @@ static int vhost_blk_req_handle(struct vhost_virtqueue *vq,
 		vhost_add_used_and_signal(&blk->dev, vq, head, len);
 		break;
 	default:
-		vhostblk_vq_err(blk, vq, "Unsupported request type %d\n", hdr->type);
 		status = VIRTIO_BLK_S_UNSUPP;
 		ret = vhost_blk_set_status(req, status);
 		if (ret)
@@ -597,7 +594,8 @@ static void vhost_blk_handle_host_kick(struct vhost_work *work)
 		vhost_blk_req_cleanup(req);
 
 		status = req->bio_err == 0 ?  VIRTIO_BLK_S_OK : VIRTIO_BLK_S_IOERR;
-		(void) vhost_blk_set_status(req, status);
+		if (vhost_blk_set_status(req, status))
+			vhostblk_vq_err(blk, vq, "Failed to write status");
 
 		vhost_add_used(vq, req->head, req->len);
 		added = true;
-- 
2.43.5



More information about the Devel mailing list