From: "Michael S. Tsirkin" <mst@redhat.com>
To: Jia Jia <physicalmtea@gmail.com>
Cc: "Jason Wang" <jasowangio@gmail.com>,
"Eugenio Pérez" <eperezma@redhat.com>,
"Nicholas Bellinger" <nab@linux-iscsi.org>,
kvm@vger.kernel.org, virtualization@lists.linux.dev,
netdev@vger.kernel.org, linux-kernel@vger.kernel.org
Subject: Re: [PATCH] vhost: keep vring addresses stable while the backend is attached
Date: Sat, 19 Sep 2026 15:24:35 -0400 [thread overview]
Message-ID: <20260919152336-mutt-send-email-mst@kernel.org> (raw)
In-Reply-To: <20260919131744.131030-1-physicalmtea@gmail.com>
On Sat, Sep 19, 2026 at 09:17:44PM +0800, Jia Jia wrote:
> vhost-scsi keeps the response and bounce-buffer iovecs until the backend
> completes the command. If userspace changes the vring addresses while the
> command is in flight, the completion data is copied through the old iovecs
> while vhost_add_used() updates the new used ring. The guest then no longer
> sees the completion.
I do not get what all this is trying to say. if you break it you get to
keep both pieces. when is this a real problem?
>
> Reject changes to the vring addresses while a backend is attached to the
> queue. Keep accepting the current addresses so userspace can update
> VHOST_VRING_F_LOG or log_guest_addr without stopping the backend. Queues
> that have not been attached retain the existing setup behavior; userspace
> must detach the backend before changing their addresses.
>
> Fixes: 057cbf49a1f0 ("tcm_vhost: Initial merge for vhost level target fabric driver")
> Signed-off-by: Jia Jia <physicalmtea@gmail.com>
> ---
> drivers/vhost/vhost.c | 11 +++++++++++
> 1 file changed, 11 insertions(+)
>
> diff --git a/drivers/vhost/vhost.c b/drivers/vhost/vhost.c
> index 44cac11b68d2..074590838de5 100644
> --- a/drivers/vhost/vhost.c
> +++ b/drivers/vhost/vhost.c
> @@ -2150,6 +2150,17 @@ static long vhost_vring_set_addr(struct vhost_dev *d,
> a.flags & (0x1 << VHOST_VRING_F_LOG),
> a.log_guest_addr))
> return -EINVAL;
> +
> + /*
> + * Commands may retain iovecs derived from the current ring
> + * addresses. Keep the addresses unchanged while the backend
> + * is attached.
> + */
> + if ((vq->desc || vq->avail || vq->used) &&
> + (vq->desc != (void __user *)(unsigned long)a.desc_user_addr ||
> + vq->avail != (void __user *)(unsigned long)a.avail_user_addr ||
> + vq->used != (void __user *)(unsigned long)a.used_user_addr))
> + return -EBUSY;
> }
>
> vq->log_used = !!(a.flags & (0x1 << VHOST_VRING_F_LOG));
next prev parent reply other threads:[~2026-09-19 19:24 UTC|newest]
Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-09-19 13:17 [PATCH] vhost: keep vring addresses stable while the backend is attached Jia Jia
2026-09-19 13:29 ` sashiko-bot
2026-09-19 19:24 ` Michael S. Tsirkin [this message]
2026-09-20 2:18 ` Jia Jia
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=20260919152336-mutt-send-email-mst@kernel.org \
--to=mst@redhat.com \
--cc=eperezma@redhat.com \
--cc=jasowangio@gmail.com \
--cc=kvm@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=nab@linux-iscsi.org \
--cc=netdev@vger.kernel.org \
--cc=physicalmtea@gmail.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.