On Wed, Sep 04, 2019 at 07:16:30PM +0100, Stefan Hajnoczi wrote: > On Tue, Sep 03, 2019 at 09:55:49AM -0400, Michael S. Tsirkin wrote: > > On Tue, Sep 03, 2019 at 01:42:02PM +0200, Miklos Szeredi wrote: > > Endian-ness for fuse header also looks wrong. > [...] > > > +struct virtio_fs_forget { > > > + struct fuse_in_header ih; > > > + struct fuse_forget_in arg; > > > > These structures are all native endian. > > > > Passing them to host will make cross-endian setups painful to support, > > and hardware implementations impossible. > > > > How about converting everything to LE? > > The driver dictates the endianness of the FUSE protocol session. The > virtio-fs device specification states that the device looks at the first > request's fuse_in_header::opcode field to detect the guest endianness. > > If it sees FUSE_INIT in its native endianness then no byte-swapping is > necessary. If it sees FUSE_INIT in the opposite endianness then > byte-swapping is necessary on the device side. You are right. Pls ignore the comment. We need to reserve the byte-swapped FUSE_INIT to make sure future versions of fuse don't try to send that though. I sent a patch to that effect, let's see whether it gets accepted. -- MST