Displaying 12 results from an estimated 12 matches for "virtio_fs_probe".
2019 Sep 05
0
[PATCH 10/18] virtiofs: Do not use device managed mem for virtio_fs and virtio_fs_vq
...qs, sizeof(fs->vqs[VQ_HIPRIO]), GFP_KERNEL);
if (!fs->vqs)
return -ENOMEM;
@@ -504,6 +502,8 @@ static int virtio_fs_setup_vqs(struct virtio_device *vdev,
kfree(names);
kfree(callbacks);
kfree(vqs);
+ if (ret)
+ kfree(fs->vqs);
return ret;
}
@@ -519,7 +519,7 @@ static int virtio_fs_probe(struct virtio_device *vdev)
struct virtio_fs *fs;
int ret;
- fs = devm_kzalloc(&vdev->dev, sizeof(*fs), GFP_KERNEL);
+ fs = kzalloc(sizeof(*fs), GFP_KERNEL);
if (!fs)
return -ENOMEM;
vdev->priv = fs;
@@ -552,6 +552,7 @@ static int virtio_fs_probe(struct virtio_device *vdev)...
2019 Sep 05
0
[PATCH 07/18] virtiofs: Stop virtiofs queues when device is being removed
...ivek Goyal <vgoyal at redhat.com>
---
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_unlo...
2019 Sep 05
0
[PATCH v4 15/16] virtio-fs: add virtiofs filesystem
...ued_reqs);
> > + schedule_delayed_work(&fsvq->dispatch_work,
> > + msecs_to_jiffies(1));
>
> Can't we we requeue after some buffers get consumed?
That's what dispatch work is doing. It tries to requeue the request after
a while.
[..]
> > +static int virtio_fs_probe(struct virtio_device *vdev)
> > +{
> > + struct virtio_fs *fs;
> > + int ret;
> > +
> > + fs = devm_kzalloc(&vdev->dev, sizeof(*fs), GFP_KERNEL);
> > + if (!fs)
> > + return -ENOMEM;
> > + vdev->priv = fs;
> > +
> > + ret = virt...
2019 Sep 05
0
[PATCH 15/18] virtiofs: Make virtio_fs object refcounted
...g)
mutex_lock(&virtio_fs_mutex);
list_for_each_entry(fs, &virtio_fs_instances, list) {
- if (strcmp(fs->tag, tag) == 0)
+ if (strcmp(fs->tag, tag) == 0) {
+ kref_get(&fs->refcount);
goto found;
+ }
}
fs = NULL; /* not found */
@@ -519,6 +543,7 @@ static int virtio_fs_probe(struct virtio_device *vdev)
fs = kzalloc(sizeof(*fs), GFP_KERNEL);
if (!fs)
return -ENOMEM;
+ kref_init(&fs->refcount);
vdev->priv = fs;
ret = virtio_fs_read_tag(vdev, fs);
@@ -570,18 +595,18 @@ static void virtio_fs_remove(struct virtio_device *vdev)
{
struct virtio_fs *f...
2019 Sep 06
2
[PATCH 15/18] virtiofs: Make virtio_fs object refcounted
On Thu, Sep 05, 2019 at 03:48:56PM -0400, Vivek Goyal wrote:
> This object is used both by fuse_connection as well virt device. So make
> this object reference counted and that makes it easy to define life cycle
> of the object.
>
> Now deivce can be removed while filesystem is still mounted. This will
> cleanup all the virtqueues but virtio_fs object will still be around and
2019 Sep 06
2
[PATCH 15/18] virtiofs: Make virtio_fs object refcounted
On Thu, Sep 05, 2019 at 03:48:56PM -0400, Vivek Goyal wrote:
> This object is used both by fuse_connection as well virt device. So make
> this object reference counted and that makes it easy to define life cycle
> of the object.
>
> Now deivce can be removed while filesystem is still mounted. This will
> cleanup all the virtqueues but virtio_fs object will still be around and
2019 Sep 06
1
[PATCH v4 15/16] virtio-fs: add virtiofs filesystem
...rk(&fsvq->dispatch_work,
> > > + msecs_to_jiffies(1));
> >
> > Can't we we requeue after some buffers get consumed?
>
> That's what dispatch work is doing. It tries to requeue the request after
> a while.
>
> [..]
> > > +static int virtio_fs_probe(struct virtio_device *vdev)
> > > +{
> > > + struct virtio_fs *fs;
> > > + int ret;
> > > +
> > > + fs = devm_kzalloc(&vdev->dev, sizeof(*fs), GFP_KERNEL);
> > > + if (!fs)
> > > + return -ENOMEM;
> > > + vdev->priv...
2019 Sep 03
4
[PATCH v4 15/16] virtio-fs: add virtiofs filesystem
...s);
> + kfree(vqs);
> + return ret;
> +}
> +
> +/* Free virtqueues (device must already be reset) */
> +static void virtio_fs_cleanup_vqs(struct virtio_device *vdev,
> + struct virtio_fs *fs)
> +{
> + vdev->config->del_vqs(vdev);
> +}
> +
> +static int virtio_fs_probe(struct virtio_device *vdev)
> +{
> + struct virtio_fs *fs;
> + int ret;
> +
> + fs = devm_kzalloc(&vdev->dev, sizeof(*fs), GFP_KERNEL);
> + if (!fs)
> + return -ENOMEM;
> + vdev->priv = fs;
> +
> + ret = virtio_fs_read_tag(vdev, fs);
> + if (ret < 0)
&...
2019 Sep 03
4
[PATCH v4 15/16] virtio-fs: add virtiofs filesystem
...s);
> + kfree(vqs);
> + return ret;
> +}
> +
> +/* Free virtqueues (device must already be reset) */
> +static void virtio_fs_cleanup_vqs(struct virtio_device *vdev,
> + struct virtio_fs *fs)
> +{
> + vdev->config->del_vqs(vdev);
> +}
> +
> +static int virtio_fs_probe(struct virtio_device *vdev)
> +{
> + struct virtio_fs *fs;
> + int ret;
> +
> + fs = devm_kzalloc(&vdev->dev, sizeof(*fs), GFP_KERNEL);
> + if (!fs)
> + return -ENOMEM;
> + vdev->priv = fs;
> +
> + ret = virtio_fs_read_tag(vdev, fs);
> + if (ret < 0)
&...
2019 Sep 06
0
[PATCH 15/18] virtiofs: Make virtio_fs object refcounted
...d_
mutex_lock(&virtio_fs_mutex);
list_for_each_entry(fs, &virtio_fs_instances, list) {
- if (strcmp(fs->tag, tag) == 0)
+ if (strcmp(fs->tag, tag) == 0) {
+ kref_get(&fs->refcount);
goto found;
+ }
}
fs = NULL; /* not found */
@@ -519,6 +543,7 @@ static int virtio_fs_probe(struct virtio
fs = kzalloc(sizeof(*fs), GFP_KERNEL);
if (!fs)
return -ENOMEM;
+ kref_init(&fs->refcount);
vdev->priv = fs;
ret = virtio_fs_read_tag(vdev, fs);
@@ -570,18 +595,18 @@ static void virtio_fs_remove(struct virt
{
struct virtio_fs *fs = vdev->priv;
+ mutex_l...
2019 Sep 05
38
[PATCH 00/18] virtiofs: Fix various races and cleanups round 1
Hi,
Michael Tsirkin pointed out issues w.r.t various locking related TODO
items and races w.r.t device removal.
In this first round of cleanups, I have taken care of most pressing
issues.
These patches apply on top of following.
git://git.kernel.org/pub/scm/linux/kernel/git/mszeredi/fuse.git#virtiofs-v4
I have tested these patches with mount/umount and device removal using
qemu monitor. For
2019 Sep 18
0
[PATCH v6] virtio-fs: add virtiofs filesystem
...+ kfree(fs->vqs);
> + return ret;
> +}
> +
> +/* Free virtqueues (device must already be reset) */
> +static void virtio_fs_cleanup_vqs(struct virtio_device *vdev,
> + struct virtio_fs *fs)
> +{
> + vdev->config->del_vqs(vdev);
> +}
> +
> +static int virtio_fs_probe(struct virtio_device *vdev)
> +{
> + struct virtio_fs *fs;
> + int ret;
> +
> + fs = kzalloc(sizeof(*fs), GFP_KERNEL);
> + if (!fs)
> + return -ENOMEM;
> + kref_init(&fs->refcount);
> + vdev->priv = fs;
> +
> + ret = virtio_fs_read_tag(vdev, fs);
> + i...