On Wed, Nov 13, 2019 at 06:40:54AM +0000, Boeuf, Sebastien wrote: > On Tue, 2019-11-12 at 09:45 +0000, Stefan Hajnoczi wrote: > > On Fri, Nov 01, 2019 at 10:26:54PM +0000, Boeuf, Sebastien wrote: > > > +Samuel > > > +Rob > > > > > > Hi Stefan, Dave, > > > > > > I had some time to get started on the virtiofsd in Rust, based on > > > the > > > code from Chirantan. So basically I relied on the following Crosvm > > > branch (code not merged yet): > > > https://chromium-review.googlesource.com/c/chromiumos/platform/crosvm/+/1705654 > > > > > > From there I have ported the code that was needed to rely on the > > > nice > > > implementation from Chirantan. I had to make it fit the vm-virtio > > > crate > > > from Cloud-Hypervisor (since it's not yet complete on rust-vmm), > > > and > > > also the vm-memory crate from rust-vmm. > > > > > > Once the porting done, I created a dedicated vhost-user-fs daemon > > > binary relying on the vhost_user_backend crate. I connected all the > > > dots together and the result is here: > > > https://github.com/intel/cloud-hypervisor/pull/404 > > > > > > I have listed the remaining tasks here: > > > https://github.com/intel/cloud-hypervisor/pull/404#issue-335636924 > > > (some can be quite big and should come as a follow up PR IMO). > > > > > > I'll be in vacation next week, but if you have some time, it'd be > > > very > > > nice to get everybody's feedback on this. > > > > > > And of course, if you have more time to continue working on this, > > > feel > > > free to reuse my branch 'vhost_user_fs_daemon' from my forked repo > > > https://github.com/sboeuf/cloud-hypervisor-1.git > > > > Awesome, thanks! > > I've been trying to make this work today, unfortunately I'm running > into some issues. Basically what happens is that I don't get a writable > descriptor, which means the reply to the FUSE init() cannot be sent. > > Chirantan, I was wondering if your code in Crosvm is working properly > with virtio-fs? And if that's the case, have you ever get the problem > I'm describing where the virtio descriptor does not have the write only > flag, which prevents the Writer from being provisioned with buffers. > > Stefan, do you know if the virtio-fs driver actually tags some > descriptor as write_only? I'm trying to understand what is missing > here.
A vring descriptor is either driver->device ("out") or device->driver ("in"). A virtio-fs request typically contains both descriptor types because it consists of a request (e.g. struct fuse_in_header + struct fuse_init_in) and a response (e.g. struct fuse_out_header + struct fuse_init_out). By the way, VIRTIO and FUSE use the terms "in"/"out" in the opposite sense. VIRTIO "out" is driver->device and "in" is device->driver. FUSE "out" is device->driver and "in" is driver->device. Just wanted to point that out to prevent confusion :-). If you are only seeing a driver->device descriptor but not the device->driver descriptor, then something is wrong with the vring processing code in the device. The guest driver places requests into the virtqueue in fs/fuse/virtio_fs.c:virtio_fs_enqueue_req(). Stefan
signature.asc
Description: PGP signature
_______________________________________________ Virtio-fs mailing list Virtio-fs@redhat.com https://www.redhat.com/mailman/listinfo/virtio-fs