aboutsummaryrefslogtreecommitdiff
path: root/hw/virtio/vhost-user-fs.c
diff options
context:
space:
mode:
authorAnton Kuchin <antonkuchin@yandex-team.ru>2021-04-08 22:55:34 +0300
committerDr. David Alan Gilbert <dgilbert@redhat.com>2021-04-13 16:13:41 +0100
commitace66791cd15657320b11b1a421afc055f28efca (patch)
tree687e3674c29494bf812fc534b928e206498fb046 /hw/virtio/vhost-user-fs.c
parentdce628a97fde2594f99d738883a157f05aa0a14f (diff)
downloadqemu-ace66791cd15657320b11b1a421afc055f28efca.zip
qemu-ace66791cd15657320b11b1a421afc055f28efca.tar.gz
qemu-ace66791cd15657320b11b1a421afc055f28efca.tar.bz2
vhost-user-fs: fix features handling
Make virtio-fs take into account server capabilities. Just returning requested features assumes they all of then are implemented by server and results in setting unsupported configuration if some of them are absent. Signed-off-by: Anton Kuchin <antonkuchin@yandex-team.ru> Reviewed-by: Dr. David Alan Gilbert <dgilbert@redhat.com> With changes suggested by Stefan Signed-off-by: Dr. David Alan Gilbert <dgilbert@redhat.com>
Diffstat (limited to 'hw/virtio/vhost-user-fs.c')
-rw-r--r--hw/virtio/vhost-user-fs.c20
1 files changed, 16 insertions, 4 deletions
diff --git a/hw/virtio/vhost-user-fs.c b/hw/virtio/vhost-user-fs.c
index ac4fc34..6f7f915 100644
--- a/hw/virtio/vhost-user-fs.c
+++ b/hw/virtio/vhost-user-fs.c
@@ -24,6 +24,17 @@
#include "monitor/monitor.h"
#include "sysemu/sysemu.h"
+static const int user_feature_bits[] = {
+ VIRTIO_F_VERSION_1,
+ VIRTIO_RING_F_INDIRECT_DESC,
+ VIRTIO_RING_F_EVENT_IDX,
+ VIRTIO_F_NOTIFY_ON_EMPTY,
+ VIRTIO_F_RING_PACKED,
+ VIRTIO_F_IOMMU_PLATFORM,
+
+ VHOST_INVALID_FEATURE_BIT
+};
+
static void vuf_get_config(VirtIODevice *vdev, uint8_t *config)
{
VHostUserFS *fs = VHOST_USER_FS(vdev);
@@ -129,11 +140,12 @@ static void vuf_set_status(VirtIODevice *vdev, uint8_t status)
}
static uint64_t vuf_get_features(VirtIODevice *vdev,
- uint64_t requested_features,
- Error **errp)
+ uint64_t features,
+ Error **errp)
{
- /* No feature bits used yet */
- return requested_features;
+ VHostUserFS *fs = VHOST_USER_FS(vdev);
+
+ return vhost_get_features(&fs->vhost_dev, user_feature_bits, features);
}
static void vuf_handle_output(VirtIODevice *vdev, VirtQueue *vq)