2019-09-05 23:04:26

by Vivek Goyal

[permalink] [raw]
Subject: [PATCH 07/18] virtiofs: Stop virtiofs queues when device is being removed

Stop all the virt queues when device is going away. This will ensure that
no new requests are submitted to virtqueue and and request will end with
error -ENOTCONN.

Signed-off-by: Vivek Goyal <[email protected]>
---
fs/fuse/virtio_fs.c | 14 ++++++++++++++
1 file changed, 14 insertions(+)

diff --git a/fs/fuse/virtio_fs.c b/fs/fuse/virtio_fs.c
index f68a25ca9e9d..90e7b2f345e5 100644
--- a/fs/fuse/virtio_fs.c
+++ b/fs/fuse/virtio_fs.c
@@ -493,10 +493,24 @@ static int virtio_fs_probe(struct virtio_device *vdev)
return ret;
}

+static void virtio_fs_stop_all_queues(struct virtio_fs *fs)
+{
+ struct virtio_fs_vq *fsvq;
+ int i;
+
+ for (i = 0; i < fs->nvqs; i++) {
+ fsvq = &fs->vqs[i];
+ spin_lock(&fsvq->lock);
+ fsvq->connected = false;
+ spin_unlock(&fsvq->lock);
+ }
+}
+
static void virtio_fs_remove(struct virtio_device *vdev)
{
struct virtio_fs *fs = vdev->priv;

+ virtio_fs_stop_all_queues(fs);
vdev->config->reset(vdev);
virtio_fs_cleanup_vqs(vdev, fs);

--
2.20.1


2019-09-06 16:12:43

by Stefan Hajnoczi

[permalink] [raw]
Subject: Re: [PATCH 07/18] virtiofs: Stop virtiofs queues when device is being removed

On Thu, Sep 05, 2019 at 03:48:48PM -0400, Vivek Goyal wrote:
> Stop all the virt queues when device is going away. This will ensure that
> no new requests are submitted to virtqueue and and request will end with
> error -ENOTCONN.
>
> Signed-off-by: Vivek Goyal <[email protected]>
> ---
> fs/fuse/virtio_fs.c | 14 ++++++++++++++
> 1 file changed, 14 insertions(+)

Reviewed-by: Stefan Hajnoczi <[email protected]>


Attachments:
(No filename) (431.00 B)
signature.asc (499.00 B)
Download all attachments